!!install!! - 15312 Foundations Of Programming Languages
Recognizing the boundary between static and dynamic behaviors allows you to exploit compiler errors to eliminate runtime vulnerabilities.
You will understand why Rust can guarantee memory safety without a garbage collector, or why TypeScript's type system differs fundamentally from Java's. 15312 foundations of programming languages
Assigns a mathematical object (like a function or a set) to each program phrase, defining meaning in terms of mathematical structures. Unlike many "intro" courses that teach you how
Unlike many "intro" courses that teach you how to code, this one treats programming languages as mathematical objects to be studied and proven correct. CMU School of Computer Science 1. Course Overview | 1-3 | | Jan 16 | Rule
| Date | Topic (Selected) | PFPL Chapters | | :--------- | :------------------------------------------ | :------------ | | Jan 14 | Introduction: What is a programming language? | 1-3 | | Jan 16 | Rule induction, Binding, Substitution | 4-5 | | Jan 21 | Dynamics, Statics, and Safety | 4-7 | | Jan 28 | Gödel's T and PCF (a language with functions) | 10 | | Feb 4 | Products and Sums | 11-12 | | Feb 11 | Objects and Dynamic Dispatch | 25 | | Feb 18 | Dynamic Languages as Typed Languages | 19 | | Mar 4 | Assignable References | 37 | | Mar 18 | System F and Polymorphism | 20 | | Mar 25 | Evaluation Dynamics | 7 | | Apr 1 | Control Stacks | 28 |
Together, Progress and Preservation guarantee that well-typed programs cannot behave badly at runtime. 4. Advanced Language Features and Constructs