Prerequisite: COSC 310
A comparative survey of programming language paradigms. Includes an examination of the properties, applications, syntax, and semantics of selected object-oriented, functional, and declarative programming languages.
Course Outcomes
Upon successful completion of this course, the students will be able to:
- analyze the syntax, semantics, type handling, coercion rules, scoping rules, naming rules, and exception handing of several programming languages
- interpret BNF, syntax diagrams, parse trees, context-free grammars and other forms to syntax and semantics of a programming language
- distinguish the lexical and syntax analysis of a language
- perceive the differences between imperative, object-oriented, functional, aspect-oriented, and declarative languages
- recognize the types of applications where imperative, object-oriented, functional, aspect-oriented, and declarative languages will be best suited
- demonstrate the strengths and weaknesses of different programming languages
Detailed Course Outline
1. Programming Languages – preliminaries, history, and evolution — 0.5 week
2. Describing Syntax and Semantics — 1.5 weeks
- Lexemes, tokens
- Language recognizers
- Language generators
- Context-free grammars
- Backus-Naur Form (BNF)
- Extended BNF
- Syntax diagrams
- Parse trees
- Ambiguity
- Unambiguous grammar
- Attribute grammar
3. Lexical and Syntax Analysis — 1.0 week
- Lexical analysis
- Parsing problem
- Top-down parsing
- Bottom-up parsing
- Recursive-descent parsing
- LL and LR parsers
4. Names, Bindings, Type Checking, and Scopes — 1.0 weeks
5. Data Types — 1.0 week
TEST-I — one class period
6. Functional Languages, such as ML and Lisp — 3.0 weeks
7. Object-Oriented (OO) Language, such as SmallTalk with comparison to other OO-languages — 2.0 weeks
8. Annotation and Aspect-oriented programming — 1.0 week
TEST-II — one class period
9. Declarative Language, such as Prolog — 2.0 weeks
10. Exception Handling — 1.0 week
Total = 14 weeks
Final Exam: During Final Exam week
Evaluation Methods:
The final grade of the course will be determined as follows:
Two Class Tests 30%
Comprehensive Final Exam 25%
Language Projects 25%
Assignments 20%
Sample written projects related to languages that students must do in this course:
- SmallTalk and its difference from other OOP Languages, such as JAVA and Visual Basic
- Ada 95- Object-Oriented Programming Language
- Fortran 90 and 95 and their differences
- Differences between functional languages ML, Miranda, and Haskell
- Perl – Programming Language
- Eiffel – Programming Language
- Differences between scripting languages, such as Java Script, PHP, and Python
- Or any other interesting programming languages (upon instructor’s approval)
Example Grading Scale:
The grading scale will be:
90-100% = A, 80-89% = B, 70-79% = C, 60-69% = D, and < 60% = F.
Undergraduate Course Attendance policy:
The attendance policy will conform to the universitywide attendance criteria.
Required Textbook, Supplemental Books, and Readings:
Sebasta, Robert W. Concepts of Programming Languages (7/e), Addison Wesley, 2006, ISBN #0-321-33025-0
Webber, Adam B. Modern Programming Languages: A Practical Introduction, Franklin, Beedle & Associates, 2003, ISBN #1-887902-76-7