CSCI  B629  Integrating Static and Dynamic Typing

Fall 2010


Course Information

Time & Place

Classes meet on Monday and Wednesday, 1pm - 2:15pm in Lindley Hall 115.


Amal Ahmed
Office: Lindley 301G
Phone: 855-4579
Email: amal at
Office hours: by appointment (email me)

Course Description and Requirements

Static and dynamic typing offer complementary advantages: static typing (as in Java, C#, or ML) provides early error detection, efficient execution, and better documentation of code, whereas dynamic typing (as in various scripting languages) encourages rapid development and makes it easier to adapt to changing requirements. Traditionally, programming languages have supported either static or dynamic typing, but not both. More recently, however, many have argued for languages that combine the two. Increasingly, developers using statically typed languages have had to make their code interoperate with components written in dynamic languages. Meanwhile, developers using dynamically typed languages have found that, as their software grows in size (to many thousands of lines of code), static typing of parts of the code base would be highly valuable for maintainability. Moreover, since static checking of precise properties (as in systems with dependent or refinement types) makes type checking undecidable, it seems like a good tradeoff to combine static checking of simple types with dynamic checking of precise types. This course discusses the flurry of research in the last few years on gradual type systems that allow statically checked and dynamically checked components to be freely mixed.

Topics include:

The course is a research seminar that focuses on reading and discussing papers from the scientific literature. At each class meeting, a student will be responsible for presenting a research paper. All students will be required to read the paper and come to class prepared to discuss the reading in depth.

Students taking the class for credit will be required to do two presentations during the course of the semester. Students will also be required to turn in a critique of the paper being discussed by 11am on the morning before the class meeting. (Note that you will have 4 "free passes" that you can use during the semester --- that is, you can choose not to submit a critique for up to 4 papers during the course of the semester without it affecting your grade.)

A course project is optional. Students may opt to undertake a research project, working individually or in pairs. A list of possible research topics will be posted shortly. I expect each research project to result in a publication --- that is, depending on the topic, you should expect to write and submit a research paper roughly in the Spring or Summer of 2011. Ongoing written documentation of progress on the research project will be required. Towards the end of the semester, students will give a presentation on their research in class and solicit feedback.

The class will be based primarily on presentation and discussion of research papers. Also, roughly one class meeting every three weeks will be devoted to discussion/debate about the design of recent languages that integrate static and dynamic typing, or to discussion of research projects that students are working on. There will be few formal lectures.

Course grades will be based on a combination of class participation (20%), paper presentations (40%), and written critiques of papers (40%). For students who decide to do a research project, these percentages will be adjusted so that you can have up to 40% of your course grade based on the progress you've made on the research project (including credit for your in-class research presentation). These weights are subject to change.

This course is intended for graduate students at all levels as well as advanced undergraduates. Familiarity with programming language semantics and type systems (as covered in B522), or a willingness to pick up the material --- see background reading notes below --- is required, since most of the readings assume basic familiarity with these. If you are a first or second year Ph.D student interested in taking this course, but you have not yet taken B522, I would nonetheless encourage you to take this class as it will only be offered this once.

To pick up the background material required for this course you should read one of the following:

Auditors are welcome. If you wish to audit the course, you will be expected to do the readings, participate in class discusion, and give one paper presentation.


(Subject to change)

# Date Papers Presenter
1 M 9/6 Amal Ahmed
2 W 9/8 Lindsey Kuper
3 M 9/13 James Perconti
4 W 9/15 Eric Holk
5 M 9/20
  • Soft Typing
    Robert Cartwright and Mike Fagan.
    PLDI 1991
Rebecca Ingram
6 W 9/22 Adam Foltzer
7 FRI 9/24
1:15 to 2:30pm
LH 101
Xiaoyong Zhou
M 9/27 No class (ICFP)
W 9/29 No class (ICFP)
8 M 10/4 Eric Holk
9 W 10/6 Nilesh Mahajan
10 M 10/11 James Perconti
11 W 10/13 Zhou Li
12 M 10/18 Michael Adams
13 W 10/20 Roshan James
14 M 10/25 Xiaoyong Zhou
15 W 10/27 Michael Hansen
16 FRI 10/29
1:30 to 2:45pm
LH 101
Hongyan Wang
17 M 11/1 Adam Foltzer
18 W 11/3 Michael Hansen
19 M 11/8 Hongyan Wang
20 W 11/10 Abhishek Kulkarni
21 M 11/15 Rebecca Ingram
22 W 11/17 Zhou Li
23 M 11/22 Hongyan Wang
W 11/24 No class (Thanksgiving)
24 M 11/29
  • Guest Lecture: Sam Tobin-Hochstadt
    Evolving Existing Languages: The Typed Racket Experience
25 W 12/1 Lindsey Kuper
26 M 12/6
  • Blame for All
    Amal Ahmed, Robert Bruce Findler, Jeremy Siek, and Philip Wadler.
    POPL 2011
Eric Holk
27 W 12/8 Michael Hansen

Additional Reading

Amal Ahmed
Last modified: Tue Nov 30 09:27:26 EST 2010

Valid XHTML 1.0!