Most lectures will also list a reading from the textbook. It would probably be useful to read these materials before or after class (or even both), although everything "important" (meaning those things that are part of the curriculum and tests) will be discussed in class.
If I assign problems for class (as I am doing for the first day of class; see below) I will 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.
For any problems that I assign for presentation 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 problems on (almost) weekly take-home quizzes, on which collaboration is prohibited. Don't cheat yourself in this aspect of the course.
TAs will hold help sessions almost every evening to aid you with understanding with the course material and how to solve its problems (see the Help Schedule web page for details).
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 1 class-participation point for interrupting the class. Finally, if you know that you must leave early, please sit by a door, so that you can exit quietly.
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) | Goodrich/Tammassia Reading |
|---|---|---|---|---|
| Pre-Class | Interfaces Be prepared to present solutions to problems 5, 9, and 10 in class on 4/1 |
None | ||
| #1 | Lecture | 4/1 | Course Overview, Object/Instance Pictures, Interfaces | None (Notes) |
| Lab | 4/2 | Assessment, Basics of the Eclipse Debugger, Digital Pictures | None | |
| Lecture | 4/3 | Review of Linked Lists, List Processing, Recursion, Recursion on Linked Lists, 2-Dimensional Arrays | 3.1.5, 3.2 (Notes) | |
| Lab | 4/4 | Discuss/Start Program #1 | None | |
| #2 | Lecture | 4/8 | Generic Collection Classes (and their Iterators), Correctness/Performance of Implementations | 3.1.5, 3.2 (Notes) |
| Lab | 4/9 | Work on Program #1 | None | |
| Lecture | 4/10 | Analysis of Algorithms: big-O and Omega, and Theta notations | 4.1-4.3 (Notes) | |
| Lab | 4/11 | Discuss/Start Program #2 | None | |
| #3 | Lecture | 4/15 | Advanced Linked Lists: Header, Trailer, Doubly-linked, Circular | 3.2-3.4 (Notes) |
| Lab | 4/16 | Work on Program #2 | None | |
| Lecture | 4/17 | Trees: Binary Search (insert,find,remove), Traversal Orders Trees and Tree Processing. |
7.1-7.3, 10.1 (Notes) | |
| Lab | 4/18 | Work on Program #2 | None | |
| #4; | Lecture | 4/22 | Heaps section in Special Trees AVL (and other self-balancing trees) | 8.3, 10.2 (Notes) |
| Lab | 4/23 | Work on Program #2 | None | |
| Lecture | 4/24 | General Trees: Children via Sets and Lists, Binary embedding, Digital Tress via Maps, Structure Trees (Expressions) See Nary Trees and Expression Trees in Special Trees | None (Notes) | |
| Lab | 4/25 | Discuss/Start Program #3 | None | |
| #5 | Lecture | 4/29 | Problem Solving and Search Trees: Explicit and Implicit | None (Notes) |
| Lab | 4/30 | Work on Program #3 | None | |
| Lecture | 5/1 | See Hash Tables section in Collection Classes: (Hash Table) web document: Hashing, Chaining, Probing, Iterators | 9.2 (Notes) | |
| Lab | 5/2 | Work on Program #3 | None | |
| #6 | Lecture | 5/6 | Skip Lists (as an alterntive to Trees) | 9.4 (Notes) |
| Lab | 5/7 | Work on Program #3 | None | |
| Lecture | 5/8 | Midterm Exam (please arrive promptly for maximum time) | ||
| Lab | 5/9 | Discuss/Start Program #4 | None | |
| #7 | Lecture | 5/13 | Sorting: Time/Space/Stability, Arrays/Lists, Comparison/Structural | 11.1-11.5 (Notes) |
| Lab | 5/14 | Work on Program #4 | None | |
| Lecture | 5/15 | String Processing: Quadratic/Linear Searching, Tries, Compression (Huffman Trees) | 12.1, 12.3, 12.4 (Notes) | |
| Lab | 5/16 | Work on Program #4 | None | |
| #8 | Lecture | 5/20 | Graphs: Terminology and Representations | 13.1-13.5 (Notes) |
| Lab | 5/21 | Work on Program #4 | None | |
| Lecture | 5/22 | Graph Algorithms I: Topological Sorting, Spanning Trees | 13.7, 13.6 (Notes) | |
| Lab | 5/23 | Discuss/Start Program #5 | None | |
| #9 | Lecture | 5/27 | Graph Algorithms II: Fast Union/Find, Connected Components, Dijkstra's algorithm | 11.6 (Notes) |
| Lab | 5/28 | Work on Program #5 | None | |
| Lecture | 5/29 | Memory (and its Interaction with Algorithms) | 14.1-14.2 (Notes) | |
| Lab | 5/30 | Work on Program #5 | None | |
| #10 | Lecture | 6/3 | Memory-Limited (External) Searching & Sorting and/or Special Lecture (Infinity and Computer Programs) |
14.3-14.4 (Notes) |
| Lab | 6/4 | Work on Program #5 | None | |
| Lecture | 6/3 | Course Review, Final Words, Written Survey | None | |
| Lab | 6/6 | Work on Program #5 | None | |
| Final Exams Week | 6/10 | We will have a comprehensive 2-hour written
final exam on Tuesday, June 10th, 4:00pm - 6:00pm (see the Final Exam Schedule, Spring 2008). I will send email when I have computed/entered final grades, which are due to UCI by June 19 at 5pm. |
||