CS358 Principles of Programming Languages Winter 2025

Class meeting

Instructor: Andrew Tolmach

Teaching Assistant

Quick Pointers

Course Information

Course Catalog Description

Syntax and semantics. Compilers and interpreters. Programs as data. Regular expressions and context free grammars. Programming paradigms, including procedural, functional, and object-oriented programming. Type systems, including dynamic and static typing disciplines. Binding, scope, data abstraction, and modularity. Denotational, operational, and axiomatic semantics. Introduction to program correctness.

Format

Textbook

There is no required textbook.

Prerequisites

CS302, CS314(=CS300), CS350 passed with grades of C or better. CS202 is an acceptable subtitute for CS302. It is assumed that you have substantial programming experience in C/C++ and some experience using Python.

Requirements and Grading

Practice Exercises

Interpreter Implementation Project

Language Analysis Report

Computing Resources

Schedule

This schedule is tentative and all aspects (including due dates) are subject to change.
All deliverables are due at noon on the specified date.
Week Date Due Class Topic
1 Jan 6 Course Introduction
Jan 8 Python Review
2 Jan 13 Exercises 1 Expressions, Bindings, Scope
Jan 15 Representing and Interpreting Programs in Python
3 Jan 20 Exercises 2 MLK Day (no class)
Jan 22 Interpreters and Compilers
4 Jan 27 Exercises 3 Syntax: Regular Expressions
Jan 29 Project MS 1 Syntax: Context-free grammars
5 Feb 3 Exercises 4 Removing ambiguity; Practical parsing
Feb 5 Functions and parameters
6 Feb 10 Exercises 5 Memory layout; closures
Feb 12 Analysis MS 1 First-class functions
7 Feb 17 Exercises 6 Statements
Feb 19 Project MS 2 Imperative programming and mutation
8 Feb 24 Exercises 7 Data structures
Feb 26 Products; sums; recursion
9 Mar 3 Exercises 8 Types
Mar 5 Static Analysis; Safety
10 Mar 10 Project MS 3 Object-oriented programming
Mar 12 Exercises 9 Programming in the Large
11 Mar 17 Final Project (corrections only) (Finals week)
Mar 19 Final Report

Policies

Individual work

Electronics in the Classroom

Title IX Reporting Obligations

Disabilities

Recording