|
|
|
|
The final 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
|
|
Project Selection
|
The first step in preparing for the final 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 (I will
not permit larger teams). Be aware that:
- Team projects often have big payoffs, but in some cases,
one student ends up carrying more programming load.
- With team projects, both group members submit a signed
commitment form.
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 my approval).
You can also select one from the
list of suggested projects.
You should also look at the
list of selected projects by other
students and avoid picking up the same ones.
You should discuss with me on your project selection during
my office hours and through email.
Doing so will help you understand and narrow down the scope
of your project appropriately.
You should decide on a project by the specified deadline and
notify me by an email. It should have the "Subject:" line
saying "Project Selection" and the body containing:
- A one paragraph (no more than 10 lines) description of the project
- Who the team members are
|
|
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.
[BC: Added 3/28/2007]
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 (≤ 3 pages) design
document 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
- [BC: Added 3/28/2007]
list your development resource needs (i.e., how many machines
and do they have to be exclusive for your project)
- For a team project, specify the implementation assignment of each member.
Email your project design document to the instructor as a PDF file.
Put "Project Design Document" in the "Subject:" line.
For a team project, the sender should CC his/her teammate,
so that I know both of you agree on the document.
After you have submitted the design document, I 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.
|
|
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
|
[BC: Section updated 4/28/2007]
The project report is a summary and documentation of your project.
It needs to be complete.
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,
print PrintDueDate($report_due,$report_ext_due) ?>.
Your report (please name it "project.pdf")
should include the following contents:
- Briefly describe the goal of your project and background information,
such as the hardware and software you have used.
- Describe your implementation details. For a team project, specify
which part is implemented by each member.
- 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.
- If you encountered difficult problems during your progress,
briefly describe them and your solutions.
- Describe, in detail, how to unpack, apply patch, build, and install
your project (and integrate it into the system).
- Describe what was demonstrated during the demo. If you have written
some scripts, please explain what each of them do.
- 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 include a patchfile
in your submission. For information regarding creating a patchfile,
please see
slide 35 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,
scripts you used in your demo, and call it "project.tar.gz" and
submit it electronically.
|
|
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.
Available time slots for demonstrations
can be viewed at here.
|
|
Grading
|
Design document:
|
| 10%
|
Quality of work:
|
| 20%
|
Quantity of work:
|
| 20%
|
Demonstration:
|
| 20%
|
Project report:
|
| 20%
|
Coding clarity:
|
| 10%
|
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.
[BC: Added 4/30/2007]
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
|
---|
A
| | 50
| A-
| | 44
| B+
| | 36
| B
| | 30
| B-
| | 24
| C+
| | 16
| C
| | 10
| C-
| | 4
|
|
|
|