This course will continue to emphasize techniques for good program design.
You will never receive explicit instructions in a project specification about how to design the program. For example, you will never be told there should be some minimum number number of methods or classes, since individual programmers will naturally come up with different designs for the same project.
You are expected to use the techniques learned in CMSC 201 and the object-oriented techniques discussed in this course and not just write something that runs.
To get you thinking about your design and implementation before actually writing any code, your project design assignment will pose (hopefully) thought-provoking questions about your intended design.
Your design assignment will always be due before your program.
Your design grade will be based on how well your answers exhibit an understanding of good OO design and how well you actual implementation follows your design. Your implementation may differ from the design in only minor ways. For example, you may have decided to break a method into two methods once you began developing your code, or you may have added a parameter to a method's interface.