The lecture notes complement, but do not replace the lectures. The schedule below is subject to change throughout the semester.
Section numbers in [brackets] (e.g. [7.1] in Jan. 6's lecture) indicate that some material relevant to the lecture is in that section of Harper's book, but the section is drastically more detailed and may cover subtopics completely omitted in lecture. You are welcome to read it, but should not feel that it is part of that lecture. (Material skipped in this way could, of course, be covered in a later lecture.)
Schedule
Date |
Lecture |
Notes |
Code |
Assignments |
Mon., Jan. 4 |
Basic SML |
|||
Wed., Jan. 6 |
Illustrating functions and recursion |
Harper chapters 2; 3.1, 3.2.2, 3.3, 3.4; 4.1, 4.2, 4.3; [7.1] |
||
Fri., Jan. 8 |
Datatypes |
HW 1 out |
||
Mon., Jan. 11 |
Datatypes, lists |
Harper 9 |
||
Wed., Jan. 13 |
Datatypes |
|||
Fri., Jan. 15 |
Induction/Reasoning about programs |
|
||
Mon., Jan. 18 |
Higher-order functions |
|
|
|
Wed., Jan. 20 |
Higher-order functions |
|
|
HW 1 due / |
Fri., Jan. 22 |
Continuations |
|||
Mon., Jan. 25 |
Continuations |
|
||
Wed., Jan. 27 |
Exceptions |
|
|
|
Fri., Jan. 29 |
References |
|
| |
Mon., Feb. 1 |
Environment model |
| ||
Wed., Feb. 3 |
Closures and objects |
HW 2 due / |
||
Fri., Feb. 5 |
Streams |
|
|
|
Mon., Feb. 8 |
Streams |
|
| |
Wed., Feb. 10 |
Excursion: λ-calculus |
| ||
Fri., Feb. 12 |
TBA |
|||
Mon., Feb. 15 |
Modules |
|
|
|
Wed., Feb. 17 |
Modules |
HW 3 due |
||
Fri., Feb. 19 |
Review |
|||
Feb. 22-26 |
Break |
|||
Mon., March 1 |
Midterm |
|||
Wed., March 3 |
Formal syntax |
|
||
Fri., March 5 |
Operational semantics |
|
||
Mon., March 8 |
Binding and substitution |
|
|
|
Wed., March 10 |
Implementing an interpreter |
HW 4 out |
||
Fri., March 12 |
Typing for Mini-ML |
|
||
Mon., March 15 |
Typing for references |
|||
Wed., March 17 |
Type inference |
|||
Fri., March 19 |
Polymorphism |
|
||
Mon., March 22 |
Bidirectional typechecking |
|||
Wed., March 24 |
Bidirectional typechecking |
HW 4 due / |
||
Fri., March 26 |
Subtyping |
|
||
Mon., March 29 |
Subtyping |
|||
Wed., March 31 |
Java and overview |
|
||
April 2-5 |
Break |
|||
Wed., April 7 |
Subtyping in Java |
|
||
Fri., April 9 |
Advanced type systems |
|||
Mon., April 12 |
TBA |
HW 5 due |
||
Wed., April 14 |
Review |