Students will need to implement the following operations:
Optionally, you can provide design ideas and/or implementations of some classes for students to use. When we originally gave this assignment we asked students to implement a priority queue class. Since most books provide some implementation, and often an efficient heap-based implementation, we now provide the priority queue class and expect students to use it without understanding (for the purposes of this assignment) its implementation.
We have given this assignment with no suggestions for any design or problem decomposition and with some minimal hints for some classes that might be useful. We stress that code that's used in the huff/unhuff (compression/uncompression) programs should not be duplicated in two different source code files, but factored into common functions or classes that are used by both programs.
We also have provided several kinds of solutions (currently these are only available in C++).
We use this solution in a later course to discuss its drawbacks and motivate design patterns.