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

slides

basicSML.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]

functions.sml

Fri., Jan. 8

Datatypes

Harper 10.1, 10.2, 10.3

datatypes-1.sml

HW 1 out

Mon., Jan. 11

Datatypes, lists

Harper 9

datatypes-2.sml

Wed., Jan. 13

Datatypes

trees.sml

Fri., Jan. 15

Induction/Reasoning about programs

Mon., Jan. 18

Higher-order functions

Wed., Jan. 20

Higher-order functions

HW 1 due /
HW 2 out

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 /
HW 3 out

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 /
HW 5 out

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