History of Programming Languages
In this seminar course, we will study themes in the programming
language research area from a historical perspective.
This idea of "several steps" is distinct from the modern idea of
publishing every single thought that occurred to someone over breakfast so that
the dean can get a high count for her yearly report.
The primary goal is to understand some of the major themes in the
discipline as it exists today and how these themes evolved in several
steps. Initially, the seminar will focus on two themes close to the
instructor’s heart: how semantics emerged and how languages evolved that do
not adhere to the common idea of a fixed syntax, scope, and
semantics. The choice of other themes will entirely depend on students’
interests and preferences. All programming language themes are
The secondary goal is to develop basic skills for understanding and
describing research themes. Every student will learn to approach a theme by
reading a series of papers, preparing an annotated bibliography, and
presenting the key steps in the evolution of the theme.
The intended audience consists of PhD students who will write a
dissertation in the area and MS/undergraduate students who wish to deepen
their understanding of the programming language area. PhD students at all
stages of research will benefit. Someone close to the writing stage will have
a chance to develop the bibliography for the chapter on background work;
students at an early stage can use this opportunity to find, refine, or
reject an idea for dissertation research.
Prerequisites Ideally, a PhD student should have taken Intensive
Principles of Programming Languages. An undergraduate or an MS student should
have taken Principles of Programming Languages and studied some additional
topics of interest outside of courses.
Chosen First Topics
relational programming, Kanren (tentative)
gradual typing semantics
programming languages and operating systems
type inference, origins and brittleness
functional reactive programming
system F type systems
hygienic macro expansion
Chosen Second Topics
logical relations in PL
dependently typed logic (tentative)
compiler generation (tentative)
the expression problem