Topics in Programming Languages and Systems:

Tables and Humans

Shriram Krishnamurthi

Fall 2021


We will focus on two topics: language (especially type) support for programming with tables (the primary focus of the course), and human-factors in programming languages (the secondary focus). The two will be done sequentially, in that order: tables until about mid-March, human factors afterwards. There may or may not be overlap between the two parts.

The course will include a project component to apply and/or implement the more theoretical content. Projects, which will be done either in groups or solo, will be designed in conjunction with me. The project will be done over the last month of the course, and will therefore cover the material on tables and related concepts.


Students must have taken cs173 or the equivalent. You must be comfortable with and interested in all the material on type systems that was covered there. Frankly, otherwise, you will have a rather miserable time in this course.

The human-factors portion will be fairly self-contained, and has no prerequisites (though having studied something about these topics won't hurt, and if you are a human, that may give you some insight).


The course meets I hour (Tue/Thu, 10:30-12:00), on Zoom.


Readings will be maintained on this spreadsheet. Please make sure you are viewing the current version.

Dates on the calendar reflect the due date, not the start date, for that material.

The reading list was created by Ben Greenman, Kuang-Chen Lu, and Siddhartha Prasad. Thank you!


Please register for the course's Campuswire instance. You will need the code 4378. Most importantly, this will be my sole means of notification, so if you don't register, you will not hear about relevant updates.

I will minimize pushing things to by email through Campuswire. I will only push to immediate email for emergencies. Therefore, either check Campuswire regularly (especially frequently early in the semester, as we're settling logistics) or set up notifications.

Class/Grading Expectations

If it makes sense for you, I encourage you to take the course S/NC. However, you are welcome to take it for a letter grade. (In particular, if you are a master's student, you probably should take it for a letter grade.) If you take the course for a letter grade, to do well: (a) do expect that I will hold you to a high standard; (b) your project should be somewhat challenging and executed well; and (b) talk to me around March 1 to see how you are doing so far and what you need to do if you are not.

The format of this class may not match those of seminars you have taken before, so please make sure you understand my expectations. Many seminars have several papers per class, each of which is read by one person and presented to the class. In contrast, here, we have only one paper per day (most of the time), which everyone is expected to have read. The model is: low volume, high engagement.

Concretely, I expect that you come to class having finished the reading for that day. You are not coming to (passively) listen; you are coming to actively discuss. We will consider different formats for how to structure the discussion, depending on how many students we end up with. But no matter what, you still need to come to class having finished the reading.


It is perfectly okay to struggle with the papers here. They are cutting-edge research, and considered difficult enough that they were accepted by other researchers at major conferences. Even though the authors worked hard on the exposition, they were doing so for peer experts, which you on the road to becoming but haven't become yet. (On some of these topics, even I am not an expert.) You can expect some pages to take an hour or more to get through!

Unlike courses with strict non-communication policies, here you are welcome to discuss as much as you'd like. Feel free to post questions on the message board if you're stuck at some point in a paper: e.g., “I can't figure out how the subtyping rule works because ...”. Of course, there is no guarantee anyone will read or respond in time, so don't become dependent on this. But discuss all you want. Except when indicated otherwise, there are no restrictions on discussion.


All standard Brown policies will apply. Please refer to the Fall 2020 cs173 syllabus and assume the same rules hold here unless stated otherwise. Basically, don't do anything dumb or illegal.