7400: iPPL (Fall 2024)
Fall 2024 |
Chris
Martens |
Monday/Thursday 11:45-1:25 ET |
Ell Hall 410 |
First lecture will be Monday, September 9 |
Welcome to Intensive Principles of Programming Languages.
The course has two objectives. The first one is to introduce students to
the research area of programming languages. Thus, we cover foundational
theoretical ideas and practical techniques for modeling and analyzing
programming languages. The second one is to expose students to the basic
principles of research in computer science: how to
articulate questions and recognize solutions.
Course Information
Learning objectives:
After taking this course, students will be able to
-
write down formal definitions of programming languages
via their type system and operational semantics
-
identify how different type systems capture essential
properties of diverse computational phenomena
-
state and prove type soundness theorems or exhibit
counterexamples
-
recognize and avoid common fallacies in proofs and language design
-
appreciate language design and formal proof as two intertwined
processes, in which formal properties of interest both inform and
reflect language design choices
-
write small programs to illustrate the expressive power
and limitations of different language constructs
-
state and prove properties of individual programs based on their
semantics or exhibit counterexamples
-
articulate how the mathematical properties of a given programming
language (or language construct) affect practical considerations like
compositional reasoning, usability, expressivity, and ease of implementation
-
appreciate the deep philosophical and mathematical underpinnings
of programming language design
Core topics:
- Static and dynamic semantics
- Type soundness
- Proof by structural and rule induction
- Hypothetical judgments and substitution
- Propositions as types, natural deduction
- Lambda calculus, Church encodings
- Functions, eager and lazy products, sums
- Recursive types, inductive definitions
- Parametric polymorphism, data abstraction, existential types
- Imperative programming
- Meaning-preserving translations between languages
Prior Versions of This Course
Credits
Course website design based on Frank
Pfenning's site for
15-814
|