CSE131 Modules

CSE131 is divided into 12 modules that correspond to the major topics of the course. The modules are listed in the main menu of the course web site and will be covered in order, as listed on the course calendar. When modules are available early, you are welcome to work ahead. However, please keep in mind that the content of assignments and their due dates are subject to change until they are actually assigned.

Most modules consist of the following components:

In general, to receive credit for completing a module (or an optional extension), you must:

The introductory module (Module 0) does not have a quiz, so completing the programming project (Lab 0) is the only requirement for that module. Most optional extensions are projects, but some are purely conceptual and have an associated quiz (as marked in the table below). The specific requirements are listed in each of the module descriptions.

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.

  1. The logical organization of the course is explicit.
  2. You can easily keep track of what you have learned and where you need further work.
  3. The flexibility to choose among the optional extensions lets you allocate your time in the course according to your interests.
  4. Because the grading structure is tied to the number of modules and extensions completed, you have the flexibility to control the total amount of time you spend on the course in accordance with the grade you are working toward.
  5. Because assessment (quizzes and exam questions) is linked to specific modules, you can focus your exam preparation on those areas where you had difficulty on the quizzes.

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
If you have any questions or concerns about the structure of the course, feel free to ask.