| Week | Class | Topic | Reading | Due | Where | 
|---|---|---|---|---|---|
| 1 | 08/27 08/29 | 1. Introduction | |||
| 1.1 Course outline | We're here. | ||||
| 1.2 Programming languages | |||||
| 1.3 Programming paradigms | |||||
| 2 | 09/03 09/05 | 2. Programming Language Syntax | |||
| 2.1 The Chomsky hierarchy | |||||
| 2.2 Context-free grammars | |||||
| 09/01 | Labor Day holiday — no classes | ||||
| 3 | 09/08 09/10 | 3. Programming Language Syntax (Cont.) | DPL | ||
| 3.1 BNFs | |||||
| 3.2 Ambiguity | |||||
| 09/12 | Presidential inauguration — no classes | ||||
| 09/09 | Last day to add a full-term course Last day to add audit or change to/from audit Drops after the last day to add will appear on a transcript. | ||||
| 4 | 09/15 09/17 09/19 | 4. Translational Semantics Using Attribute Grammars | Attribute Grammars | ||
| 4.1 Syntax-directed translation | Web | ||||
| 4.2 Syntax-directed definitions | |||||
| 4.3 Attribute grammars | |||||
| 5 | 09/22 09/24 09/26 | 5. Translational Semantics Using Attribute Grammars (Cont.) | |||
| 5.1 Dependency graphs | |||||
| 5.2 Synthesized attributes | |||||
| 5.3 Inherited attributes | |||||
| 6 | 09/29 10/01 10/03 | 6. Denotational Semantics | Denotational Semantics | ||
| 6.1 Introduction | |||||
| 6.2 Syntactic domains | |||||
| 6.3 Semantic domains | |||||
| 7 | 10/06 10/08 | 7. Denotational Semantics (Cont.) | |||
| 7.1 Semantic functions | |||||
| 7.2 Environments and assignments | |||||
| 10/10 | Exam I | ||||
| 8 | 10/13 10/15 10/17 | 8. Axiomatic Semantics | Axiomatic Semantics | ||
| 8.1 Introduction | |||||
| 8.2 Computer arithmetic | |||||
| 8.3 Program execution | |||||
| 9 | 10/20 10/22 10/24 | 9. Axiomatic Semantics (Cont.) | |||
| 9.1 General reservations | |||||
| 9.2 Proofs of program correctness | |||||
| 9.3 Formal language definition | |||||
| 10 | 10/27 10/29 10/31 | 10. Program Correctness and Termination | Correctness | ||
| 10.1 Introduction | |||||
| 10.2 Correctness of programs | |||||
| 10.3 Symbolic execution | |||||
| 11 | 11/03 11/05 11/07 | 11. Program Correctness and Termination (Cont.) | Termination | ||
| 11.1 Infinite symbolic execution trees | |||||
| 11.2 Multiset orderings | |||||
| 11.3 Termination of programs | |||||
| 11/07 | Last day to change to or from S/U grading Last day to change to or from audit grading Last day to drop a full-term course or withdraw from school | ||||
| 12 | 11/10 11/12 11/14 | 12. Logic Programming Paradigm | Logic | ||
| 12.1 Logic and logic programs | |||||
| 12.2 Horn clauses | |||||
| 12.3 Resolution and unification | |||||
| 13 | 11/17 11/19 | 13. Functional Programming Paradigm | |||
| 13.1 Lambda Calculus | |||||
| 13.2 Programs as functions | |||||
| 11/21 | Exam II | ||||
| 14 | 11/24 11/26 | 14. Object-oriented Programming Paradigm | ADT | ||
| 14.1 Abstract data types | |||||
| 14.2 Inheritance | |||||
| 11/28 | Thanksgiving recess — no classes | ||||
| 15 | 12/01 12/03 12/05 | 15. Concurrent Programming Paradigm | |||
| 15.1 Threads | |||||
| 15.2 Message passing | |||||
| 15.3 Deadlock | |||||
| 16 | 12/08 12/10 | 16. Imperative Programming Paradigm | |||
| 16.1 Values and types | |||||
| 16.2 Commands | |||||
| 17 | 12/17 | Final exam (05:30pm – 07:30pm, Wednesday) | |||
| 18 | 12/23 | Grades posted before noon, Tuesday |