15312 Foundations Of Programming Languages Here
Foundations of Programming Languages (15-312) is a flagship undergraduate course offered by the Computer Science Department at Carnegie Mellon University (CMU). It moves beyond simply teaching syntax to analyzing the structural, mathematical, and logical underpinnings of how programming languages are designed, defined, and implemented.
The foundational mathematical model of computation. It introduces concepts like abstraction and application, forming the basis for functional programming. Untyped vs. Typed
Arguments are deferred and only evaluated when their results are explicitly required. 3. Key Topics Covered in the Curriculum 15312 foundations of programming languages
15-312 scales up from a simple, primitive language to highly complex systems by incrementally introducing advanced language features. Feature Category Specific Concepts Significance Higher-order functions, Continuations
Advanced topics include control operators like jump or call/cc (call-with-current-continuation). These concepts reveal how high-level features like exceptions, coroutines, and threads manipulate the underlying execution stack of a machine. Why 15-312 Matters for Software Engineers Foundations of Programming Languages (15-312) is a flagship
One of the most powerful ideas in 15312 is the . A type is a label that tells you what kind of value a variable or expression can hold—integer, boolean, string, function, etc.
Consider:
| | Lecture Topic(s) | PFPL Ch. | Homework | | :--- | :--- | :--- | :--- | | Jan 14 | Introduction: What is a Programming Language? | 1-3 | Assignment 0 Out | | Jan 16 | Rule Induction, Binding, Substitution | 4-5 | | | Jan 21 | Dynamics, Statics, and Safety | 4-7 | Assignment 0 Due, Assignment 1 Out | | Jan 28 | Gödel's T and PCF (a core functional language) | 10 | | | Feb 4 | Products and Sums (Data Types) | 11-12 | Assignment 1 Due, Assignment 2 Out | | Feb 11 | Objects and Dynamic Dispatch | 25 | | | Feb 18 | Dynamic Languages as Typed Languages | 19 | Assignment 2 Due, Assignment 3 Out | | Feb 20 | Church's λ-Calculus (The foundation of computation) | 17 | | | Mar 6 | Midterm Exam | | | | Mar 18 | System F and Polymorphism (Generics) | 20 | | | Apr 1 | Control Stacks and Continuations | 28 | | | Apr 8 | Concurrency and Parallelism | 40 | | | Apr 15 | Modularity and Existential Types | 24 | Assignment 5 Out | | Apr 29 | Course Review | | Assignment 5 Due |
Proving that "well-typed programs cannot go wrong" using the Progress (a program can always take a step) and Preservation (stepping maintains the type) theorems. 15312 foundations of programming languages