News
- Assignment 3 has been posted on Moodle, due Feb 25
- Project outline due Feb 14
- Project suggestions posted on Moodle
- Assignment 2 has been posted on Moodle, due Jan 28
- Assignment 1 has been posted on Moodle, due Jan 14
- The first lecture will be on Tuesday, January 5
Overview
Instructor | Iulian Neamtiu |
Lectures | TR 9:40 a.m. - 11:00 a.m., CHASS Interdisciplinary Build South (INTS) room 1130 |
Office hours | TR 11:05 a.m. - 12:05 p.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 | March 15 (take home) |
Prerequisites | CS 152 (or equivalent) and CS 181 (or equivalent) |
Moodle 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 5 | Introduction |   | Assignment 1 out |
Thu | Jan 7 | OCaml | . |   |
Tue | Jan 12 | Untyped Arithmetic Expressions (I) | Chapters 2,3 |   |
Tue | Jan 19 | Untyped Arithmetic Expressions (II) | . |   |
Thu | Jan 21 | Untyped Lambda Calculus (I) | Chapter 5 |   |
Tue | Jan 26 | Untyped Lambda Calculus (II) | . |   |
Thu | Jan 28 | Typed Arithmetic Expressions Simply Typed Lambda Calculus (I) |
Chapters 8,9 | Assignment 2 due |
Tue | Feb 2 | Simply Typed Lambda Calculus (II) | Chapter 9 |   |
Thu | Feb 4 | The Curry-Howard Isomorphism Extensions to Simply Typed Lambda Calculus |
Chapter 11 |   |
Tue | Feb 9 | Extensions, Exceptions | Chapters 11,14 |   |
Thu | Feb 11 | Exceptions (cont'd), References | Chapters 13,14 |   |
Tue | Feb 16 | Subtyping | Chapter 15 |   |
Thu | Feb 18 | Imperative Objects | Chapter 18 |   |
Tue | Feb 23 | Featherweight Java | Chapter 19 (optional)Featherweight Java: A Minimal Core Calculus for Java and GJ by Igarashi, Pierce, and Wadler |
  |
Thu | Feb 25 | Polymorphism: Universal Types | Chapter 23 (optional)On Understanding Types, Data Abstraction, and Polymorphism by Cardelli and Wegner |
Assignment 3 due |
Tue | March 2 | Polymorphism: Existential Types | Chapter 24 |   |
Thu | March 4 | Operational semantics for multi-threaded programs |
Types for safe locking by Flanagan and Abadi |   |
Tue | March 9 | Project presentations |   |   |
Thu | March 11 | Project presentations |   |   |
Mon | March 15 | 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.