By the end of this course you should have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Java, and have a basic understanding of how one might analyze programs for correctness and efficiency.
This course is a prerequisite for all upper level Computer Science courses. In this course we do not assume that you have had any previous computer programming experience. If you have had extensive previous experience you might consider taking cs52 or cs62 instead. Please discuss this with any member of the department's faculty if you feel you fall into this category. The required textbook for the class is the Java: An eventful approach, by Kim Bruce, Andrea Danyluk, and Tom Murtagh. We've placed an order for the book at Huntley bookstore so you should be able to find it there.
Any topics or assignments that are listed for dates in the future should be taken as (potentially very) tentative. Anything for a date at least 2 days in the past will accurately reflect what actually happened in the class.
The readings are to be done for that day's lecture. The book problems are to be done after that day's lecture (i.e. you should be ready to discuss them in the following lecture).
Week | Date | In class | Readings for class | Book problems | Assignments due |
---|---|---|---|---|---|
1 | (Wed) 9/2 | introduction java basics, graphics event handling | 1.9.3 | ||
(Fri) 9/4 | instance variables, methods, parameters lab 1 | Ch 1, 2 | 1.6.2, 2.7.2 | ||
(Fri) 9/4 | lab 1 - no clicking | ||||
2 | (Mon) 9/7 | parameters, variables numbers, constants | Ch 2, 3 | 2.7.7, 3.11.2, 3.11.5 | lab 1 due 11PM |
(Wed) 9/9 | conditionals, booleans lab 2 | lab 2 handout Ch 3, 4 | 4.2.2 | ||
(Fri) 9/11 | more conditionals colors, random numbers | Ch 4 | 4.8.8 | ||
(Fri) 9/11 | lab 2 - laundry | design for part 1 of lab 2 | |||
3 | (Mon) 9/14 | primitive types classes, constructors | Ch 5 | 5.7.2, 5.7.6 | lab 2 due 11PM |
(Wed) 9/16 | classes, constructors methods, parameters, variables lab 3 | lab 3 handout Ch 6 | 6.8.4, 6.9.1 | ||
(Fri) 9/18 | methods, parameters, variables | Ch 6, 8 | 8.6.2, 8.6.3 | ||
(Fri) 9/18 | lab 3 - magnets | design for part 1 of lab 3 | |||
4 | (Mon) 9/21 | control structures, active objects | Ch 7 | 7.2.1, 7.10.1 | lab 3 due 11PM |
(Wed) 9/23 | active objects | lab 4 Ch 9.1-9.2 | 9.10.1, 9.10.2 | ||
(Fri) 9/25 | more active objects more complex loops | Ch 9.3-9.5 | 9.10.3, 9.11.1 | ||
(Fri) 9/25 | lab 4 - boxball | design for lab 4 | |||
5 | (Mon) 9/28 | even more active objects interfaces | Ch 9.6-9.9 | 9.11.2 | lab 4 due 11PM |
(Wed) 9/30 | interfaces, design lab 5 | lab 5 handout Ch 10, 21 | 10.5.2, 21.9.2 | ||
(Fri) 10/2 | debugging tips, keyboard input, GUIs | Ch 10 | 10.5.1 | ||
(Fri) 10/2 | lab 5 - frogger | design for lab 5 | |||
6 | (Mon) 10/5 | GUI components | Ch 11.1-11.3 | 11.9.1 | |
(Wed) 10/7 | test program 1 GUI components | Ch 11.1-11.3 | 11.9.2 , 21.9.3 | lab 5 due 11PM | |
(Fri) 10/9 |
review, inheritance lab 6 | Ch 11.7-11.8 | |||
(Fri) 10/9 | lab 6 - GUIs | ||||
7 | (Mon) 10/12 | midterm | |||
(Wed) 10/14 | inheritance | Ch 17.1-17.5 | 17.5.1, 17.8.5 | lab 6 due 11PM | |
(Fri) 10/16 | more inheritance recursion | Ch 17.6-17.7 | 17.8.6 | ||
(Fri) 10/16 | no lab, Test Program 1 due 4PM | ||||
8 | (Mon) 10/19 | |
|||
(Wed) 10/21 | recursion | Ch 12.1 | 12.1.10 | ||
(Fri) 10/23 | lab 7 more recursion | Ch 12.1 | 12.1.12 | ||
(Fri) 10/23 | lab 7 - recursion | ||||
9 | (Mon) 10/26 | even more recursion lab 8 | Ch 12.2 | lab 7 due 11PM | |
(Wed) 10/28 | for loops, arrays | Ch 13 | 13.6.2, 13.6.5 | ||
(Fri) 10/30 | more arrays | Ch 14.1-14.5 | 14.2.2 | ||
(Fri) 10/30 | lab 8 - recursion | ||||
10 | (Mon) 11/2 | still more arrays | Ch 14.6-14.8 | 14.9.3 | lab 8 due 11PM |
(Wed) 11/4 | multidimensional arrays lab 9 | lab 9 handout Ch 14.6-14.8, 15.1-15.2 | 15.4.1, 15.4.2 | ||
(Fri) 11/6 | multidimensional arrays | ||||
(Fri) 11/6 | lab 9 - simon | design for lab 9 | |||
11 | (Mon) 11/9 | more multidimensional arrays | Ch 15.2-15.3 | 15.4.4 | lab 9 due 11PM |
(Wed) 11/11 | strings lab 10 | lab 10 handout Ch 15.3, 16.1 | 16.5.2 | ||
(Fri) 11/13 | more strings | Ch 16.1-16.2 | 16.5.3, 16.5.4 | ||
(Fri) 11/13 | lab 10 - nibbles | ||||
12 | (Mon) 11/16 | even more strings characters test program 2 | Ch 16.3-16.4 | 16.5.6 | lab 10 due 11PM on 11/17 |
(Wed) 11/18 | exceptions lab 11 | lab 11 handout Ch 18 | 18.5.1 | ||
(Fri) 11/20 | more exceptions, streams | Ch 19.1-19.3 | 18.9.1 | ||
(Fri) 11/20 | lab 11 - strings | ||||
13 | (Mon) 11/23 | file I/O | Ch 19.1-19.3 | 19.7.2 | lab 11 due 11PM |
(Wed) 11/25 | Ch 19.4 | 19.7.3 | design for TP2 due 10AM | ||
(Fri) 11/27 | | ||||
14 | (Mon) 11/30 | streams | Ch 19.5-19.6 | ||
(Wed) 12/2 | networks lab 12 | lab 12 handout Ch 20 | |||
(Fri) 12/4 | asymptotics, algorithms, sorting sample final | Ch 20 | 20.3.4, 20.3.8 | ||
(Fri) 12/4 | lab 12 - pictionary | ||||
15 | (Mon) 12/7 | sorting, turing machines, misc | lab 12 due 11PM | ||
(Wed) 12/9 | review session | Test Program 2 due 4PM |
The final exam will be on Friday 12/18 from 9AM-noon.