1 When and Where
2 What
3 How
4 Schedule
5 Project suggestions
6 Collaboration Policy

Dynamics of Programming Languages

Christos Dimoulas and Robby Findler

1 When and Where

We meet every Tuesday and Thursday from 2pm to 3:20pm at Tech M164. Schedule provides more details for each meeting.

2 What

The starting point of this course is that we can describe what a programming language is with mathematics. We can specify (i) what are the valid programs of the language and (ii) what is the outcome when we run each one of them. These two pieces are the syntax and the semantics of the language. From this premise, this course explains how we can describe the semantics of a language by giving meaning to a program in terms of steps of simplifications of its syntax in a systematic and provably correct fashion; very similar to the way we give meaning to an arithmetic expression by using algebra calculations. Moreover, with the help of PLT Redex, we will see how we can turn the math into programs that we can run and test.

3 How

We will have two kinds of meetings. Theory meetings will be about the mathematical foundations. For those we will follow the Semantics Engineering with PLT Redex book. Redex meetings will be about mapping the math formalisms from the theory meetings to Redex programs.

For the first four weeks, there will be four assignments that will mix theoretical exercises and Redex programming. After that, with our help, you will pick a programming languages research paper and investigate it with Redex. You will also give two presentations in class: one to introduce us to the paper you picked and one to present your investigation of the paper.

Formally, the assignments, the two presentations and the Redex code you will produce will be the four factors that will determine your grade for the course.

4 Schedule

When

What

Reading

4/02

Theory: From Syntax to Semantics

Sections 1 - 1.4

4/04

Theory: From Semantics to Questions

Sections 1.5 - 2.1

Assignment 1 is out!

4/09

Theory: From Questions to Answers I

Section 2.2

4/11

PLT Redex: The Basics

Chapter 1 (revisited)

Assignment 2 is out!

4/16

Theory: From Questions to Answers II

Section 2.2

4/18

Theory: From Questions to Answers III

Sections 2.2

Assignment 3 is out!

4/23

PLT Redex: λ Basics

Sections 3.1 - 3.3

4/25

PLT Redex: More on λ

Sections 3.4 - 3.6

Assignment 4 is out!

4/30

Theory: Even more on λ

Sections 3.8 - 3.9

5/02

Theory: From λ to ISWIM

Sections 4.1 - 4.4

5/07

Theory: ISWIM

Sections 4.3 - 4.5

Assignment 5 is out!

5/09

Theory: More on ISWIM

Section 4.6

5/14

PLT Redex: Contexts

Sections 4.7 - 5.1

5/16

Paper Presentations

5/21

Theory: Standardization I

Section 5.2

5/23

Theory: Standardization II

Section 5.2

5/28

Theory: Standardization III

Sections 5.2 - 5.4

5/30

Wrap-up + Project Presentation

6/04

Project Presentations

6/06

Project Presentations

5 Project suggestions

Here are a few papers you can select from for your project. The list is not exhaustive so feel free to propose other papers as long as they describe formally the semantics of a programming language and you argue that you can encode this semantics in PLT Redex.

6 Collaboration Policy

Working with others on assignments is a good way to learn the material and we encourage it. However, there are limits to the degree of cooperation that we will permit.

When working on assignments (theoretical or programming ones), you must work only with others whose understanding of the material is approximately equal to yours. In this situation, working together to find a good approach for solving a problem is cooperation; listening while someone dictates a solution is cheating. You must limit collaboration to a high-level discussion of solution strategies, and stop short of actually writing down a group answer. Anything that you hand in, whether it is a written problem or a computer program, must be entirely your own work. If you base your solution on any other written solution or program, you are cheating.

Note: allowing your work to be copied is cheating just as much as copying another’s work, and thus also subject to punishment.

If you have any questions about what constitutes cheating, please ask.