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:
- Goals are the desired learning outcomes from working through the module.
- Lectures and on-line resources provide a conceptual foundation.
- Practice problems (with on-line solutions) help you develop and test your conceptual understanding.
- Programming projects (labs) reinforce your understanding and develop your skills in the practical application of the concepts.
- Optional module extensions (usually at least one per module)
help you broaden and deepen your understanding and further develop your skills.
- Quiz and exam questions test your understanding.
- Studio session replace lecture in an active learning setting.
In general, to receive credit for completing a module (or an optional extension), you must:
- Earn a score of at least 85% on the programming project, and
- Earn a score of at least 85% on the quiz OR exam questions related to this module.
- Attend and receive credit for participating in studio.
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.
- The logical organization of the course is explicit.
- You can easily keep track of what you have learned and where you need further work.
- The flexibility to choose among the optional extensions lets you allocate your time in the course according to your interests.
- 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.
- 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.