this is serious

The course will cover the following topics, in roughly this order:
  • one language, many languages, a programming-language programming language

  • a model of Racket as an extensible programming language

  • the syntax extension mechanism; fluidly embedded languages

  • project ideas due

  • syntactic interposition points; modules

  • languages as modules; statically embedded languages

  • types and type checking

  • statically typed, statically embedded languages

  • equipping a language with "ugly" syntax

The rest of the course is dedicated to your "hack your own language" Project.

Week 1

Jan 09

Languages as Abstractions

Examples of Languages

Jan 12

POPL (no class)

Week 3

Jan 16

A Simple Model of Macros

S-expressions Transformations

Jan 18


Week 5

Jan 23

Compile-time Functions Parsing Syntax

Racket Macros

Jan 26

Michael Ballantyne, Lexical Scope

Week 7

Jan 30

Lexical Scope; Languages as Modules, Modules as Languages

Simple Languages

Feb 02

Modules and Interposition Points

Week 9

Feb 06

Modules as Languages

More Languages

Feb 09

Types and Type Checking

Week 11

Feb 13

Stephen Chang, Macros and Types

Racket Extension Languages (2)

Feb 15

Leif Andersen, A Language for Making Movies

Week 13

Feb 20

Stephen Chang, Macros, Types,

Typed Embedded Languages

Feb 23

Stephen Chang, Turnstile (1)

Week 15

Feb 27

Turnstile (2) + Idea Presentations


Mar 02

Idea Presentations

Week 17

Mar 06


Mar 09


Week 19

Mar 13

Stephen Chang, Parsing Tools


Mar 16

Non-Racket Languages

Week 21

Mar 20

project presentation

Mar 23

project presentation

Week 23

Mar 27

project presentation

Mar 30

project presentation

Week 25

Apr 03

project presentation

Apr 06

project presentation

Week 27

Apr 10

project presentation

Apr 13

project presentation

Week 29

Apr 17

project presentation