Structure of Programming Languages

This course studies how programming languages are specified and implemented. We build Vertex in small steps, connecting syntax, parsing, evaluation, and runtime behavior.

Class Calendar
Weekly topics and remaining Fall 2026 dates.
Extras
Supplemental slides and documents.

Chapters

Chapter 0: What Is a Programming Language?
Language, syntax, semantics, and the implementation of Vertex.
Chapter 1: Simple Expressions
Vertex's tokenizer, expression trees, recursive-descent parser, and evaluator.
Chapter 2: Programs and Assignments
Programs, statements, assignment, print, and the environment model.
Chapter 3: Strings and Basic I/O
String values, input and output, explicit conversions, and repeatable tests.
Chapter 4: Booleans and Comparisons
Boolean values, comparisons, explicit conversions, and type inspection.
Chapter 5: Logical Operators
Boolean operators, precedence, and short-circuit evaluation.
Chapter 6: Returning Status
The (value, status) pair, exit, and assertions.
Chapter 7: Conditional Statements
Conditional selection: if, else, and braced statement blocks.
Chapter 8: Loops
While loops, break, continue, and repeated evaluation.
Chapter 9: Lists and Indexing
Lists, indexing, indexed assignment, and shared mutable data.

Repository

The course code is in the public GitHub repository at kentcs/structures. You can fork it on GitHub, clone it with git clone https://github.com/kentcs/structures.git, or open it in GitHub Codespaces.