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:
In the sample questions for last year's final, we would not
ask, and you can ignore, questions 7, 10, and 13.