CS 150 Advanced Programming Languages (Fall 2025)
1 Description
2 Grading
3 Schedule
4 Topics and Papers
5 Resources
Sept 11, 2025

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

slides

Sep 4, Thu

Lecture: operational semantics

slides

Week 2

Sep 9, Tue

Lecture: types (STLC, soundness/completeness, polymorphism)

slides

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)

Interpretation, Compilation, and Optimization
  • 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)

Memory Management
  • 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)

Abstract interpretation
  • Perfectly parallel fairness certification of neural networks. (OOPSLA 2020)

  • Abstracting definitional interpreters. (ICFP 2018)

  • Systematic abstraction of abstract machines. (JFP 2012)

Symbolic execution
  • 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)

Logic programming
  • 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🔗