News
- The first lecture will be on Tuesday, January 10
Overview
Instructor | Iulian Neamtiu |
Lectures | TR 8:10 a.m. - 9:30 a.m., Materials Science and Engineering Building (MSE) room 113 |
Office hours | TR 9:45 a.m. - 10:45 a.m. Winston Chung Hall room 412 |
Grading | Project (45%) + Final exam (30%) + Assignments (20%) + Class participation (5%) |
Textbook | Types and Programming Languages by Benjamin C. Pierce. |
Final exam | March 22 (take home) |
Prerequisites | CS 152 (or equivalent) and CS 181 (or equivalent) |
iLearn page |
Catalog description: Introduces the techniques for analyzing program semantics and correctness. Covers simply-typed lambda calculus, as well as basic and advanced type systems. Presents axiomatic, operational, and denotational semantics. Explores programming-language constructs and tools for specifying, reasoning, and verifying correctness properties. Includes safe memory accesses and safe concurrent programming or security.
Schedule
Day | Date | Topic | Reading | Notes |
Tue | Jan 10 | Introduction |   | Assignment 1 out |
Thu | Jan 12 | OCaml | . |   |
Tue | Jan 17 | Untyped Arithmetic Expressions (I) | Chapters 2,3 |   |
Thu | Jan 19 | Untyped Arithmetic Expressions (II) | . | Assignment 1 due |
Tue | Jan 24 | Untyped Lambda Calculus (I) | Chapter 5 |   |
Thu | Jan 26 | Untyped Lambda Calculus (II) | . | Assignment 2 due |
Tue | Jan 31 | Typed Arithmetic Expressions | Chapter 8 |   |
Thu | Feb 2 | Simply Typed Lambda Calculus | Chapter 9 |   |
Tue | Feb 7 | The Curry-Howard Isomorphism Extensions to Simply Typed Lambda Calculus |
Chapter 11 | Pick project topic (no turn-in) |
Thu | Feb 9 | Extensions, Exceptions | Chapters 11,14 |   |
Tue | Feb 14 | Exceptions (cont'd), References | Chapters 13,14 | Project stage 1 due |
Thu | Feb 16 | Subtyping | Chapter 15 |   |
Tue | Feb 21 | Subtyping (II) | Chapters 15, Sections 16.1 and 16.2 |   |
Thu | Feb 23 | Imperative Objects | Chapter 18 |   |
Tue | Feb 28 | Featherweight Java | Chapter 19 (optional)Featherweight Java: A Minimal Core Calculus for Java and GJ by Igarashi, Pierce, and Wadler up to Section 3 (page 13) |
Project stage 2 due |
Thu | Mar 1 | Polymorphism: Universal Types | Chapter 23 (optional)On Understanding Types, Data Abstraction, and Polymorphism by Cardelli and Wegner |
  |
Tue | Mar 6 | Polymorphism: Existential Types | Chapter 24 |   |
Thu | Mar 8 | Operational semantics for multi-threaded programs |
Types for safe locking by Flanagan and Abadi | |
Tue | Mar 13 | Project presentations |   | Assignment 3 due |
Thu | Mar 15 | Project presentations |   |   |
Thu | Mar 22 | Final Exam |   |   |
Projects
Each student is expected to complete a research project, write up the material describing the project in a similar manner to a research paper, and present the project in class (in one of the last classes). The project can have an implementation flavor, a theoretical flavor, or both.
The instructor will suggest several possible project topics, but the students are encouraged to choose their own topics, as long as they are relevant to this class.
The projects can be completed individually or in teams, with the expectation for team projects being commensurately higher than for individual projects.