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 of constants or some specific number of functions or classes, since individual programmers will naturally come up with different designs for the same project. However, there are design techniques that every good programmer uses. You learned many of these technqiues in CMSC 201. They include
Your design will always be due before your program. Your program will be checked to be sure that it follows the design that you submitted. It may differ from the design in only minor ways. For example, you may have decided to break a function into two functions once you began developing your code. Or you may have added a parameter to a function's interface.
Design is one of the most important aspects of programming.