History of Programming Languages
1 When and Where
2 What
3 How
4 Topics
5 Other topics
7.2.0.3

History of Programming Languages

Christos Dimoulas

1 When and Where

We meet every Tuesday and Thursday (except university holidays) from 12:30 to 13:50 at Tech M166. Topics provides more details for each meeting.

2 What

This course is definetely not about this. This seminar is about ideas that occupied for some time the minds of programming languages researchers and morphed into mature and recognizable research trends within the field.

Some ideas proved so successful that we forgot their origins and nowadays, they seem as obvious as if they were engraved in our brains with a beam from an alien mothership at the beginning of time. Did, for instance, the connection between the λ-calculus and formal programming language semantics emerge out of nothing? Or did type soundness always mean progress and preservation?

Some other ideas had their moments under the spotlight and then seemingly vanished. Years later, other ideas appear that look completely new but at closer inspection carry traits of these forgotten ideas. Some times the connection is tight enough that it seems as if an old idea reincarnated into a new one, even under the same name. Are, for example, the refinement types of today’s Haskell unrelated to the refinement types of ML from the 90s?

Of course, many ideas do vanish for good (or better they haven’t resurfaced yet). But even the “failed” ideas teach us at least how to prune the research space and how to avoid repeating the mistakes of the past. And who knows, looking at failed ideas may reveal an “old” solution applies to a “new” problem. Who could have guessed that delimited continuations would find an application in the architecture of web browsers?

Independently of their fate, the ideas we will look into during our meetings demonstrate how programmers tried to organize their thoughts into programs, what linguistic means they created to streamline this process and what techniques they came up with to reason about programs.

3 How

During each meeting, we will look into one mature topic in programming languages research. Mature topics describe a completed route from precise research questions to an answer rather than still active and evolving research efforts.

For some of the meetings, I have selected and will present topics that cover the history and development of a few important questions in programming languages research. Topics shows the dates, titles and other details of these meetings.

For the rest of the meetings, each participant will pick 3 to 5 papers that form the spine of a mature topic and give a white-board presentation of these papers. Depending on the number of participants in the course, each participant will present once or twice during the semester. Other topics includes a list of possible topics that participants could pick.

Outside the presentations, participants will compile an annotated bibliography for the papers they selected for their topics. The bibliography should consist of a bibtex style entry together with an alternative title, a short summary and, an evaluation/significance paragraph for each paper.

Each participant will pick a partner for the quarter that will help them practice their presentation(s) and will provide feedback for the annotated bibliography.

Finally, the participants that do not present in a given meeting are not expected to have read the presented papers in advance. They are expected, though, to fill this anonymous evaluation form and turn it in by the next meeting. The form will provide presentation feedback to each meeting’s presenter.

I will be available to help participants select topics and relevant papers, structure their presentations and, prepare the annotated bibliography. I will also read through the evaluation forms, discuss them and provide additional feedback. In particular, presenters are expected to arrange at least three meetings with me per presentation: one at least two weeks before the presentation to select topic and papers, one at least one week before the presentation to discuss the structure of the presentation and, one at most one week after the presentation to evaluate the presentation and the annotated bibliography. Please, communicate with me via email to arrange the meetings.

The structure of the seminar aims to:

Formally, the last four points together with discussion participation during the meentings are the indices that will determine the grade of the students that register for the course. In reality, though, this is a seminar course and you get out of it what you invest in it.

4 Topics

When

What

Who

1/08

From LISP and ALGOL 60 to interpreters and abstract machines

Christos

1/10

From interpreters and abstract machines to the λ insight

Christos

1/15

Intermezzo: a step back to the past ...

Christos

1/17

Intermezzo: ... to reach today

Christos

1/22

The λ insight formally and the science of syntax

Christos

1/24

Putting syntax to work, for real

Christos

1/29

The power of syntax: type soundness

Christos

1/31

Abstraction

Christos

2/05

Early developments in logical relations

Shu-Hung

2/07

Monads

Shengkai

2/12

Programming models for interactive fiction

Ethan

2/14

Dataflow analysis in first-order languages

Emily

2/19

Logical relations for mutable state

Hakan

2/21

TBD

Lukas

2/26

TBD

Dan F.

2/28

Substructural type systems

John

3/05

The Curry-Howard isomorphism

Dan K.

3/07

Development and analysis of mutation testing

Joe

3/12

Intermezzo: the syntax motif in the contracts mode

Christos

3/14

Program dependence graphs

Spencer

5 Other topics

The following is a list of topics that participants in the seminar can choose to present. Of course, this is not an exclusive list. Participants can propose other topics too as long as a proposed topic covers a cohesive theme of mature ideas in programming languages research.