SCHEDULE MAY CHANGE AT ANY TIME DURING THE
SEMESTER!
|
Date |
Topic |
Reading |
Lectures |
Homework |
|
Friday Aug 29 |
Introduction |
Syllabus, Scott, Ch.1 |
|
|
|
Tuesday Sep 2 |
Programming language syntax. Formal languages: Regular expressions and Context-free grammars |
Scott, Ch.2.1-2.2 |
HW1 (50pts, PL Syntax) |
|
|
Tuesday |
Scanning, Parsing, Top-down parsing, Recursive-descent |
Scott, Ch.2.2 and Ch.2.3.1 |
|
|
|
Friday Sep 12 Drop deadline |
Top-down parsing: LL(1) grammars |
Scott, Ch.2.3.2-2.3.3 |
||
|
Tuesday |
Logic programming and Prolog. Horn clauses, Resolution principle; Prolog: Search trees, Unification, Backtracking, Backward chaining |
Scott, Ch.12.1 |
|
|
|
Friday Sep 19 |
Prolog: Lists, Programming with lists, Arithmetic, Imperative control flow |
Scott, Ch.12.2 |
HW1 due Thursday Sep 18, HW2 (50pts, Prolog) |
|
|
Tuesday Sep 23 |
Prolog: Negation by failure, Generate-and-test paradigm |
|||
|
Friday Sep 26 |
Binding and scoping. Binding time, Storage, Stack smashing, Static and dynamic scoping |
Scott, Ch.3.1, 3.2, 3.3.1, 3.3.2, and 3.3.6 |
|
|
|
Tuesday Sep 30 |
Programming language semantics. Semantic analysis, Attribute grammars, ASTs |
Scott, Ch.4.1-4.3 |
||
|
Friday Oct 3 |
Attribute grammars |
HW2 due Thursday Oct 2, Attribute grammars) |
||
|
Tuesday Oct 7 |
Catch-up and review |
|||
|
Friday Oct 10 |
Exam 1 |
|
||
|
Tuesday Oct 14 |
Functional programming. Reduction semantics, referential transparency, Scheme: S-expressions, Lists, Recursion |
Scott, Ch.11.1-11.3 |
||
|
Friday Oct 17 |
Scheme: Equality, Higher-order functions, Map and fold, Tail recursion |
Scott, Ch.11.5-11.6 |
HW3 due Thursday Oct 16, HW4 (50pts, Scheme 1) |
|
|
Tuesday |
Scheme: Let-bindings, Typing, Scoping, Closures |
Scott, Ch.3.6 (on closures) |
||
|
Friday |
Lambda
calculus: Syntax and semantics, Free and bound variables, Substitution |
Scott, Ch.11.7 (Companion Site) |
|
|
|
Tuesday |
Lambda
calculus: Reduction rules, Normal forms, Reduction strategies, Church-Rosser
theorem |
Scott, Ch.11.7 (Companion Site) |
HW4 due Monday Oct 27, HW5 (50pts, Scheme 2) |
|
|
Friday Oct 31 |
Lambda calculus: Applied lambda calculus and combinators |
|||
|
Tuesday Nov 4 |
Catch-up
and Review |
HW5 due Monday Nov 3 |
||
|
Friday W-drop deadline |
Exam 2 |
|
||
|
Tuesday Nov 11 |
Haskell: Getting started, Types and functions |
|||
|
Friday Nov 14 P/NC deadline |
Haskell: Interpreters, Algebraic data types, Pattern matching, Lazy evaluation, Types and type inference |
HW6 (50pts, Haskell) |
||
|
Tuesday Nov
18 |
Haskell,
conclusion: List comprehensions, ADTs and Maybe, Higher-Order Functions |
|
||
|
Friday Nov 21 |
Data
abstraction and types.
Type systems, Three views of types, Type equivalence, Types in C |
Scott,
Ch.7.1-7.2 |
||
|
Tuesday Dec 2 |
Data abstraction, conclusion: Types in C, Primitive and
Composite Types |
Scott, Ch 8 |
HW6 due Monday Dec 1, HW7 (50pts, Data & control abstraction) |
|
|
Friday Dec 5 |
Control abstraction and parameter passing mechanisms |
Scott, Ch.9.1-9.3, |
|
|
|
Tuesday Dec 9 |
Object-oriented
languages.
Encapsulation and inheritance, Initialization and finalization, Dynamic
dispatch, Polymorphism. |
Scott,
Ch.10.1-10.4 |
|
|
|
Friday Dec 12 |
Catch-up and Review |
HW7 due Thursday Dec 11 |
||
|
Dec
17 |
Final Exam |
|
A |