CS 150 Advanced Programming Languages (Fall 2025)
1 Description
This graduate course explores advanced topics in programming languages. The primary goal of this course is to prepare students to explore the literature and perform research in this field. By the end of the course, students will be able to read, understand, and implement results from research papers. Topics include but not limited to operational semantics, type systems, effects, program analysis and transformation, etc. The range of topics is flexible and will be driven by student interest.
Instructor: Guannan Wei (guannan.wei@tufts.edu), Assistant Professor in Computer Science
Course URL: https://continuation.passing.style/teaching/cs150-fall25
Format: The course format includes a combination of lectures, student-led paper presentations, and project work. Lectures will provide an introduction to important and foundational concepts. Students will present and discuss papers from recent conferences or classical papers in the field. Each paper will have a designated facilitator responsible for leading the discussion. To ensure a lively discussion, students are responsible for reading assigned papers at sufficient level to summarize the research problem, the proposed solution, the relationship to existing work, and the evaluation of any claimed contributions. Each student is expected to work on a mini research project. The project will involve exploring a specific topic in depth, conducting a literature review, and implementing a solution or conducting an experiment.
Prerequisite: CS105 or equivalent. Undergraduates who have completed CS105 are welcome to enroll.
Time: Tuesday and Thursday 4:30-5:45 pm
Where: Joyce Cummings Center 260
Office hours: By appointment.
2 Grading
Final grades will be assigned according to the following breakdown:
Participation: 10%.
Students are expected to attend and participate in the class meetings twice a week.Presentation & discussion of research papers: 30%.
Each student is expected to present 1-2 papers of their choice (see a list of possible papers below). Students other than the presenter are expected to read the paper, write a short summary of the paper (half pages), and participate in the discussion.- Projects: 60%.
Each student is expected to complete a mini research project.
Students will give two presentations: one for the project proposal and another for the final project. They are required to submit a project proposal (1 page), a final report (4 pages), and a supporting artifact (e.g., working implementation, proof, etc.).
The artifact needs to document the scope clearly (what is expected to work or not), and provide evidence that the artifact is functional (showing what is expected to work indeed works).
There is no exam.
3 Schedule
Tentative schedule for the course:
Week | Date | Topic |
Week 1 | Sep 2, Tue | Introduction & Logistics |
Sep 4, Thu | Lecture: operational semantics | |
Week 2 | Sep 9, Tue | Lecture: types (STLC, soundness/completeness, polymorphism) |
Sep 11, Thu | Lecture: types/effects (product, sum, existential, state) | |
Week 3 | Sep 16, Tue | Paper discussion: |
Lead: Ryan | ||
A Functional Correspondence between Evaluators and Abstract Machines | ||
Sep 18, Thu | Paper discussion: | |
Week 4 | Sep 23, Tue | Paper discussion: |
Sep 25, Thu | Paper discussion: | |
Week 5 | Sep 30, Tue | Paper discussion: |
Oct 2, Thu | Project proposal presentation | |
Proposal due: Oct 5 | ||
Week 6 | Oct 7, Tue | Paper discussion: |
Oct 9, Thu | Paper discussion: | |
Week 7 | Oct 14, Tue | SPLASH/ICFP. |
Oct 16, Thu | SPLASH/ICFP. | |
Week 8 | Oct 21, Tue | Lecture: optimization (partial evaluation, staging) |
Oct 23, Thu | Paper discussion: | |
Week 9 | Oct 28, Tue | Paper discussion: |
Oct 30, Thu | Lecture: transformation (CPS/ANF) | |
Week 10 | Nov 4, Tue | Paper discussion: |
Nov 6, Thu | Paper discussion: | |
Week 11 | Nov 11, Tue | No Class: Veterans' Day (University Holiday). |
Nov 13, Thu | Lecture: formal methods & static analysis | |
Week 12 | Nov 18, Tue | Paper discussion: |
Nov 20, Thu | Paper discussion: | |
Week 13 | Nov 25, Tue | No Class |
Nov 27, Thu | No Class. Thanksgiving (University Holiday). | |
Week 14 | Dec 2, Tue | Project presentation |
Dec 4, Thu | Project presentation | |
Project report/artifact due: Dec 12 |
Sign up here with your name and chosen paper: Google Sheet.
4 Topics and Papers
Here is a tentative, non-exhaustive list of candidate papers that can be presented and discussed in class. The list contains a mix of seminal work and recent advanced research papers. Additional papers can be be selected from recent conferences, including PLDI, POPL, OOPSLA, ICFP, and others.
Chapters from textbooks
Types and Programming Languages (starting from Ch15). Benjamin C. Pierce. MIT Press
Advanced Topics in Types and Programming Languages. Benjamin C. Pierce. MIT Press
Dynamic Semantics
A functional correspondence between evaluators and abstract machines. (PPDP 2003)
On Evaluation Contexts, Continuations, and the Rest of the Computation. (CW 2004)
Programming language semantics: It’s easy as 1,2,3. (JFP 2023)
Bringing the WebAssembly Standard up to Speed with SpecTec. (PLDI 2024)
Quantum programming languages
Quantum Control Machine: The Limits of Control Flow in Quantum Programming. (OOPSLA 2024)
Quantum Register Machine: Efficient Implementation of Quantum Recursive Programs. (PLDI 2025)
Compiling Conditional Quantum Gates without Using Helper Qubits. (PLDI 2024)
Engineering Definitional Interpreters. (PPDP 2013)
Self-Optimizing AST Interpreters. (DLS 2012)
A Fast In-Place Interpreter for WebAssembly. (OOPSLA 2022)
egg: Fast and Extensible Equality Saturation. (POPL 2021)
A Low-Level Look at A-Normal Form. (OOPSLA 2024)
Slotted E-Graphs: First-Class Support for (Bound) Variables in E-Graphs. (PLDI 2025)
Metaprogramming
Finally Tagless, Partially Evaluated. (JFP 2009)
Lightweight modular staging: a pragmatic approach to runtime code generation and compiled DSLs (GPCE 2010)
MacoCaml: Staging Composable and Compilable Macros. (ICFP 2023)
Partial Evaluation, Whole-Program Compilation. (PLDI 2025)
The Long Way to Deforestation: A Type Inference and Elaboration Technique for Removing Intermediate Data Structures. (ICFP 2024)
Type systems (general)
Bidirectional Typing. (ACM Computing Surveys)
Type-level programming with match types. (POPL 2022)
Bidirectional Higher-Rank Polymorphism with Intersection and Union Types. (POPL 2025)
A Case for First-Class Environments. (OOPSLA 2024)
Type systems for tracking/constraining resources/effect:
Gentrification Gone too Far? Affordable 2nd-Class Values for Fun and (Co-)Effect. (OOPSLA 2016)
Effects as Capabilities: Effect Handlers and Lightweight Effect Polymorphisms. (OOPSLA 20202)
Linearity and Uniqueness: An Entente Cordiale. (ESOP 2022)
RichWasm: Bringing Safe, Fine-Grained, Shared-Memory Interoperability Down to WebAssembly. (PLDI 2024)
Law and Order for Typestate with Borrowing. (OOPSLA 2024)
Affect: An Affine Type and Effect System. (POPL 2025)
Data Race Freedom à la Mode. (POPL 2025)
Tree Borrows. (PLDI 2025)
Degrees of Separation: A Flexible Type System for Safe Concurrency. (OOPSLA 2024)
Functional Ownership through Fractional Uniqueness. (OOPSLA 2024)
Perceus: garbage free reference counting with reuse. (PLDI 2021)
Algebirac effects
An Introduction to Algebraic Effects and Handlers. (MFPS 2015 Invited tutorial)
Liberating Effects with Rows and Handlers. (TyDe 2016)
Retrofitting Effect Handlers onto OCaml. (PLDI 2021)
Lexical Effect Handlers, Directly. (OOPSLA 2024)
Abstracting Effect Systems for Algebraic Effect Handlers. (PLDI 2024)
Perfectly parallel fairness certification of neural networks. (OOPSLA 2020)
Abstracting definitional interpreters. (ICFP 2018)
Systematic abstraction of abstract machines. (JFP 2012)
A formal foundation for symbolic evaluation with merging. (POPL 2022)
A lightweight symbolic virtual machine for solver-aided host languages. (PLDI 2013)
Derivative-Guided Symbolic Execution. (POPL 2025)
Finding ∀∃ Hyperbugs using Symbolic Execution. (OOPSLA 2024)
Formulog: Datalog for SMT-based static analysis. (OOPSLA 2020)
Fixpoints for the Masses:Programming with First-Class Datalog Constraints. (OOPSLA 2020)
Bring Your Own Data Structures to Datalog. (OOPSLA 2023)
Datalog with First-Class Facts. (PVLDB 2024, Vol 18, No 3)
Finite-Choice Logic Programming. (POPL 2025)
Multi-stage Relational Programming. (PLDI 2025)
A Typed Multi-level Datalog IR and Its Compiler Framework. (OOPSLA 2024)
Object-Oriented Fixpoint Programming with Datalog. (PLDI 2024)
PL+LLM
Laurel: Unblocking Automated Verification with Large Language Models. (OOPSLA 2025)
Type-Constrained Code Generation with Language Models. (PLDI 2025)
5 Resources
How to Write a Great Research Proposal, Simon Peyton Jones and Alan Bundy
How To Write Papers So People Can Read Them (video), Derek Dreyer
How To Give Talks That People Can Follow (slides), Derek Dreyer
The Craft of Writing Effectively (video), Larry McEnerney
Writing for Computer Science (Springer book), Justin Zobel
Empirical Evaluation Checklist, SIGPLAN