CSE 143 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
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 at most 5 or
6 pages of text should normally be needed. Much more than that, using
normal sized text (excluding any diagrams or figures) is usually inappropriate
- edit your report to emphasize the key points; don't describe every
line of code.
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. Be sure to mention
in appropriate places any extra features in your program that
go beyond the basic requirements.
Introduction
State the purpose of the project and give a brief overview of the program
for someone who might be unfamiliar with it.
How to Run the Program
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 to run a Java program. 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, including how to
use the mouse and/or keyboard to interact with it, without describing
internal
implementation details.
System Implementation
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? How
do they interact? Try to describe the motivation behind
your class design and examples of key algorithms and methods. In hindsight,
is the class design reasonable (coupling and cohesion)?
You may find
it
helpful
to include key 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
main ideas and decisions in your implementation, not to give a method-by-method
explanation of all the details - that's what JavaDoc and code comments
are for.
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.
What lessons did you learn from the experience?
Testing and Evaluation
Describe how you tested and evaluated your program. If your code
does not fully 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?
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, as well as the technical content. Please be complete
in your descriptions, but remember that complete does not mean verbose.
|