CS 421: Programming Languages and Compilers
Lecture Schedule for Spring 2010
(Previous semesters' lectures at bottom of page.)
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) Hwk due
1 1-19 Introduction to course lecture1-2up (annotated)
2 1-21 Ocaml - tuples and lists lecture2-2up (annotated) (supplementary notes)
3 1-26 OCaml - type definitions, abstract syntax lecture3-2up
4 1-28 Language impementation overview lecture4 (annotated) (supplementary notes)
5 2-2 Lexical analysis lecture5 (annotated)
6 2-4 Regular expressions, Ocamllex lecture6-2up (annotated)
7 2-9 Parsing - context-free grammars, recursive descent parsing lecture7
8 2-11 Top-down parsing; expression grammars lecture8 (annotated) (supplementary notes)
9 2-16 Bottom-up (shift/reduce) parsing lecture9 (annotated)
10 2-18 LR parsing - conflict resolution lecture10 (annotated) (supplementary notes) (optional supplementary notes)
2-23 Review for midterm 1 (optional)
2-24 Midterm 1 - 100 MSEB (7:30 - 8:45pm)
11 2-25 Code generation lecture11 (annotated)
12 3-2 Code generation (cont.) lecture12 (annotated)
13 3-4 Garbage collection; run-time systems for dynamic languages lecture13
14 3-9 History of programming languages lecture14
15 3-11 APL lecture15 (annotated)
16 3-16 Functional programming: higher-order functions lecture16 (annotated)
17 3-18 More higher-order functions lecture17 (annotated)
3-23,
3-25
Spring break
18 3-30 Even more higher-order functions lecture18 (annotated)
19 4-1 Functional programming in o-o languages lecture19 (annotated)
4-6 Review for midterm 2 (optional) review
4-7 Midterm 2 - 1404 Siebel (7:30 - 8:45pm)
20 4-8 Dynamically-typed languages lecture20
21 4-13 Inference systems; formalizing operational semantics lecture21 (annotated)
22 4-15 The OCaml type system lecture22 (annotated) (proofs) (erroneous proof from slide 13)
23 4-20 Operational semantics of OCaml lecture23 (annotated) (proof trees from lecture 23) (a note on dynamic scope) ( video problem-solving session*)
24 4-22 Hoare logic for imperative languages lecture24-25 (annotated)
25 4-27 cont.
26 4-29 Termination proofs; implementation of functions lecture26 (annotated)
27 5-4 Lazy evaluation; lambda-calculus lecture27 (annotated)
5-10 Final exam, 1:30-4:30PM, 1404 SC

*About the video: (1) This video shows me constructing two complete proof trees, one for type and one for operational semantics. (2) The second one uses recursive definitions, using the idea from the notes of having an expression of the form "rec f e". However, when I made this video, I used notation "rec f = e" (with an extra equal sign). This is just the same as "rec f e"; I just decided that the extra equal sign was syntactically confusing. Just ignore it.

Lectures from Spring 2008
Lectures from Summer 2008
Lectures from Fall 2008
Lectures from Spring 2009
Lectures from Summer 2009
Lectures from Fall 2009