I will also randomly call on students to present their solutions to selected assigned problems, and discuss them as well (please be prepared). I may also ask students to solve, either individually or in groups, other problems relating to the material; we will then compare and discuss these solutions. Thus, I expect most "lectures" to be interactive, with students participating fully.
Note that doing the reading and working on the assigned problems before class is a critical step in the learning process: students must be familiar with the material to get the maximum benefit from the class discussions and problem-solving sessions. Solving the assigned problems is especially important, as it "proves" that a student has not only read the material, but "understood" it is as well. Here understood means "has used the information operationally to solve problems". If you have difficultly with a problem, it indicates that you should probably go back over the related reading -or certainly ask a question about it in class.
I will allow students to work together on these problems: to discuss them, to analyze how to approach solving them, and to collaborate on their actual solution. Such a discussion must go beyond copying another student's answer: it involves completely understanding the answer and the process whereby it was reached, which includes acquiring the ability to analyze and solve similar problems. In fact, students will be required to solve similar problems on (almost) weekly take-home quizzes, on which collaboration is NOT allowed. Don't cheat yourself in this aspect of the course.
Course Staff (Instructor, Teaching Assistant, and Lab Tutors) will be available daily (including evenings) to aid you with understanding each reading and how to solve its problems (see the Help Schedule web page for details).
Ringing cell phones disrupt my lectures. Unless you are responsible for someone's life, your cell phone should be turned off. Otherwise, you should set it to operate in some silent mode (as mine will be set); if it rings silently, please leave the class, with a minimum of disruption to the rest of the students, to answer it. If your cell phone rings audibly in class, you will be charged points for interrupting the class. Finally, if you know that you must leave early, please sit by a door, so that you can exit quietly and without disturbing the class.
Overall, please strive to be a considerate class member, both to me and to your fellow students.
| Week | Activity | Date | Topic (read for this date/do problems) | Problems |
|---|---|---|---|---|
| #1 | Lab #1 | 1/3 |
Introduction to Eclipse
Start/Discuss Program #0 |
|
| Lecture #1 | 1/4 |
Course Overview (all)
EBNF Chapter / Powerpoint |
1,3,5,9 1,2,4,8; Slide #24 |
|
| Lab #2 | 1/5 | Lectures Today in Lab Tokens in Java Programs (all) Variables and Operators (Introduction - The % Operator) |
1,2,3,10,11,12 2,3 |
|
| Lecture #2 | 1/6 |
Variables and Operators (Relational Operators - Experiment!)
Expressions (Expressions - Pragmatics) |
4,5,6 7,8,10,13,23 |
|
| Lab #3 | 1/7 | Discuss/Start Program #1 | ||
| #2 | Lab #4 | 1/10 | Work on Program #1 | |
| Lecture #3 | 1/11 |
Simple Statements: Declaration, Expression, and Block
(Introduction - Boxing Statements)
Simple Control Structures: Decision and Looping (if Statement - More Boxing) Advanced Control Structures: Exceptions (try/catch - File Reading) |
1,2,5,6,7 11,12,18,19,26,31 38,39 |
|
|   | Lab #5 | 1/12 |
Basics of the Eclipse Debugger
Work on Program #1 Discuss/Start Program #2 |
Page 11 Problems |
| Lecture #4 | 1/13 |
Program Construction and Debugging (all)
More Java (all) Coding Style (all) Simplification (all) | none 1,3-6 1,2 1-5 |
|
|   | Lab #6 | 1/14 | Work on Program #2 | |
| #3 | Lab #7 | 1/17 | Holiday (No Classes): Martin Luther King's Birthday | |
| Lecture #5 | 1/18 |
Classes and Objects: Fundamentals
(Introduction - == vs equals)
Reading/Using Classes (Class Terminology - Field Members) More Useful Classes (OOP Summary - Other Useful Classes) |
1,2,3 5,6 7 |
|
| Lab #8 | 1/19 | Work on
Program #2
Discuss/Start Program #3 |
||
| Lecture #6 | 1/20 |
A File I/O Class
(Java File I/O - Buffering)
Writing static Methods (Introduction - Method Design) Writing static Methods in Classes (Defining Classes: EBNF -Eclipse IDE) |
9,11,12 2,3,4,5,6,8 none |
|
|   | Lab #9 | 1/21 | Work On Program #3 | |
| #4 | Lab #10 | 1/24 | Work on Program #3 | |
| Lecture #7 | 1/25 |
Writing Classes (Classes with Objects - Methods)
Writing Classes (continued) (Special Methods - Class Summary) | 21-24 none |
|
| Lab #11 | 1/26 | Work on
Program #3
Discuss/Start Program #4 |
||
| Lecture #8 | 1/27 |
The 1-d Array Class (Introduction - Modeling Data)
The Object Class (Wrapper Classes - Reference Casting) Simple Collections via Arrays (Collection Classes - Doubling Performance) |
1,2,3,6,8 none 9-13 |
|
| Lab #12 | 1/28 | Work On Program #4 | ||
| #5 | Lab #13 | 1/31 | Work on Program #4 | |
| Lecture #9 | 2/1 |
Model Classes in the MVC Pattern (all)
Interfaces (all) Analysis of Algorithms (big-O notation) |
1,2,4,5,7 2,3,6,7,8,9 1-4 |
|
| Lab #14 | 2/2 | Work on Program #4 | ||
| Lecture #10 | 2/3 |
Inheritance in Class Hierarchies (all)
Abstract Classes (all) |
1,3,4,5,6,7,10,11,12 1-3 |
|
| Lab #15 | 2/4 | Programming Exam #1: Using + Writing Classes | ||
| #6 | Lab #16 | 2/7 | Discuss/Start Program #5 | |
| Lecture #11 | 2/8 |
Model Classes in the MVC Pattern (all)
Interfaces (all) Analysis of Algorithms (big-O notation) |
None 2,3,6,7,8,9 None |
|
| Lab #17 | 2/9 | Work on Program #5 | ||
| Lecture #12 | 2/10 | Collection Classes: Overview, Generics, Stacks, [Priority]Queues (pgs 1-4) | None | |
| Lab #18 | 2/11 | Work on Program #5 | ||
| #7 | Lab #19 | 2/14 | Work on Program #5 | |
| Lecture #13 | 2/15 | Midterm Exam (Lectures 1-11, not 10 or Analysis of Algorithms) | ||
| Lab #20 | 2/16 | Programming Exam #2: Writing Classes + Arrays | ||
| Lecture #14 | 2/17 |
Collection Classes: Lists and Sets (pgs 5-11)
Collection Classes: Iterators (pgs 11-13) Collection Classes: Maps (pgs 13-18) |
None | |
| Lab #21 | 2/18 | Discuss/Start Program #7 | ||
| #8 | Lab #22 | 2/21 | Holiday (No Classes): President's Day | |
| Lecture #15 | 2/22 |
Inheritance in Class Hierarchies (all)
Abstract Classes (all) |
None | |
| Lab #23 | 2/23 |
JUnit Testing
Work on Program #7 |
||
| Lecture #16 | 2/24 |
Abstract Classes (all)
Exceptions in Detail (all) |
None | |
| Lab #24 | 2/25 | Work on Program #7 | ||
| #9 | Lab #25 | 2/28 | Work on Program #7 | |
| Lecture #17 | 3/1 |
Self-Referential Classes: Linked Objects
Linked List Processing |
1,2 2,3 |
|
| Lab #26 | 3/2 | Discuss/Start Program #8 | ||
| Lecture #18 | 3/3 |
Recursion: Fundamentals (powerpoint)
Recursion: Linked Lists |
Slide 26-27 (equals) 1 |
|
| Lab# 27 | 3/4 | Programming Exam #3: Using Collection Classes | ||
| #10 | Lab #28 | 3/7 | Work on Program #8 | |
| Lecture #19 | 3/8 |
Trees: An Introduction
Tree Processing: Iterative and Recursive |
None | |
| Lab #29 | 3/9 | Work on Program #8 | ||
| Lecture #20 | 3/10 | Class Wrapup, Discuss Final Exam, Questionnaire | None | |
| Lab #30 | 3/11 | Work on Program #8 | ||
| Final Exams Week | 3/18 |
We will have a comprehensive 2-hour written final exam on
Tuesday, March 15th, 10:30am - 12:30pm in ICS 180 (see the Final Exam Schedule, Winter 2011). |
||