15312 foundations of programming languages

15312 Foundations Of Programming Languages |top|

Feature: Type Inference with Parametric Polymorphism

In the world of software development, programming languages are often viewed as mere tools—interchangeable hammers used to build applications. However, the study of the "foundations" of these languages (as epitomized by the 15-312 curriculum) treats them as sophisticated mathematical objects. Rather than focusing on syntax or "how to code," the discipline explores the intrinsic logic that governs computation, seeking to answer a fundamental question: How can we prove that a program will behave exactly as intended? The Formal Framework: Syntax and Semantics

End of story.

: An insightful blog post by a former teaching assistant that breaks down the unique challenges of the course, including the implementation of homework problems using Standard ML. Hacker News Core Concepts & Supplementary Materials

While specific distributions may vary by semester, a typical breakdown includes: 15312 foundations of programming languages

Once you understand the "foundations," you stop seeing languages like Python, Rust, or Haskell as collections of syntax. Instead, you see them as combinations of specific features (e.g., "This is just Hindley-Milner type inference with affine logic"). Verification Skills:

Programming Language Used: Most implementation work (interpreters and language dynamics) is done in Standard ML (SML). Feature: Type Inference with Parametric Polymorphism

The journey begins by moving away from "concrete syntax" (the curly braces and semicolons) and toward Abstract Syntax Trees (ASTs). You learn that a program is a structured mathematical object, not just a string of characters. 2. Statics: Type Systems