CIS 500: Syllabus

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

This course introduces basic concepts and techniques in the foundational study of programming languages. 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 object-oriented programming.


Breakdown for the course grade is as follows:


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


Part O: Background
A taste of OCaml
Functional programming
Part I: Basics
Operational semantics
Inductive proof techniques
The λ-calculus
Evaluator implementation
Syntactic sugar; fully abstract translations
Part II: Type systems
Basic types
Simply typed λ-calculus
Type safety
Part III: Object-oriented features
An analysis of core Java
A simple imperative object model [time permitting]


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