6.12.0.3

Syllabus

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 2

Jan 16

A Simple Model of Macros

S-expressions Transformations

Jan 18

continued

Week 3

Jan 23

Compile-time Functions Parsing Syntax

Racket Macros

Jan 26

Michael Ballantyne, Lexical Scope

Week 4

Jan 30

Scope; Languages; Modules

Simple Languages

Feb 02

Modules and Interposition Points

Week 5

Feb 06

Modules as Languages

More Languages

Feb 09

Types and Type Checking

Week 6

Feb 13

Stephen Chang, Macros and Types

Racket Extension Languages (2)

Feb 15

Leif Andersen, Making Movies

Week 7

Feb 20

Stephen Chang, Macros, Types,

Typed Embedded Languages

Feb 23

Stephen Chang, Turnstile (1)

Week 8

Feb 27

Turnstile (2) + Idea Presentations

Projects

Mar 02

Idea Presentations

Week 9

Mar 06

SPRING BREAK

Mar 09

SPRING BREAK

Week 10

Mar 13

– snow day –

Mar 16

Assignment 7 presentations

Projects

Week 11

Mar 20

Stephen Chang, Parsing Tools

Mar 23

Non-standard Computation

Week 12

Mar 27

Rioux

Kearney & Nichols

Mar 30

Chu & Drew

Gentner & Kolosik

Week 13

Apr 03

Cherry & Xing

Hain & Zhang

Apr 06

Melcer & Goldman

Guo & Gupta

Week 14

Apr 10

Rosenbloom & Walker

Kant & Murphy

Apr 13

Knauth & Turner

Smith & Li

Week 15

Apr 17

Jolly & Locketz

Ginsparg & McLean