Project information

The main idea of the project is to work on a novel idea that tries to solve a problem related to dynamic program analysis for reliable concurrent software.

Projects can be one of the following two types:

  1. Read additional papers about a topic that interests you. Develop a new idea about it. Write a paper that synthesizes the background work; develops and designs an approach based on your new idea; and proposes to implement and evaluate it.
  2. Develop a new idea. Implement and evaluate a design based on this idea. Write a report about your design, implementation, and evaluation.
I encourage you to explore ideas that are high risk, high reward. That is, it's better to work on an ambitious idea that might not work, rather than an incremental idea that will definitely work.

Unless you're already familiar with a compiler or runtime infrastructure (see below for examples) in which you could implement an idea in this area, I suggest the first project as a better alternative, given the time constraints of the quarter (10 weeks). In either case, if you're interested, we can potentially work together after the quarter to develop your idea further and submit it for publication.

You can work alone or potentially with another person, depending on the scope of your project. I think the second project option is more likely to be suitable for working in pairs.

Timeline

I'll periodically request project proposals and updates from you. In about week 3, I'll ask you to send me a preliminary project proposal that describes your plans and progress so far, as well as any help or feedback you need. Describe the area that you're focusing on, additional papers you plan to read (I can help with this; ask me in advance), the idea you plan to explore (if you have one), and the infrastructure(s) you might use (for the second project option). Please contact me at least several days in advance for help with any of this, especially on choosing an area, choosing background papers, developing an idea, and choosing an infrastructure. We can meet or discuss via e-mail.

Infrastructures (most relevant to the second project option)

The papers we'll read (plus other papers on the course web page) use the following infrastructures (plus probably other infrastructures that I'm missing):