UW CSE505 — Programming Languages

Autumn 2026 Schedule: Tue Thu 10:00–11:20, ECE 003
Office Hours: Tuesdays 15:00 CSE2 274, Thursdays 12:00 CSE2 274
Grading: Uncurved clipped sum of scaled homework-problem scores.

Each homework guarantees a fixed part of your final grade if solved. There are more problems than needed to earn a perfect grade. In case an assignment turns out to be significantly more challenging than anticipated, at most 50% of its intended credit may be awarded to everybody regardless of completion.

LLM policy: use to gain understanding, use understanding to do homework, upload transcripts.

Unless otherwise specified, follow UW CSE policy AI for Ideation and Refinement

The assignments were designed to be completed without use of LLMs (the "AI" defined in the department policy). However, you may find it helpful to use some in lieu of a search engine, for example to understand (infamously dense) error messages from Rocq or to locate a tactic that would perform the desired low-level proof step at a goal you are trying to prove.

As solutions to the homeworks are both in the training data of most LLMs and reachable through simple web-search tool calls, it would defeat the purpose of this class to ask an LLM for a solution to the stated problems. We already know it would find one, maybe even one that we wrote. It is your responsibility to make sure your prompts steer the slop machine away from regurgitating a solution, as prose or as code.

If you use any LLM-based tools, you must upload full transcripts of all class-related prompts and responses, regardless of whether the output ended up in your solution.

Extensions: Automatic 24h extension, 36h one-time extension, official accommodations.

A 24-hour extension is applied automatically to every due date; you do not need to request it separately from submitting the assignment.

We generally do not grant exceptions directly, especially last-minute or after-the-fact requests. However, we will honor official academic accommodations.

Weeks 1-2: Diving In

Class 1: Programming Languages & Proof Assistants (install instructions here) [slides] [code]

We will assume you have a working POSIX-ish development enviornment (make, etc). Workable options include Linux, Mac, WSL.

Most homework is completed in the Rocq proof assistant. Productive use of Rocq requires an "IDE", for incremental compilation. Recompiling from scratch after every change is preposterously slow.

Finally, install Rocq if you have not done so already:

Test by creating test.v using your editor and running past Compute 1+1. in it.

Class 2: Lists, Trees, Syntax, Semantics [slides] [code]
Assignment 1 (due 5pm after Class 2): Using a proof assistant.

Available on Gitlab cse505-26au: git clone https://gitlab.cs.washington.edu/cse505-26au/cse505-26au.git

Upload to HW1 Gradescope; Entry Code: G76ZWE

Class 3
Reading 1 (due 5pm after Class 3): Read Reflections on Trusting Trust.

Read Reflections on Trusting Trust - Ken Thompson - 1984. Write a 2-paragraph reflection or commentary. Submit to Gradescope.

Class 4: Reflections on Trusting Trust discussion
Homework 2 (due 5pm after Class 5): nat, list, and induction.

Available on Gitlab cse505-26au: git clone https://gitlab.cs.washington.edu/cse505-26au/cse505-26au.git

Upload to Gradescope

Resources:

Class 5: Induction practice and interpreters
Classes 6 and 7: Transition systems and invariants [slides] [code] [code template]

Discussion of the most general modeling technique in this course, transition systems. It resolves some limitations of interpreters (for example, for modeling nonterminating code) at the cost of some framework weight. Induction and strengthening induction hypotheses continues to be very important with either technique.

Reading 2 (due 5pm Thu Oct 22): Read Social Processes and Proofs of Theorems and Programs.

Read Read Social Processes and Proofs of Theorems and Programs - Richard DeMillo, Richard Lipton, Alan Perlis. Write a 2-paragraph reflection or commentary. Submit to Gradescope.

Classes 8 and 9: Operational semantics for imperative langauges [slides] [code template]

Transition systems are a general and flexible technique for modeling the behavior of programs, but manually specifying a transition system for each program we'd like to reason about is tedious and potentially error-prone. Instead, we can use operational semantics to automatically map a program P to its corresponding transition system directly from P's syntax. In particular, we'll see how to do this for the small "Imp" language used to model imperative programs with unbounded loops.

Homework 3 (due 5pm on Oct 29): transition systems and invariants.

Available on Gitlab cse505-26au: git clone https://gitlab.cs.washington.edu/cse505-26au/cse505-26au.git

Upload to Gradescope by Tuesday 5pm for feedback. Use "QUESTION:" in your submission to call our attention to what you would like feedback on - perhaps strengthened inductive invariants, or another creative aspect. Upload final solution by Thursday 5pm.

Resources:

Classes 10 and 11 - More semantics, weakest preconditions
Reading 3 (due 5pm Thu Nov 5): BP: Formal Proofs, the Fine Print and Side Effects.

Read BP: Formal Proofs, the Fine Print and Side Effects - Toby Murray, Paul C. Van Oorschot. Write a 2-paragraph reflection or commentary. Submit to Gradescope. Optional readings (you may like these if you had Opinions about the previous reading):

Reading 4 (due 5pm Thu Nov 19): Varieties of Static Analyzers: A Comparison with Astree

Read Varieties of Static Analyzers: A Comparison with Astree - Patrick Cousot, Radhia Cousot, Jerome Feret, Antoine Mine, Laurent Mauborgne, David Monniaux, Xavier Rival. Write a 2-paragraph reflection or commentary. Submit your reflection on Gradescope This paper showcases the many features of a static analyzer, Astree, that make it successful in the aviation industry for formal verification. While this course is not about abstract interpretation, if you want to dive deeper into that kind of static analysis, you can check out CSE 503 (Software Engineering). I think the paper should still be relatively digestible. There may be a few terms that you find unfamiliar, so here's a short gloss:

If there are other terms that are unfamiliar, feel free to ask about them on Ed, in class, or in office hours! Alternatively, you can instead read Astree: From Research to Industry - David Delmas, Jean Souyris. This paper is more industry-focused.

Community Notes

Past offerings of CSE505