Notes on Programming Assignments
Grading
Your grade on a programming assignment will be based on the following criteria:
Date:
Group Number:
Team members:
1. Status of your project
Tell us whether your program works perfectly or not. If not, you should
2. The high level structure of your code
Describe any classes/interfaces and data structures you used in your implementation. Express the relationship among the classes in the form of a diagram and show how the classes constitute a working component. You may also want to show us the control flow of the program. It should never be necessary for us to look at your code to understand how it works (as opposed to understanding how it is implemented). If you find that you have to read the code to understand a method or variable, then your description is inadequate.
3. Design choices
A working program is the result of many design decisions, which to a large extent determine the efficiency and extensibility of your implementation. However, these design decisions - how you break the problem into subproblems, why your code is organized this way, why this class or interface was introduced, what that method does - are usually not reflected in the final code, which consists of very low-level, detailed declarations and statements. Describe and justify all the design decisions (other than the ones we specified in the problem statement) you made along the way as well as the special features of your implementation.
4. Answers to questions
In some assignments, we will ask you to document certain details that are specific to the implementation.
5. Testing strategy/test cases
In software development, a large fraction of the time is spent on verifying the correctness of the software. Since techniques like formal methods are usually too expensive to use, software developers verify the correctness of their programs by performing an extensive testing on it. We expect you to learn how to design test programs that allow you to test your code thoroughly. Show us each test program you wrote and describe the aspect(s) of your code that each test case attempts to check.
6. Conclusion
Briefly tell us what you learn from the assignment. In particular, tell us