On this page:
Chosen Projects



The purpose of the project is summarized in General Information.

Preliminary Deadlines



Draft to Mr. Fong


Final version

approval of topic




13 Feb 2015

proposal memo


20 Feb 2015


27 Feb 2015

project report


31 Mar 2015


7 Apr 2015

Stage 1 Pick a topic that you and your partner consider interesting in the context of this course. Here a "topic" refers to three mutually exclusive possibilities:
  1. You choose a paper that describes a domain-specific language in your research area. The paper should be reasonably short, meaning an expert in PL should be able to read it in a couple of hours.

  2. You pick a paper from a mainstream programming language conference. This option should especially interest PL or FM PhD students but is open to all students in class.

  3. You use a paper from the list at the end of this page. In order to provoke some searching and thinking on your side, the list will become available only two days before the decision deadline.

Get approval by 13 February 2015 for your chosen topic. Send me an email that (1) indicates which option you chose and (2) summarizes the topic in your words. CC your project partner.

Stage 2 A first reading of a technically complex paper should leave you with a shallow understanding and a desire to understand certain aspects in more depth. The best way to express this desire is to articulate your understanding and to phrase your remaining questions in this context. These questions tend to tell you which "tools" (mathematical techniques, implementation, measurements, etc) you will need to use to find answers.

Write up a one-page memo in journal-paper style that (1) summarizes your current understanding of the paper, (2) states which aspects of the paper you would like to understand in depth, and (3) explains which tools (Redex and otherwise) you wish to use to model the paper’s insights so that you gain the desired insight. Researchers tend to think of this memo as a proposal.

You must submit a printed draft memo by 20 February 2015 to Andy Fong and make an appointment to meet with him for feedback on your write-up. Email me your final PDFed proposal memo by 27 February 2015 at 1pm.

Stage 3 Just do it! There is nothing like working on your chosen topic. Experience the feeling of understanding what the author really meant; what the author could have done. – Do not hesitate to consult with me if you’re stuck!

Stage 4 Report on your experience in a two-page "result" memo. The revised memo should consist of four parts: (1) the fixed-up summary from the "proposal" memo; (2) a revised and concrete set of questions that you tackled; (3) a description of the approach used to answer them; and (4) your answers (abstractly, because you have a limited amount of space). Do not write an essay on what you did in the past two weeks but imagine yourself writing a final report for a scientific grant that you obtained from a funding agency.

To format the paper, use (1) an 11-point font, (2) 1.5in margins all around, (3) a header that specifies the paper title and the authors of the memo, (4) no section or subsection headings. If you wish to label a passage, use the so-called paragraph style, which boldfaces the initial phrase of a paragraph.

You must submit a printed draft memo by 20 March 2015 31 March 2015 to Andy Fong and make an appointment to get feedback from him. It is common that new content flows into the final draft; if you have any doubts about the wording of the new content, ask Mr. Fong before you submit.

The revised memo is due, in PDF form, on 27 March 2015 at 1pm 7 April 2015 at 5pm. Email it as an attachment together with one Redex file (if needed). Both file names should use the last names of the partners, plus a suitable suffix (.pdf and .rkt).

Stage 5 Prepare a joint 40-minute whiteboard lecture that describes (1) the paper’s problem, including the motivation, and background, (2) your questions, (3) the approach you used to answer these questions, and (4) the insight you gained.

Divide the talk between the two partners but each partner should be prepared to answer questions about the entire talk.

Grading Your "deliverables" are: (1) the "proposal" memo, (2) the "report" memo, (3) the lecture; and (4) an appendix that documents your work (usually a Redex model).

Your project grade consists of four different pieces:
  • the initial formulation of a question concerning the topic;

  • the description of your answer or attempts, i.e., the ’revised memo’;

  • the in-class lecture; and

  • the Redex model in support of your answer

Both memos are judged at two levels: the content and its English (unit-level organization, style, grammar, typos). Similarly, the lecture is about both content and oral communication skills of technical matters. Finally, the Redex model must support the conclusion and must show that you have understood the basic modeling techniques.

A note on writing or " less is more." Concise language is superior to a lot of weasel words and paragraphs. The two limits (one and two pages, respectively) are upper limits not lower limits. – Good technical writing focuses on the essence of a topic and avoids emotional verbs (e.g., "believe") or judgmental adjectives (e.g., "wonderful"). – Start a unit of writing with a ’thesis’ and use the rest of the unit with support of the thesis. – Also, use active voice over passive voice. Connect sentences by starting sentences with idea-words near the ending of the preceding one; then introduce a new one. Doing so is accepted American style of writing and technical writing. – For a short elegant book on writing, see Strunk and White’s "Elements of Style" (3rd edition).

Chosen Projects




Project Title




A Nanopass Framework for Compiler Education





FACTORIE: Probabilistic Programming via Imperatively Defined Factor Graphs





Green-Marl: A DSL for Easy and Efficient Graph Analysis





Simply Easy! An Implementation of a Dependently Typed Lambda Calculus





Operational Semantics for Multi-Language Programs





L3: A Linear Language with Locations





A Model-Learner Pattern for Bayesian Reasoning





Static Prediction of Heap Space Usage for First-Order Functional Programs





Higher-Order Symbolic Execution via Contracts





Using HCI Techniques to Design a More Usable Programming System





Frenetic: A Network Programming Language