UW Home     CSE Home   Announcements    Message Board    Contact Info 

 
 
 

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.