MCPEGet » Download Minecraft PE » Minecraft PE 1.1.5

15312 Foundations Of Programming Languages Work Now

15-312: Foundations of Programming Languages (FPL) at Carnegie Mellon University is more than just a coding course; it is a deep dive into the mathematical soul of software. While many computer science courses focus on to use a language, 15-312 asks a more fundamental question:

Most introductory CS courses teach you how to use a language. 15-312 teaches you how to define one. 15312 foundations of programming languages

It has only three things:

  • α-equivalence: Renaming bound variables correctly.
  • β-reduction: Function application as substitution.
  • Normalization: Does every term reduce to a normal form? (No, think of the Omega combinator: (λx.xx)(λx.xx)).
  • Encoding data: Booleans and numerals (Church numerals) without built-in data types.

Syntax, Semantics, and Type Systems.

Before diving into the specifics of the 15-312 syllabus, we must understand the three pillars that support the entire discipline: α-equivalence: Renaming bound variables correctly

mathematical object

The core philosophy of 15-312 is that a programming language is not just a tool, but a . Rather than discussing "syntax" as just where to put semicolons, the course uses Type Theory as an organizing principle. Syntax, Semantics, and Type Systems

Axiomatic Semantics

– Define what can be proven about a program using logical assertions (preconditions and postconditions). Example: x = n x := x + 1 x = n + 1

Denotational Semantics

– Map each program construct to a mathematical object (a function, a number, a state). Example: [[x + 3]] = [[x]] + 3 in the domain of integers.