Harvard SEAS Logo

CS 252r: Advanced Topics in Programming Languages


  Course description
  Reading papers
  Presenting papers
  Research projects
  Schedule
  Additional reading

HARVARD SCHOOL OF ENGINEERING AND APPLIED SCIENCES

CS 252r: Advanced Topics in Programming Languages

Research projects

A key component of this course is a significant research project, to be undertaken in pairs or individually. (Larger groups are permitted with the instructor's approval.) The goal of the final project is to develop a deep understanding in one or more of the areas studied in this course, and to conduct original research. Students are free to choose their partner, and their research project. Students must submit a proposal for their project, submit a progress report, give a project presentation, and submit a final project report.

Deadlines

  • Wed Oct 7: Project proposal due before class
  • Mon Nov 9: Project update due before class
  • Mon Nov 30 and Wed Dec 2: In-class presentations
  • Wed Dec 9: Final projects due

Proposal format

Project proposal due Wed Oct 7, before class.

Your proposal should be a 2-3 page document that includes sections on:

  • A summary of your project;
  • Background and related work (specifically, describe what is novel about your project);
  • A brief description of your proposed approach, and any other thoughts on how you will proceed;
  • A specific timeline of milestones that you intend to accomplish for your project. This timeline should make clear what you intend to accomplish by:
    • the project update deadline (Nov 9);
    • the project presentation (Nov 30, Dec 2);
    • the end of the project (Dec 9).
    Remember, you will need time to write up the project report.

Project presentation

Project presentations will be done in-class on Monday November 30th.

Each project will have about 30 minutes. Aim for a 20 minute presentation to allow sufficient time for questions and discussion. You are not expected to have completed the research project by this date, but you are expected to have made tangible progress. The talk should be aimed at providing an overview of the problem, the outline of your approach to addressing the problem, and preliminary results.

As with the presentations throughout the class, your aim is not to explain every detail, but to communicate key points clearly.

Final report

Final report due Wed Dec 9.

The final report will be in the style of a research conference paper, much like the papers we have been reading during the semester. An appropriate structure for the report would include an introduction, background/overview, technical content (e.g., presentation of the language and theorems), related work, and conclusion.

Email me a PDF of your final report by the deadline. The paper should be no more than 12 pages in ACM SIGPLAN format. I strongly recommend using LaTeX to write your final report, even if it means learning LaTeX (which you will need to do sometime soon anyway). I'm happy to help with LaTeX questions.

Project ideas

Here are some suggestions for research projects, to give you an idea of appropriate topics for your project. Projects must have some connection to CS252, but can incorporate ideas and techniques from other areas.

  • Identify a common pattern or problem in systems you have experience with. Explore language mechanisms to facilitate building such systems.

    See the additional reading list for more information about domain-specific languages. The following are some specific areas in which I've encountered some common bugs and/or coding patterns that language mechanisms may help address.

    • Implementation of cryptographic algorithms.
    • Implementation of machine learning algorithms.
    • Creation of graphical user interfaces.
    • Composition of software licenses.

  • Security-policy case study: choose a significant system, and express as many of the security requirements of the system as possible using one of the policy formalisms we have studied (e.g., the decentralized label model, declassification and erasure policies, edit automata, etc.). Which requirements can be captured precisely? Which requirements can be approximated? Which requirements cannot be captured? Of the requirements that cannot be captured, is there a policy formalism that can precisely and intuitively express the requirements? Can these requirements be efficiently enforced?
  • Implementation case study: implement a significant system using one or more of the language mechanisms/abstractions/implementations considered in class. Some of these systems include Jif, Flume, HiStar, Fabric, Flapjax, Swift, nesC, Regiment, Atomos, and X10. Using systems that we haven't examined in class is also possible. The case study should exercise interesting features of the language.
  • Extending enforcement of information flow. Do techniques for dynamic information flow-control extend to richer language mechanisms, such as non-local control flow? What about techniques for enforcement in dynamic languages? How efficient are the extensions?
  • Design and implement a security type system for exceptions that tracks what exception handlers are available at a given program point. Compare and constrast this with Myers' path maps: are they equivalent systems? how does your type system affect security level inference?
  • Comparative evaluation: compare the performance of two or more systems/mechanisms.
  • A literature review on some topic related to this course. A literature review is expected to bring a new perspective to the existing literature, and may be at least as much work as research on an open problem. Literature review projects should be done individually.