Lecture Schedule/Notes

Fundamental Data Structures
ICS-23: Lecture A/Labs 1-4
Winter 2013


Lecture Expectations

Reading

Every lecture will link to notes that I prepare for it. You should print and read these notes before class, and bring them to class: most notes will be in text form only, and you might want to fill in -on the notes themselves- the pictures and other materials that I show in class. If you don't read them before class, read them after class: in either case there is more material in these notes than I will have time to discuss in class. I'm hoping for lots of questions and answers, both in class, in email, and on forums. Class motto: "Those who are ashamed of asking are ashamed of learning. The only "stupid" question is the one left unasked."

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..

Class Attendance and Decorum

I expect students to attend class daily, arriving on time. As Woody Allen says, "Eighty percent of success is showing up." The announcements made at the start of class are often very important; I reserve the right to give small pop-quizzes at the start of class. I expect students to neither carry on private conversations, nor use their computers to answer e-mail, surf the web, day trade stocks, or perform any other activities unrelated to this course.

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.

Discussion Section

There is a discussion section every Friday afternoon. We will discuss whatever needs clarification: the course notes, the questions on the current quiz or answers to the previous one, the current programming assignment, etc.


Schedule, Topics, Readings, and Problems

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
#1Lecture 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
#2Lecture 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
#3Lecture 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
#4Lecture 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
#5Lecture 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
#6Lecture 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
#7Lecture 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
#8Lecture 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
#9Lecture 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
#10Lecture 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 Week3/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.