Most lectures will also list a reading from the web and show equivalent material from the textbook. It would probably be useful to read these materials before class (and review them after class). I will try to summarize everything that is "important" (meaning those things that are part of the curriculum and tests) in class, but because of limited class time, I cannot guarantee that I will be able to do so. Also, if you have already looked at this material, your mind will be more receptive to understanding the material covered in the lectures.
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 in class. Thus, I expect most "lectures" to be interactive, with students participating fully. We can go over these solutions, as well as any other material, during the weekly discussion section..
Someone once said, "Distance education begins in the 8th row of the classroom". I recommend that student sit in the rows close to the front of the room. I once had the following comment on my final teaching evaluation, "Write bigger: I could never read what you wrote on the whiteboard from my seat in the back of the class." Given my deficiency as an instructor, what should you do as a student?
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.
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 discussion on 1/7 |
None | ||
#1 | Lecture | 1/7 | Course Overview, (Abstract) Data Types and Data Structures, Object/Instance Pictures | None (Overview Notes) |
Lab | 1/8 | Discuss/Start Program #0: Eclipse, Course Libraries, JUnit, and Checkmate, Digital Pictures | None | |
Lecture | 1/9 | Generic Collection Classes (and their Iterators): Interfaces and Use (e.g., Stack, Queue, PriorityQueue, List, Set, Map) | None (Collections Notes) | |
Lab | 1/10 | Discuss/Start Program #1: Using Collection Classes | None | |
Lecture | 1/11 | Array Implementation of Generic Collection Classes (and their Iterators) using Interfaces, Abstract Classes, Drivers, and JUnit Testing | 2.2-2.5, 3.1 (Implementation Notes) | |
Discussion | 1/11 | Collection interfaces and array implementations | None | |
#2 | Lecture | 1/14 | Review of Linked Lists, List Processing | 3.2 (List Notes) |
Lab | 1/15 | Continue working on Program #1: Using Collection Classes | None | |
Lecture | 1/16 | Special Linked Lists: Circular, Header, Trailer, Doubly-linked | 3.2-3.4 (Special Lists Notes) | |
Lab | 1/17 | Discuss/Start Program #2: Implementing Collections with Linked Lists | None | |
Lecture | 1/18 | Review of Recursion, Recursion on Linked Lists | 3.5 (Recursion Notes) | |
Discussion | 1/18 | Collection interfaces and linked-list implementations | None | |
#3 | Lecture | 1/21 | Holiday (No Classes): Martin Luther King Jr. Day | |
Lab | 1/22 | Continue working on Program #2: Implementing Collections with Linked Lists | None | |
Lecture | 1/23 | Analysis of Algorithms: Complexity Classes and big-O Notation | 4.1-4.3 (AA Notes 1, Supplmental Notes) | |
Lab | 1/24 | Continue working on Program #2: Implementing Collections with Linked Lists | None | |
Lecture | 1/25 | Analysis of Algorithms: Ω (Omega) and Θ (Theta) notations; analyzing Array, List, and Collection Algorithms | None (AA Notes 2) | |
Discussion | 1/25 | Recursion on linked-lists; analysis of algorithms | None | |
#4 | Lecture | 1/28 | Trees | 7.1 (Tree Notes) |
Lab | 1/29 | In-Lab Programming Exam #1: Using Collection Classes | None | |
Lecture | 1/30 | Tree Processing and Traversals | 7.2-7.3, 10.1 (BST Notes) | |
Lab | 1/31 | Discuss/Start Program #3: Implementing Collections with Trees | None | |
  | Lecture | 2/1 | Heaps section in Special Trees | 8.3 (Heap Notes) |
Discussion | 2/1 | Trees, search trees, and heaps | None | |
#5 | Lecture | 2/4 | AVL (and other self-balancing) Trees | 10.2 (AVL Notes) |
Lab | 2/5 | Continue working on Program #3: Implementing Collections with Trees | None | |
Lecture | 2/6 | General Trees: Children via Sets and Lists, Binary embedding,
Quad trees, Maps via Digital Trees, Structure Trees (Expressions); see Nary Trees and Expression Trees in Special Trees | None (Special Trees Notes) | |
Lab | 2/7 | Continue working on Program #3: Implementing Collections with Trees | None | |
Lecture | 2/8 | See Hash Tables section in Collection Classes: (Hash Table) web document: Hashing, Chaining, Probing, Iterators | 9.2 (Hashing Notes) | |
Discussion | 2/8 | AVL and advanced trees; hash tables | None | |
#6 | Lecture | 2/11 | Problem Solving and Search Trees: Backtracking | None (Backtracking Notes) |
Lab | 2/12 |
Midterm Exam (please arrive promptly for maximum time) Topics: Collection Classes/Iterators, Linked Lists (Iterative and Recursive), Analysis of Algorithms, Trees: Binary/BST/Heap/AVL/N-ary/Digital/..., Simple Hash Tables |
None | |
Lecture | 2/13 | Problem Solving and Search Trees: State-Space Searching | None (State-Space Notes) | |
Lab | 2/14 | Discuss/Start Program #4: Implementing Collections with Hash Table, Etc. | None | |
Lecture | 2/15 | Skip Lists (as an alternative to Trees) Textbook | 9.4 (SkipList Notes) | |
Discussion | 2/15 | Problem solving and search trees; skip lists | None | |
#7 | Lecture | 2/18 | Holiday (No Classes): Presidents' Day | |
Lab | 2/19 | Continue working on Program #4: Implementing Collections with Hash Table, Etc. | None | |
Lecture | 2/20 | Sorting 1: Time/Space/Stability, O(N^2) Sorts | None (Sorting Notes 1) | |
Lab | 2/21 | Continue working on Program #4: Implementing Collections with Hash Table, Etc. | None | |
Lecture | 2/22 | Sorting 2: O(N Log N) Sorts, lower bounds | 11.1-11.2 (Sorting Notes 2) | |
Discussion | 2/22 | Sorting | None | |
#8 | Lecture | 2/25 | Sorting 3: Sorting without Comparisons: Bucket and Radix Sort | 11.3-11.4 (Sorting Notes 3) |
Lab | 2/26 | In-Lab Programming Exam #2: Self-Referential Data Structures | None | |
Lecture | 2/27 | Graphs: Terminology and Representations | 13.1-13.5 (Graph Notes) | |
Lab | 2/28 | Discuss/Start Program #5: Graph Class and Dijkstra's Algorithm | None | |
Lecture | 3/1 | Graph Algorithms I: Topological Sorting, Spanning Trees | 13.7 (Graph Algorithms Notes 1) | |
Discussion | 3/1 | Sorting, graphs, graph algorithms | None | |
#9 | Lecture | 3/4 | Graph Algorithms II: Fast Union/Find for computing Connected Components | 13.7 (Graph Algorithms Notes 2) |
Lab | 3/5 | Continue working on Program #5: Graph Class and Dijkstra's Algorithm | None | |
Lecture | 3/6 | Graph Algorithms III: Extended Dijkstra's Algorithm (Shortest Paths) |
13.5-13.6
(Dijkstra Notes Dijkstra Example) |
|
Lab | 3/7 | Continue working on Program #5: Graph Class and Dijkstra's Algorithm | None | |
Lecture | 3/8 | String Processing: Quadratic/Linear Searching | 12.1-12.4 (String Notes) | |
Discussion | 3/8 | Graph algorithms, string processing | None | |
#10 | Lecture | 3/11 | Computer Memory: Introduction | 14.1-14.2 (Memory Notes) |
Lab | 3/12 | Continue working on Program #5: Graph Class and Dijkstra's Algorithm | None | |
Lecture | 3/13 | Computer Memory: Data Structures and Algorithms for Searching/Sorting | 14.3-14.4 (B-Tree Notes) | |
Lab | 3/14 | Continue working on Program #5: Graph Class and Dijkstra's Algorithm | None | |
Lecture | 3/15 | Computer Memory: Data Structures and Algorithms for Searching/Sorting | 14.3-14.4 (Merge Sort Notes) | |
Discussion | 3/15 | Course Review | ||
Final Exams Week | 3/18 | We will have a comprehensive 2-hour written final exam on Friday, March 22th, 1:30pm - 3:30pm (see the Final Exam Schedule, Winter 2013). I will send email when I have computed/entered final grades, which are due to UCI by Thursday, March 28 at 5pm. |