Schedule subject to change as course progresses. |
Lecture topics (in italics) for not yet given lectures are preliminary, and may change. |
Class | Date
| Topic |
Lecture slides (pdf) |
Addition readings |
1 | 1/18 | Introduction to course | lecture1-2up (annotated) | |
2 | 1/20 | OCaml: Tuples and lists | lecture2-2up (annotated) (supplementary notes) | |
3 | 1/25 | OCaml: Datatypes and tree | lecture3-2up | |
4 | 1/27 | Language design and implementation overview | lecture4-2up (supplementary notes)(annotated) | |
5 | 2/1 | Compilers; lexical analysis | lecture5-2up (annotated) | wikipedia,something from Stanford |
6 | 2/3 | Lexical analysis; ocamllex | lecture6-2up (annotated) | ocammlex manual,tutorial |
7 | 2/8 | Context-free grammars; top-down parsing | lecture7-2up (annotated) | notes from Stanford |
8 | 2/10 | Top-down parsing | lecture8-2up (annotated) (supplementary notes) | |
9 | 2/15 | Bottom-up parsing; ocamlyacc | lecture9-2up (annotated) | |
10 | 2/17 | LR parsing conflicts | lecture10-2up (annotated) (supp notes + zip file) (optional supp notes) | |
11 | 2/22 | Compilation of static languages | lecture11-2up (annotated) | |
| 2/22 | Evening: review session in 1320 DCL | | |
| 2/24 | Midterm 1 | | |
12 | 3/1 | Compilation (cont.) | lecture12-2up | |
13 | 3/3 | Compilation (cont.) | lecture12-13ann | |
14 | 3/8 | History of programming languages | lecture14-2up (annotated) | |
15 | 3/10 | C | lecture15ann | |
16 | 3/15 | Dynamically-typed languages | lecture16-2up (annotated) | |
17 | 3/17 | Automatic memory management | lecture17-2up (annotated) | |
| 3/22 | Spring break | | |
| 3/24 | Spring break | | |
18 | 3/29 | Object-oriented languages; Java | lecture18-2up (annotated) | |
19 | 3/31 | Object-oriented languages; C++ | lecture19-2up (annotated) | |
20 | 4/5 | Functional programming; higher-order functions | lecture20-2up (part 1 annotated) | |
21 | 4/7 | (cont.) | part 2 annotated | |
22 | 4/12 | (cont.) | part 3 annotated | |
| 4/14 | Midterm exam 2 | | |
23 | 4/19 | Lambda calculus; Haskell | lecture23-2up (annotated) | |
24 | 4/21 | Lambda calculus (cont.); OCaml type-checking | lecture24-25-2up (annotated) (supplementary notes) | |
25 | 4/26 | (cont.) | part 2 annotated | |
26 | 4/28 | Hoare logic | lecture26-2up (annotated) | |
27 | 5/3 | Review for final | lecture27 annotated | |
| 5/6, 1:30-4:30pm | Final exam | | |