CSE 142 Project Reports
Written Report Guidelines
Each student should complete a written report about each project individually.
The report helps you communicate technical ideas, while demonstrating your
knowledge about the design, development, and testing of the project software.
Your report should contain the information outlined below. Please use these
guidelines
to prepare it.
The report is an important component of the overall project, so you
should take the time to do a careful and thorough job. You should be complete,
but please keep your writing focused and succinct. A report of only
a couple of pages is fine if it covers all the points, and 5 to 8 pages of
text should
normally
be
plenty.
Much more than
that, using normal sized text (excluding any diagrams or figures), is usually
inappropriate - edit your report to emphasize the key points.
Technical writeups are often part of software development in the "real world".
Ideally, after reading a design report, the reader should know:
- What the program does
- How to use it - either how to run a complete program or how to use a piece
of software as a component in another program
- How the program is designed and structured, and the major decisions that
led to that design
- Places that had bugs (or still do) or required major redesign during the
implementation (code that had or has problems is a likely source of future
concerns)
- How the code was tested and how you convinced yourself that it works as
expected
You should structure your report as follows. The report should be formatted
so it is easy to find the different information.
Introduction
State the purpose of the project and give a brief overview of the program
for someone who might be unfamiliar with it.
System Operation
Describe how to use your system. Assume that the person using the
system has no familiarity with your code, but does know how to use an environment
like DrJava or Java command-line tools. Describe
how to run the program or how to create objects and interact
with them (whichever is appropriate). This part of the report should be
a "user
manual" that
describes the external interface of your program, without describing internal
implementation details.
System Description
Describe the structure of your system. What are the key components
and how are they related (diagrams can be useful here). What classes
did you design and implement? What are the important properties and
responsibilities
of these classes? Try to describe the
motivation
behind
your class design and examples of key algorithms and methods. You may
find it helpful to include code examples or to explain key algorithms
using English or Pseudo-code, however don't just paste in tons of code.
Describe any code that you obtained from other sources (starter code,
etc.)
that you used as part of your project, and describe any significant
modifications that you made.
Remember that the goal of this part of the report is to explain
the key ideas and decisions in your implementation, not to give a method-by-method
explanation of all the details.
Process
Describe how your team designed and implemented the project. What were the
interesting or challenging parts of the work? Did you need to make any significant
changes to your original design or implementation because of lessons learned
while doing it? If you added extra features to your project beyond the basic
requirements, describe what you learned from the experience, how you learned
about any concepts or algorithms involved, and your experiences getting
them to work.
Describe your experiences with pair programming.
Did the pairing work well? Where
and when
did you
do the
work?
How did each
of you use your unique skills and abilities to contribute to the
project? Assess the relative contributions to the
project from each member of the team.
Testing and Evaluation
Describe how you tested and evaluated your application. If your application
does not meet the project requirements or has other problems, please note
these differences. Include
representative
test cases and output, if appropriate. Evaluate the quality of your code
- is it readable? Is the class design reasonable (coupling and cohesion)?
What, if anything, would you do differently if you did the project over
again?
Conclusion
What were the most important parts of this project and what did you learn
from it? This could include, among other things, technical issues, development
processes, or your experience working with a partner.
Remember, you will be graded on the clarity and writing style
of your report. Please be complete in your descriptions, but remember
that
complete does not mean verbose.
|