News
- The first lecture will be on Tuesday, January 4
Overview
Instructor | Iulian Neamtiu |
Lectures | TR 8:10 a.m. - 9:30 a.m., CHASS Interdisciplinary Build South (INTS) room 1132 |
Office hours | TR 9:45 a.m. - 10:45 a.m. Engineering Building 2 (ENGR2) room 412 |
Grading | Project (45%) + Final exam (30%) + Assignments (20%) + Class participation (5%) |
Textbook | Types and Programming Languages by Benjamin C. Pierce. |
Final exam | TBD (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 4 | Introduction |   | Assignment 1 out | |
Thu | Jan 6 | OCaml | . |   | |
Tue | Jan 11 | Untyped Arithmetic Expressions (I) | Chapters 2,3 |   | |
Thu | Jan 13 | Untyped Arithmetic Expressions (II) | . | Assignment 1 due | |
Tue | Jan 18 | Untyped Lambda Calculus (I) | Chapter 5 |   | |
Thu | Jan 20 | Untyped Lambda Calculus (II) | . |   | |
Tue | Jan 25 | Typed Arithmetic Expressions | Chapter 8 |   | |
Thu | Feb 27 | Simply Typed Lambda Calculus | Chapter 9 | Assignment 2 due | |
Tue | Feb 1 | The Curry-Howard Isomorphism Extensions to Simply Typed Lambda Calculus |
Chapter 11 |   | |
Thu | Feb 3 | Extensions, Exceptions | Chapters 11,14 |   | |
Tue | Feb 8 | Exceptions (cont'd), References | Chapters 13,14 | Project stage 1 due | |
Thu | Feb 10 | Subtyping | Chapter 15 |   | |
Tue | Feb 15 | Subtyping (II) | Chapters 15,16 |   | |
Thu | Feb 17 | Imperative Objects | Chapter 18 |   | |
Tue | Feb 22 | 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 | Feb 24 | Polymorphism: Universal Types | Chapter 23 (optional)On Understanding Types, Data Abstraction, and Polymorphism by Cardelli and Wegner |
  | |
Tue | March 1 | Polymorphism: Existential Types | Chapter 24 |   | |
Thu | March 3 | Operational semantics for multi-threaded programsDependent Types |
Types for safe locking by Flanagan and Abadi |   | Assignment 3 due |
Tue | March 8 | Project presentations |   |   | |
Thu | March 10 | Project presentations |   |   | |
TBD | 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.