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.
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:
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:
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.
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.
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.
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.