15312 Foundations Of Programming Languages ❲2025❳

This essay outlines the core philosophy and technical pillars of 15-312: Foundations of Programming Languages, a course famously centered on the rigorous study of language design through the lens of type theory and operational semantics.

  1. Provide additional resources: Offering supplementary resources, such as textbooks, online tutorials, or study groups, can help students better understand the course material.
  2. Increase feedback opportunities: Providing more frequent and detailed feedback on assignments and exams can help students identify areas for improvement and track their progress.
  3. Encourage student participation: Encouraging student participation in class discussions and providing opportunities for students to engage with the material can enhance the learning experience.

Example study plan (6 weeks, assuming background in PL)

Week 1: Lambda calculus, ASTs, evaluation rules, write an interpreter.
Week 2: Simply typed lambda calculus, typing rules, implement type checker.
Week 3: Hindley–Milner basics, unification, start implementing Algorithm W.
Week 4: Progress & preservation proofs for core language.
Week 5: Polymorphism/System F overview, CPS conversion.
Week 6: Effects and moduless, final project polishing and write-up. 15312 foundations of programming languages

In this example, the identity function takes an argument x and returns it unchanged. Our type inference algorithm infers that identity has a type scheme forall a. a -> a, indicating that it works with any type a. This essay outlines the core philosophy and technical

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: Shared memory (with mutexes) – easy to get

Standard ML (SML): The primary implementation language is SML, which students use to build interpreters for various language models directly from their formal definitions. Key Topics Covered

-- Type.hs
data Type = TV String | TCon String [Type] deriving (Show, Eq)