15-814 Types and Programming Languages
| Fall 2018 |
| Frank Pfenning |
| TuTh 10:30-11:50 |
| GHC 4307 |
| 12 units |
|First lecture will be Tue Sep 4|
This graduate course provides an introduction to programming languages
viewed through the lens of their type structure.
Prerequisites: This is an introductory graduate
course with no formal prerequisites, but an exposure to various forms
of mathematical induction will be helpful. Enterprising undergraduates
and masters students are welcome to attend this course.
Prior Versions of This Course
|| Tu Th 10:30-11:50, GHC 4307
Frank Pfenning, fp@cs
Office Hours Fri 12noon-1:00pm, GHC 6017
| Teaching Assistant
Ryan Kavanagh, rkavanagh@cs
Office Hours Wed 10:00am, GHC 6207
| Course Communication
| Textbook and Notes
Practical Foundations for Programming Languages (Second Edition),
Cambridge University Press, April 2016.
Additional notes may be posted on the schedule page.
|| 12 units
|| 60% Homework, 15% Midterm, 25% Final
Homework assignments are posted on the assignments page.
Date TBA, in class.
Date, Time, Location TBA
After taking this course, students will be able to
define programming languages via their type system and operational
draw from a rich set of type constructors to capture essential
properties of computational phenomena
state and prove the preservation and progress theorems or exhibit
recognize and avoid common fallacies in proofs and language design
write small programs to illustrate the expressive power
and limitations of a variety of type constructors
state and prove properties of individual programs based on their
semantics or exhibit counterexamples
critique programming languages and language constructs
based on the mathematical properties they may or may not
appreciate the deep philosophical and mathematical underpinnings
of programming language design
Many of these topics are tentative, depending on the
pace of the course and participant interests.
- Static and dynamic semantics
- Preservation and progress
- Hypothetical judgments and substitution
- ...others to be added...