Teaching

CS 452: Programming Language Foundations — Fall 2026

This course provides an introduction to the theory of programming languages, with an emphasis on language design and formal semantics. Students will learn how to formalize common programming constructs using operational, denotational, and axiomatic models; to prove properties about programs using language-based reasoning tools; and to apply these ideas in the design of a new domain-specific language.

Topics

Introduction and Mathematical Preliminaries · Operational Semantics · Denotational Semantics · Axiomatic Semantics · Imperative Features · Lambda Calculus · Type Systems · Polymorphism · Continuations · Effects · Relational Reasoning · Concurrency · Domain-Specific Languages

Prerequisites

Discrete math, proofs and induction, functional programming. Recommended: CS-214 Software Construction, CS-320 Computer Language Processing.

Assessment

Programming assignments (30%) · Course project (30%) · Final exam (40%)

Credits: 8 · Lecture: 3h/week · Exercises: 2h/week · Lab/project: 2h/week

Registration

Registration opens through IS-Academia in the standard course registration period. Check back for the syllabus and schedule closer to the start of the semester.


Past Courses at Cornell

  • Fall 2025 CS 4110 — Programming Languages and Logics
  • Fall 2024 CS 6115 — Certified Software Systems
  • Spring 2023 CS 6115 — Certified Software Systems
  • Spring 2022 CS 3110 — Data Structures and Functional Programming
  • Fall 2022 CS 2112 — Object-Oriented Programming and Data Structures (Honors)
  • Spring 2021 CS 5114 — Network Programming Languages
  • Fall 2021 CS 5114 — Network Programming Languages
  • Spring 2020 CS 3110 — Data Structures and Functional Programming
  • Fall 2020 CS 3110 — Data Structures and Functional Programming
  • Spring 2019 CS 3110 — Data Structures and Functional Programming
  • Fall 2019 CS 6114 — Network Programming Languages
  • Spring 2018 CS 3110 — Data Structures and Functional Programming
  • Fall 2018 CS 6114 — Network Programming Languages
  • Fall 2017 CS 6114 — Network Programming Languages
  • Spring 2016 CS 6110 — Advanced Programming Languages
  • Spring 2015 CS 6115 — Certified Software Systems
  • Fall 2015 CS 2110 — Object-Oriented Programming and Data Structures
  • Spring 2014 CS 3110 — Data Structures and Functional Programming
  • Fall 2014 CS 4110 — Programming Languages and Logics
  • Spring 2013 CS 6114 — Network Programming Languages
  • Spring 2012 CS 3110 — Data Structures and Functional Programming
  • Fall 2012 CS 4110 — Programming Languages and Logics
  • Spring 2011 CS 6110 — Advanced Programming Languages
  • Fall 2011 CS 6112 — Topics in Programming Languages
  • Fall 2010 CS 4110 — Programming Languages and Logics