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 Coq 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:

Advanced/WPE Track

Note that the information below applies to the CIS5000 course. The syllabus for the Software Foundations area of the WPE-I can be found here.

CIS 5000 can be taken in one of two tracks: regular and advanced. The difference is that the advanced track features more and harder exercises; it also has more challenging exams, emphasizing written proofs. These two tracks will be considered separately for the purposes of determining final grades in the course (that is, regular track students will not be compared against advanced track students and vice-versa).

Homework

Working with the CIS 5000 Coq 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 homework, that is a bad sign, but they are also potentially deceptively simple.

Submission Policy

When submitting Coq files as homeworks, make sure that Coq accepts each file in its entirety. If Coq does not accept the file, it will not be graded. You can use Admitted to force Coq 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.

Academic Integrity:

This course will abide by the University’s Code of Academic Integrity. In particular, for individual projects and group projects, the following guidelines should be followed:

Last modified: Sun Sep 1 10:43:56 EDT 2013