Carefully read the lectures and examine the code they contain. Test and explore this code in Clion to verify that you understand the material both theoretically and practically. Here understanding means "be able to use the information operationally to write code that solves problems". If you have difficultly with a concept, it indicates that you should probably go back over the related reading or certainly ask a question about it on the Forum. One of the few advantages of a big class like this is the potental for peerteaching.
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." I have many deficiencies as an instructor; students should help themselves get what they need out of this class like by sitting near the front if necessary.
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 and you decide you must answer the call, please leave the class, with a minimum of disruption to the rest of the students. If your cell phone rings audibly in class, you will be asked to leave class for that day. Finally, if you know that you must leave early, please sit by a door, so that you can exit quietly and without disturbing other students in the class.
Overall, please strive to be a considerate class member, both to me and to your fellow students.
Week  Activity  Date  Topic  Materials 

#0  Lab  9/28  Start Program #0: CLion/Clang C++, Course/GoogleTest Libraries, and Checkmate  
Lecture  9/29  Course Overview (all)  Notes  
#1  Lecture  10/2  The ICS46 Template Library: Stack, Queue, Priority Queue, Set, and Map 
Notes test_itl cross_reference 
Lab  10/3  Work on Program #0:CLion/C++, Course/GoogleTest Libraries, and Checkmate  
Lecture  10/4  The ICS46 Template Library: Stack, Queue, Priority Queue, Set, and Map (continued) 
Notes test_itl cross_reference 

Lab  10/5  Start Program #1: Using the ICS46 Template Library  
Lecture  10/6  Array Implementations of ICS46 Template Library Classes 
Notes Iterator Worksheet 

#2  Lecture  10/9  Linked Lists and Linked List Processing Linked Lists and Linked List Processing 
Notes Pictures Driver 
Lab  10/10  Work on Program #1: Using the ICS46 Template Library  
Lecture  10/11  Special Linked Lists: Circular, Header, Trailer, Doublylinked 
Notes Pictures 

Lab  10/12  Work on Program #1: Using the ICS46 Template Library  
Lecture  10/13  Recursion: General, Strings, Linked Lists 
Notes Pictures 

#3  Lecture  10/16  Analysis of Algorithms I: Complexity Classes and bigO Notation  Notes 
Lab  10/17  Start Program #2: Implementing Queue/Priority Queue/Set with Linked Lists  
Lecture  10/18  Analysis of Algorithms II: Composing Complexity Classes: examples; Ω (bigOmega) and Θ (bigTheta) Notations  Notes  
Lab  10/19  Work on Program #2: Implementing Queue/Priority Queue/Set with Linked Lists  
Lecture  10/20  Introducing Binary Trees 
Notes Pictures 

#4  Lecture  10/23  Binary Search Tree: Processing and Traversals 
Notes Pictures Driver Empirical Program Empirical Text 
Lab  10/24  Work on Program #2: Implementing Queue/Priority Queue/Set with Linked Lists  
Lecture  10/25  Heap Trees and Special Trees 
Notes Pictures 

Lab  10/26  Work on Program #2: Implementing Queue/Priority Queue/Set with Linked Lists  
Lecture  10/27  AVL (and other selfbalancing) Trees  Notes  
#5  Lecture  10/30  General Trees (set, etc. children), Binary embedding, Quad trees, Digital Trees, Structure Trees 
Notes Pictures 
Lab  10/31  Start Program #3: Implementing Priority Queues and Maps with Binary Trees  
Lecture  11/1  Hash Tables: Hashing, Chaining, Probing, Iterators 
Notes Empirical Program Empirical Text 

Lab  11/2  Work on Program #3: Implementing Priority Queues and Maps with Binary Trees  
Lecture  11/3  Problem Solving and Search Trees: Backtracking 
Notes Backtracking Program Graph 

#6  Lecture  11/6  Problem Solving and Search Trees: StateSpace Searching  Notes StateSpace Program 
Lab  11/7  Work on Program #3: Implementing Priority Queues and Maps with Binary Trees  
Lecture  11/8 
Midterm Exam Topics: ICS46 Template Library and Iterators; Linked Lists (iterative and recursive); Analysis of Algorithms Trees: Binary/BST/Heap/AVL/Nary/Digital/..., Hash Table concepts 

Lab  11/9  Work on Program #3: Implementing Priority Queues and Maps with Binary Trees  
Lecture  11/10  Holiday (No Classes): Veterans Day  
#7  Lecture  11/13  Sorting 1: Time/Space/Stability, O(N^2) Sorts  Notes 
Lab  11/14  Start Program #4: Implementing Maps and Sets via Hash Tables  
Lecture  11/15  Sorting 2: O(N Log N) Sorts, lower bounds for comparison sorts  Notes  
Lab  11/16  Work on Program #4: Implementing Maps and Sets via Hash Tables  
Lecture  11/17  Sorting 3: Sorting without Comparisons: Bucket and Radix Sort  Notes  
#8  Lecture  11/20  Equivalences  Notes 
Lab  11/21  Work on Program #4: Implementing Maps and Sets via Hash Tables  
Lecture  11/22  Graphs: Terminology and Representations 
Notes Pictures 

Lab  11/23  Holiday (No Classes): Thanksgiving  
Lecture  11/24  Holiday (No Classes): Thanksgiving  
#9  Lecture  11/27  Graph Algorithms I: Topological Sorting, Connected Components, and Spanning Trees 
Notes Graph for MST 
Lab  11/28  Start Program #5: Implementing Graphs and Dijkstra's Algorithm  
Lecture  11/29  Graph Algorithms II: Extended Dijkstra's Algorithm (Shortest Paths) 
Notes Graph Example 

Lab  11/30  Work on Program #5: Implementing Graphs and Dijkstra's Algorithm  
Lecture  12/1  Speedingup code without changing its algorithm/complexity class  Notes  
#10  Lecture  12/4  Computer Memory: Introduction  Notes 
Lab  12/5  Work on Program #5: Implementing Graphs and Dijkstra's Algorithm  
Lecture  12/6  Computer Memory: Data Structures and Algorithms for Searching 
Notes Picture 

Lab  12/7  Work on Program #5: Implementing Graphs and Dijkstra's Algorithm  
Lecture  12/8  Computer Memory: Algorithms for Sorting  Notes  
Final Exams Week  12/15  We will have a comprehensive 2hour written final exam on Friday, December 15th, 8:00am  10:am (see the Final Exam Schedule). Bring a photo ID with a legible name and picture (UCI, drivers license, passport, etc.) I will send email when I have computed/entered final grades, which are due to UCI by Thursday, December 21st at 5pm. 