USC CSD Home
 

The Class Project - CSCI 558L, Spring 2009

 
The class project is intended to expose you to programming and understanding large software subsystems. Some of this work is quite difficult; be prepared to spend a fair amount of time on these projects, and get started early.

There are several steps involved in the process:

  • Selecting a project
  • Designing the project
  • Implementation
  • Project report
  • Demonstration

Important deadlines:

 
Project Selection
The first step in preparing for the class project is deciding what project you want to do, and how you want to do it.

You can do a project individually, or in teams of two (larger teams are not allowed). Be aware that:

  • Team projects often have big payoffs, but in some cases, one student ends up carrying more programming load.
  • With team projects, each group member must e-mail a commitment form (please modify with your information) to the instructor and copy your e-mail to your partner. Basically, you have to agree to getting the same score as your partner no matter what happens.
You are welcome to bring your own project (with the approval or the instructor). You can also select one from the list of suggested projects. You should also look at the list of selected projects just to see what others have chosen. (Please note that you may choose the same project as others; although all teams must work independently when it comes to design and writing code.) You should discuss with the instructor on your project selection during his office hours and through email. Doing so will help you understand and narrow down the scope of your project appropriately.

You should send your project selection to the instructor via a text e-mail to the instructor by 11:45pm, 3/11/2009. In your e-mail, you should include the following:

  • A one paragraph (no more than 10 lines) description of the project
  • Who your partner is (if any)
If you have a partner, only one of you needs to send the project selection e-mail, but you must copy your partner on that e-mail.

The main parts for your project must be implemented in C/C++ (sorry, no Java). An exception may be made for Java for large Open Source projects written in Java. If you would like to make modifications and introduct new features to such a system, please talk to the instructor as early as possible.

 
Project Design
The next step of the project is to design the project software. Typically, most projects will involve modifying an existing large piece of software, and demonstrating the modifications. You will need to read the background material relevant to your software, read as much of the source code, understand the modularization of the software, and decide where you are going to make the modifications etc. You may reduce the scope of your project at the time if you think that you were not realistic in your proposal. In general, it is better to be conservative and realistic at this point given that you have done some research about your project.

The output of this step will be a small design document (in PDF format) in which you will:

  • list relevant reading for the project (if any)
  • briefly discuss how the software system that you are working on is structured
  • list all the software changes that you expect to make
  • describe what you are planning on demoing, the more details the better
  • list your development resource needs (i.e., how many machines and do they have to be exclusive for your project)
  • specify the implementation assignment of each member if you are doing a group project
You must send an e-mail to the instructor and attach your project design document by 11:45pm, 4/2/2009. If you have a partner, only one of you needs to send this e-mail, but you should copy your partner on the e-mail.

After you have submitted the design document, the instructor may negotiate with you to increase or decrease the scope of your work. This is necessary to make sure that each student does projects of comparable difficulty.

If you are running Windows and you don't have anything that generates PDF files, you can give the free bullzip PDF printer a try.

 
Implementation
Based on your design document, you will start implementing and debugging your system. Use the following strategies in the implementation phase.
  • Implement your project with multiple shortterm goals to gradually reach the final goal.
  • Solve problems that were not expected in the design phase.
  • Find resources from the web and through communications.
  • Prepare to spend significant amount of time in debugging and testing.
 
Project Report
The project report is a summary and documentation of your project. It needs to be complete. Your report should contain enough information so that others (who have taken CS 558L) can understand what you have done and reproduce your work and demo, after they have read and understand all the background materials in your report.

You are required to submit your project report tarball after your demo. For a team project, only one team member needs to submit. It is due 11:45PM, 5/9/2009.

Your report (please name it "project.pdf") should include the following contents:

  1. Briefly describe the goal of your project and background information, such as the hardware and software you have used.
  2. Describe your implementation details. For a team project, specify which part is implemented by each member.
  3. Have you met the goal outlined in your design document? If not, why? and what is the final result of your project? Describe any deviation from your design document, if applicable.
  4. If you encountered difficult problems during your progress, briefly describe them and your solutions.
  5. Describe, in detail, how to unpack, apply patch, build, and install your project (and integrate it into the system).
  6. Describe what was demonstrated during the demo. If you have written some scripts, please explain what each of them do. Describe, in detail, how to run all the steps in your demo. If you have your own configuration file, please explain the file format, possible values of all fields, and what values to use in each step of your demo.
  7. List all related resources and references, such as papers, RFCs, manuals, online tutorials, hardware and software systems, etc.
If you are modifying some large source codebase, please do not include the source code but only include a patchfile in your submission. For information regarding creating a patchfile, please see slides 22 and 23 of lecture 4. Please give information about where to download the large source codebase (with precise versioning information).

If you are starting from scratch, please include your source code in your submission. You may include an optional README file to document your code.

Finally, you should tar and gzip your report, patchfile or source code that you wrote, scripts you used in your demo, and call it "project.tar.gz" and submit it electronically.

If there are things that were broken during the demo and you have fixed them in your final code, please mention them in your project report.

 
Demonstration
The last step is demonstrating your project. Each project has 45 minutes in demo. You will follow the process below in your demo.
  • Use up to 10 minutes to set up your demo.
  • Use 5 minutes to describe your demo.
  • Use 30 minutes to show your demo and answer questions.
The dates for the demonstrations will be in the last week of the semester. Time slots for demonstrations can be viewed here.
 
Grading
Design document:   10%
Demonstration:   65%
Project report:   25%

You get no points for submitting the project selection email, but you will get a 10% deduction if you do not submit the email by the deadline.

We will assign letter grades to various parts of your project. The conversion from a letter grade to a numeric score (for the project) is done according to the following table:

Grade Points
 50
A-  44
B+  36
 30
B-  24
C+  16
 10
C-   4
  0
 

[Last updated Sat Sep 19 2020]    [Please see copyright regarding copying.]