CSCI-B522: Programming Language Foundations

Spring 2026

This is a graduate course on the theoretical foundations of programming languages. We will learn fundamental techniques for formally defining programming languages and for proving properties of those languages and the programs written in them. Topics will include abstract syntax with binding, operational semantics, type safety, logical relations, and observational equivalence.

By the end of the course, students will be able to:

Meta

Location: Mondays and Wednesdays, 11:10am–12:25pm, Ballantine Hall 315

Instructor: Carlo Angiuli, Luddy Hall 3008

Assistant instructor: Sujin Woo

Carlo's office hours: Tuesdays, 10:00am–11:00am, or by appointment

Sujin's office hours: Fridays, 1:00pm–3:00pm, in or near Luddy Hall 3014

Syllabus: PDF (last updated 1/19/2026)

Textbook: Practical Foundations for Programming Languages (author's page; eBook)

Schedule

Date Topic Reading
Jan 12Introduction to PL theory Notes 1
Jan 14Inductive definitions Notes 2
Jan 19(MLK Day) 
Jan 21Rule induction 
Jan 26Operational semantics & types (Virtual) Notes 3
Jan 28Type safety 
Feb 2  
Feb 4  
Feb 9  
Feb 11  
Feb 16  
Feb 18  
Feb 23  
Feb 25  
Mar 2  
Mar 4  
Mar 9  
Mar 11  
Mar 16(Spring Break) 
Mar 18(Spring Break) 
Mar 23  
Mar 25  
Mar 30  
Apr 1  
Apr 6  
Apr 8  
Apr 13  
Apr 15  
Apr 20  
Apr 22  
Apr 27  
Apr 29  
May 4Final exam (10:20 AM–12:20 PM)