The final exam is now ready. Please come and pick it up whenever you want. The final is a 24-hour take home.
Solutions to all the homeworks can be found below.
| Date | Topic | Chapters | Lecture Notes | Homework |
|---|---|---|---|---|
| Oct 4 | Introduction, Syntax and Induction | Chapters 1, 2, 3 | syllabus lecture 1 | Homework 0 Solution 0 |
| Oct 5 | An overview of SML | SML overview | ||
| Oct 6 | Semantics | Chapter 3 | lecture 2 | |
| Oct 11 | Lambda Calculus: Syntax, Substitution, Beta Reduction | Chapter 5 | lecture 3 | Homework 1 Solution 1 |
| Oct 13 | Programming in the Lambda Calculus | Chapter 5 | no lecture notes | |
| Oct 18 | Evaluation Strategies, Recursion | Chapter 5 | lecture 5 | |
| Oct 20 | de Bruijn Indices | Chapter 6 | lecture 6 | Homework 2 Solution 2 |
| Oct 25 | Type Safety | Chapter 8 | no lecture notes | Homework 3 Solution 3 |
| Nov 1 | Simply Typed Lambda Calculus | Chapter 9 | no lecture notes | |
| Nov 3 | Type Safety of Simply Typed Lambda Calculus | Chapter 9 | no lecture notes | Homework 4 Solution 4 |
| Nov 4 | Midterm Review | no lecture notes | ||
| Nov 8 | Midterm Exam | |||
| Nov 10 | Unit, let, products, and records | Chapter 11 | no lecture notes | |
| Nov 15 | Sums, recursion, references | Chapter 11,12 | no lecture notes | Homework 5 Solution 5 |
| Nov 17 | References | Chapter 12 | no lecture notes | |
| Nov 22 | Type Safety for References | Chapter 12 | no lecture notes | Homework 6 Solution 6 |
| Nov 24 | No Class (Thanksgiving) | |||
| Nov 29 | Final Review |
The course studies the theory and practice of programming languages. On the theory side, we will learn about what makes a programming language safe and sound by using mathematical models of execution and types. On the practical side, we will implement projects in the Standard ML language; these projects aim to put the theory to work.
You should consider taking this course if you are interested in (or want to learn about) programming languages, and/or high-level languages such as Standard ML.
The text book for the course is Benjamin Pierce's Types and Programming Languages (errata.)
For projects, we will use the Standard ML language and the SML/NJ implementation. For further information on SML, see Bob Harper's Programming in Standard ML book, and the documentation for the SML'97 Basis Library.
You should install SML/NJ on your computer. You can either have the system administrator install it for you, or install it yourself. For installation instructions see the SML/NJ website. Make sure that you install a relatively recent version (110.4x or later). Since the Compilation Manager (CM) underwent a recent redesign, you may experience incompatibilities with the earlier versions.