CS 421: Programming Languages and Compilers
Lectures from Fall 2008
Lectures from Summer 2008
Lectures from Spring 2008

Lecture Schedule for Spring 2009
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-21 Introduction to course; intro to OCaml lecture 1 (ann) , lecture1.ml
2 1-23 Ocaml - tuples and lists lecture 2 (lecture 2 (ann)) (Supplementary notes for lecture 2) MP 1
3 1-28 OCaml - type definitions, abstract syntax lecture 3 (lecture 3 (ann))
4 1-30 Language implementation overview lecture 4 (v. 2) (supplementary notes)
5 2-4 Lexical analysis lecture 5 (lecture 5 with annotations from today and 2/6)
6 2-6 Regular expressions, Ocamllex lecture 6 (lecture 6 annotated)
7 2-11 Parsing - context-free grammars, recursive descent parsing lecture 7 (lecture 7 ann) (Code from lecture: 1, 2, 3, 1b, 2b, 3b, 3c)
8 2-13 Top-down parsing lecture 8 (ann) (lecture 8 addendum)
9 2-18 Bottom-up (shift/reduce) parsing lecture 9 (lecture 9 ann)
10 2-20 LR parsing - conflict resolution lecture 10 (lecture 10 ann) (supplement to lecture 10) (The LR theorem)
2-25 Review for midterm 1 (optional) Review questions (solutions) MP6 (Tuesday)
2-26 Midterm 1 - 180 Bevier Hall, 7-8:30PM exam solution
11 2-27 Code generation lecture 11
12 3-4 Code generation (cont.) lecture 12 (lecture 12 ann)
13 3-6 Garbage collection; run-time systems for dynamic languages lecture 13 (6up)
14 3-11 History of programming languages lecture 14 (lecture 14 ann)
15 3-13 APL lecture 15 (lecture 15 ann)
16 3-18 Functional programming: higher-order functions lecture 16 (ann)
17 3-20 More higher-order functions lecture 17 (lecture 17 ann) (supp. notes on dynamic scope)
3-25,
3-27
Spring break
18 4-1 Even more higher-order functions lecture 18 (lecture 18 ann)
19 4-3 Functional programming in o-o languages lecture 19
20 4-8 Review for midterm 2 (optional) sample questions (solutions) (12:30 review notes) (2:00 review notes)
4-9 Midterm 2 - 151 Everitt Lab, 7-8:30PM Midterm solutions
21 4-10 Inference systems; formalizing operational semantics lecture 21 (lecture 21 ann)
22 4-15 Type systems lecture 22 (ignore pages 18-22) (proof trees for examples)
23 4-17 Operational semantics lecture 23 (2-up) (6-up) (Two examples) (handout) (yet another example)
24 4-22 Hoare logic for imperative languages lecture 24 (lecture 24 ann)
25 4-24 Hoare logic for imperative languages lecture 25 (ann), fibonacci number example
26 4-29 Advanced topics: Lazy evaluation; lambda-calculus lecture 26 (lecture 26 ann)
27 5-1 Advanced topics: functional programming for parallelism lecture 27
28 5-6 Wrap-up; review for final; preview of follow-up courses For review: sp08-final.pdf (solution) - see below.
And Spring 08 sample questions (solutions) - see below.
And slides from videotaped problem session .
5-11 Final exam - 1404 Siebel, 7-10PM

The Spring '08 final is provided as a sample exam (we will provide more sample questions throughout the week). Not all questions on that final are relevant (although we did cover, at least a little bit, everything on that exam except problem 15). Specifically:

  • 6b: We will not ask you to create a stratified grammar.
  • 10: We would not ask this question because it is not something we discussed formally; however, you should be able to answer it (so you can use it for practice).
  • 11 and 12: The rules we are using are given at the end of the exam. Here we used the term "dynamic semantics;" this is the same as the term "operational semantics."
  • 13: We wouldn't ask this question because we did not spend much time discussing reference values in OCaml. (But again, you can answer it, in principle, using OS_state, so it is still good for practice.)
  • 14: The type system is given at the end of the exam.
  • 15: We did not cover this topic this year.
  • 16b: We won't ask a question like this because we did not spend much time on termination proofs.

In the sample questions for last year's final, we would not ask, and you can ignore, questions 7, 10, and 13.