Final Projects

Potential projects

Here is a directory containing PDF files with descriptions of potential projects you may choose to do for this class. To access this list you will need a password, which will be announced in class.

Project assignment

Final project is one of the real perks of this course. My strategy with respect to final projects is designed to help you carry out a complete piece of independent research, from start to end, and publish it in a refereed workshop or a conference.

This class has a successful track records of producing publications. In 2007 (the first time this class was taught) two out of four project groups published their papers at the WIOSCA workshop -- this is a peer-reviewed workshop that deals with issues of operating systems on multicore processors. In 2008, four out of six groups published their final project papers. That year, the students travelled to China (all expenses paid via travel scholarships) to present their work. During the summer of 2008, many students continued working on research and prepared conference and journal papers. Here is a complete list of papers that originated from this course:

    Alexandra Fedorova, Viren Kumar, Vahid Kazempour, Suprio Ray, and Pouya Alagheband, Cypress: A Scheduling Infrastructure for a Many-Core Hypervisor , in Proceedings of the Workshop on Managed Multi-Core Systems (MMCS'08) held in conjunction with the 17th International Symposium on High Performance Distributed Computing (HPDC-17), 2008. (pdf)

    Andrea Tagliasacchi, Ryan Dickie, Alex Couture-Beil, Micah J. Best, Alexandra Fedorova, and Andrew Brownsword, Cascade: A Parallel Programming Framework for Video Game Engines, to appear in Proceedings of the Workshop on Parallel Execution of Sequential Programs on Multi-core Architectures (PESPMA), in conjunction with ISCA, Beijing, China, 2008. (pdf)

    Bo Chen, William Pak Tun Ma, Yan Tan, Alexandra Fedorova and Greg Mori, GreenRT: A Framework for the Design of Power-Aware Soft Real-Time Applications, to appear in Proceedings of the Workshop on the Interaction between Operating Systems and Computer Architecture, in conjunction with ISCA-35, Beijing, China, 2008. (pdf)

    Daniel Shelepov and Alexandra Fedorova, Scheduling on Heterogeneous Multicore Processors Using Architectural Signatures, to appear in Proceedings of the Workshop on the Interaction between Operating Systems and Computer Architecture, in conjunction with ISCA-35, Beijing, China, 2008. (pdf)

    D. Shelepov, J.C. Saez, S. Jefferey, A. Fedorova, N. Perez, R. Huang, S. Blagodurov and V. Kumar. HASS: A Scheduler for Heterogeneous Multicore Systems, submitted to Operating Systems Review, April 2009 Special Issue. (pdf)

    Micah J Best, Alexandra Fedorova, Ryan Dickie, Andrew Brownsword, Andrea Tagliasacchi, Alex Couture-Beil, Craig Mustard, Shane Mottishaw, Aron Brown, Zhi Feng Huang, Xiaoyuan Xu, Nasser Ghazali. Searching for Concurrent Design Patterns in Video Games: Practical lessons in achieving parallelism in a video game engine, submitted to EuroSys 2009. (pdf)

Although doing an independent research project seems challenging at first, fear not! I have experience in guiding students throughout the entire process, from the inception of the project topic to writing up the final results, so if you are willing to put time and energy into it, you will do well.

I will now describe the process involved in completing the project.

Choosing the topic

Choosing a good topic for the project is half the work. Choosing a topic involves:

  • Specifying the problem you will solve, or the question you will attempt to answer.
  • Motivating the problem: Who will care about the findings of your project and why?
  • Outlining your methodology:
  • How will you approach the problem?
  • What steps will you take?
  • Do you have the necessary tools and infrastructure?
  • Is this doable within the allotted timeframe?
  • Outlining the format of results:
  • What data will you show to convince the reader that you either solved the problem or answered the question?
  • If you saw that data yourself, would you be convinced?
  • The more work you do when selecting the project's topic, the more successful you will be.

    A good part is that in many cases, the work of choosing the topic and methodology will already be done for you. On this web site you will find references to several pre-packaged project ideas that you may choose to work on. Some of them will be very well specified: complete with step-by-step methodology and the format of final results. For these cases, completing a project will be not much different than completing a challenging project assignment for an undergraduate course. Other projects will be less well specified: they will give a problem and a motivation, but only some hints at the methodology.

    Finally, there is always an option to design a completely new project. In that case, I will work with you to formulate the problem, think about the motivation, flush out the methodology and present the results.

    The infrastructure

    We have rich computing infrastructure available for final projects (see "Machines" section of the web site). In addition, if you want to do architectural research, we have Simics hardware simulator installed, with several pre-made configurations. Chances are, you will find what you need for your final project. In any circumstance, before you begin the work, you must think very carefully about what hardware and software you will need and confirm with me that you will be able to access it.

    As expected, all computing infrastructure will be shared among the students. Most of the machines we have belong to my research group, so you will only be sharing them with a few grad students, not the entire department. Nevertheless, sharing implies that you will need to reserve time on machines (we do this via a Google calendar), and that you will need to be wise about planning your time.

    Working with a partner

    I highly recommend working with a partner. Several people can achieve more when they work together as a team. If you look at systems papers, you will see that almost all of them have several authors (unlike theory papers). That is because systems work is very time consuming, so it pays to work in a group.

    That said, a poor partnership can be deadly to the project. So choose your partner wisely. Make sure that you and your partner have similar work ethics, compatible schedules, and that you will be able to get along. I'd say that working with a bad partner is worse than working on your own. So use your judgement.

    Making progress

    One of the most difficult aspects of working independently is that you have to motivate yourself to make progress. There will be nobody standing behind your back and pushing you to do the work. To act as a "pusher", I'd be happy to set up regular meetings with you and your project group to discuss your progress, if that will help you stay on track.

    Writing up your results

    Writing is hard. It is not an easy task to write a good technical paper. Definitely not something your should do the night before it is due. Start writing early. You can already write introduction and motivation after you've chosen the project. You can write the methodology section once you've settled on the methodology. In fact, writing things down before doing them will help you come up with a better plan. Writing sharpen the thinking process, because you are forced to present things clearly and logically for the sake of them being understood by others. Here is a very good article on writing.

    Workshop submission

    The due date for your project will roughly correspond with submission due dates for several workshops on multicore computing:

    If you are interested in submitting your paper to any of these or other workshops or conferences, it's a good idea to let me know early, so I can help you plan your time accordigly.

    © Copyright 2007 Simon Fraser University