Overview:

This course introduces basic concepts and techniques in the foundational study of programming languages, as well as their formal logical underpinnings. The central theme is the view of individual programs and whole languages as mathematical objects about which precise claims may be made and proved. Particular topics include operational techniques for formal definition of language features, type systems and type safety properties, polymorphism and subtyping, and foundations of advanced programming-language features.

Topics:

Part I: Logical Foundations
Functional programming
Constructive logic
Inductive definitions and proof techniques for informal and formal proof
The Rocq proof assistant
Part II: Programming Language Basics
Operational semantics
Semantics of the imperative While language
Part III: Type systems
Simply typed λ-calculus
Type safety
Subtyping

Textbook:

Online textbooks: Logical Foundations and Programming Language Foundations

Supplementary textbook: Types and Programming Languages. Benjamin C. Pierce. MIT Press, 2002.

Prerequisites:

An undergraduate-level course in programming languages or compilers; significant programming experience; mathematical sophistication.

Grading:

Breakdown for the course grade is as follows:

Homework

Working with the CIS 5000 Rocq Projects

WARNING: The difficulty level of homework assignments in this course ramps up significantly as the course progresses. If you find yourself struggling with the early homeworks, that is a bad sign, but even if they seem easy, make sure to keep up!

Submission Policy

When submitting Rocq files as homeworks, make sure that Rocq accepts each file in its entirety. If Rocq does not accept the file, it will not be graded. You can use Admitted to force Rocq to accept incomplete proofs (but you will not get credit for those problems).

Late Submission Policy

The late submission policy is intended to encourage students to complete every homework to the best of their ability while still allowing them a bit of flexibility throughout the semester to account for scheduling challenges. If you have unusual circumstances please contact the instructor.

Unusual Circumstances

If you have unusual medical, family, or other emergency circumstances, please contact the instructor as soon as possible so that an appropriate plan for completing the course material can be created. It is preferable that you contact the course staff before the homework due date or exam, in which case we will do our best to accommodate the unusal circumstances. If you do not contact the staff in advance, it is up to the instructor's discretion whether a late assignment falls into the unusual circumstances category, or whether it causes the student to accrue late days.