Most modules consist of the following components:
In general, to receive credit for completing a module (or an optional extension), you must:
Note that Module 11 (Applets) counts only as an optional extension since it has neither a quiz nor a required project.
Quiz dates and lab assignment due dates are listed on the course calendar. Quiz numbers and lab assignment numbers correspond to module numbers. For example "Quiz 1" is the quiz for Module 1. Your course grade depends upon the number of modules (and optional module extensions) that you successfully complete. See the late policy for more information about deadlines.
There are several advantages of dividing the course into modules.
As explained in the grading policy, even if you are working toward an A in CSE131, you need to complete only a subset of the optional extensions. To help you plan which extensions you would like to complete, the following table has a brief description of both the required projects and the optional extensions for each module. Details will be provided in the relevant assignments. The projects may change slightly during the semester, but this table should give you a general idea of what to expect.
Module | Required Project | Optional extensions | |
Depth | Breadth | ||
0. Introduction | call methods to guide a "robot" through buildings | ||
1. Methods | combining and manipulating images | background subtraction and replacement in images | |
2. Recursion | recursive mathematical functions, JUnit testing | divide and conquer line drawing | recursive patterns |
3. Iteration | iterative image manipulation | loop invariants (quiz) | image filtering |
4. Encapsulation | point and vector classes, unit testing | 3D line, point and vector | test-driven development (quiz) |
5. Modular Design | simple interactive graphics - roving eyes | cloning tool | timed animation |
6. Abstract Data Types | symbolic manipulation of polynomials | multiplication operator | graphing |
7. Array Structures | implementing a matrix class | Gaussian elimination | perspective projection of a 3D wire frame scene |
8. List Structures | manipulating pointer-based data structures | more sophisticated manipulations | |
9. ADT representations | map as ordered list and binary search tree (BST) | BST delete | binary search in an ordered array |
10. Class hierarchies | video game | ||
11. Applets | programming contest |