Term Projects

Your term project in this course is intended to give you a chance to pursue more self directed work that explores and applies the material from the course in greater depth. For any undergrads in the class, this may mean implementing a nontrivial project or technique from a paper (I can provide some suggestions). For grad students, this should mean identifying a research problem to explore and tackle. In either case, the goal is that the outcome be worthy of adding to a CV/resumé. You may not complete the vision of the project during the course itself, but you must complete a substantive component of it that can be evaluated as to whether the idea/technique shows promise.

Term projects may be completed by individuals or pairs.

Project Proposals

Before starting a project, you must submit a project proposal and have it approved by me. I recommend that you explore the different topic areas on your own in order to find something that you are interested in. It will be beneficial to begin investigating that topic even before we cover it in class in order to provide yourself enough time to get advice or help from me.

A good research proposal should have a few ingredients:

  1. A clearly stated motivation. What is the problem that you are attacking? Why do you believe that this problem matters? What does addressing this problem accomplish?
  2. A discussion of existing work. What techniques have already been applied to the problem? Why are they undesirable or insufficient for your needs?
  3. An objective. What exactly are you trying to accomplish? How does it address the problem given in your motivation? How does it fit a need that is not already met by the prior solutions?
  4. An angle of attack. What techniques do you plan to use to solve the problem? Why do you believe that this approach will address the problem? Why will it avoid the inadequacies of exiting works? What infrastructure do you need? What exists that you can make use of? What will you need to build yourself in order to see results?
  5. A metric for success. How do you intend to measure success? Are there benchmarks that you can or need to make use of? Do those benchmarks capture what you want? Will your metric show that you achieved your objective? Will your metric show that you perform better than existing techniques? Are there trade offs that need to be assessed? Are there both qualitative and quantitative measures that can/should be used?
  6. An assessment of risks and contingencies. What are the possible things that can go wrong? How can you plan your project so that you can tell whether they will work as quickly as possible? How can you work around problems in one area (are there fallbacks)?
  7. A list of scheduled milestones that you can track to know whether you are making appropriate progress. For instance, what should you have accomplished by Friday of each week between your proposal date and the end of the semester in order to ensure successful completion and guarantee that you can write a good report? This can also help you to form realistic expectations about what is achievable within the time you have.

You should upload a proposal containing these main sections along with a title and the names of your group members to CourSys by the proposal due date. You should also schedule a time to meet with me regarding your proposal in order to get feedback and determine whether or not you need to modify your plans in order to have an approved project that you can start on.

If you are stuck in terms of finding something interesting, you might consider this advice from a few researchers at Facebook and UCL: From Start-ups to Scale-ups: Opportunities and Open Problems for Static and Dynamic Program Analysis.

Term Project Reports

By the end of the semester you also need to submit a term project report. This should carefully lay out in greater detail the problem that you worked on as well as the progress you made and possible future directions. You should treat this like the first draft of a paper that could be submitted to a conference or workshop.

If you put good effort into your proposal, you'll find that both completing and writing your paper becomes significantly easier. Where your proposal defines a plan for what you intend to do, your paper should discuss what you actually achieved. Fundamentally, the same questions come into play and must be answered. In answering these questions, you should demonstrate the knowledge and skills that you acquired within the course. Show me that you learned something and that you can put these skills to use while thinking critically.

There is no minimum paper length, however, it is unlikely that you can successfully write what you need to in fewer than four full pages. Most students require six pages in order to adequately include clear explanations of the problem, the methodology, the evidence, and its interpretation. The maximum paper length is ten pages.

For convenience, I recommend using the USENIX paper templates. If there are multiple people on your team, you can collaborate via Overleaf. SFU already has Overleaf licenses for all grad students, so you can simply register using your school email address.