Weekly Schedule
ICS-46: Data Structure Implementation and Analysis
For an alternative presentation of the listing of course materials, see the
Lectures/Lab Schedule page.
Week 0
- 9/26: Lab
- Download and Install Cygwin, Clang C++, and CLion.
- Start
Program #0: CLion/Clang C++, Course/GoogleTest Libraries, and Checkmate
Week 1
- Monday (9/30): Lecture
- The ICS-46 Template Library:
Stack, Queue, Priority Queue, Set, and Map
Notes
- Interesting Graphs
-
Pass out Academic Integrity Contract
(discuss on Wednesday; turn in signed copy on Friday)
- Tuesday (10/1): Lab
- Work on
Program #0: CLion/C++, Course/GoogleTest Libraries, and Checkmate
- Wednesday (10/2): Lecture
-
Discuss Academic Integrity Contract
(turn in a signed copy on Friday, not today)
- The ICS-46 Template Library:
Stack, Queue, Priority Queue, Set, and Map (continued)
Notes
-
test_itl project folder
(for performing simple experiments with the ITL)
-
cross_reference project folder
(a comprehensive example of using the ITL in a real program)
- Thursday (10/3): Lab
- Friday (10/4): Lecture
Week 2
- Monday (10/7): Lecture
- Tuesday (10/8): Lab
- Wednesday (10/9): Lecture
- Special Linked Lists: Circular, Header, Trailer, Doubly-linked
Notes
Pictures
- Thursday (10/10): Lab
- Work on
Program #1: Using the ICS-46 Template Library
- Quiz #1: Checkmate submission due at 11:30 pm
- Friday (10/11): Lecture
Week 3
- Monday (10/14): Lecture
- Analysis of Algorithms I: Complexity Classes and big-O Notation
Notes
- Tuesday (10/15): Lab
- Start
Program #2: Implementing Queue/Priority Queue/Set with Linked Lists
- Wednesday (10/16): Lecture
- Analysis of Algorithms II: Composing Complexity Classes: examples;
Ω (big-Omega) and Θ (big-Theta) Notations
Notes
- Thursday (10/17): Lab
- Work on
Program #2: Implementing Queue/Priority Queue/Set with Linked Lists
- Quiz #2: Checkmate submission due at 11:30 pm
- Friday (10/18): Lecture
Week 4
- Monday (10/21): Lecture
- Tuesday (10/22): Lab
- Work on
Program #2: Implementing Queue/Priority Queue/Set with Linked Lists
- Wednesday (10/23): Lecture
- Thursday (10/24): Lab
- Work on
Program #2: Implementing Queue/Priority Queue/Set with Linked Lists
- Friday (10/25): Lecture
- Quiz #3: Paper submission due at the Start of Lecture
- AVL (and other self-balancing search trees)
Notes
- Quiz #4:
Handed out online only
(
CLion Helper project for Quiz)
(due: Checkmate submission on Thursday 10/31, at 11:30 pm;
paper submission on Friday 11/1, at the start of Lecture)
Week 5
- Monday (10/28): Lecture
- General Trees (set, etc. children), Binary embedding,
Quad trees, Digital Trees, Structure Trees
Notes
Pictures
- Tuesday (10/29): Lab
- Start
Program #3: Implementing Priority Queues and Maps with Binary Trees
- Wednesday (10/30): Lecture
- Thursday (10/31): Lab
- Work on
Program #3: Implementing Priority Queues and Maps with Binary Trees
- Quiz #4 Checkmate submission due at 11:30 pm
- Friday (11/1): Lecture
Week 6
- Monday (11/4): Lecture
- Tuesday (11/5): Lab
- Work on
Program #3: Implementing Priority Queues and Maps with Binary Trees
- Wednesday (11/6): Lecture
-
Midterm Exam: please arrive promptly for maximum time
Topics:
ICS-46 Template Library and Iterators;
Linked Lists (iterative and recursive);
Analysis of Algorithms;
Trees: Binary/BST/Heap/.../Heap Trees and Special Trees
- Thursday (11/7): Lab
- Work on
Program #3: Implementing Priority Queues and Maps with Binary Trees
- Quiz #5: Checkmate submission due at 11:30 pm
- Friday (11/8): Lecture
- Quiz #5: Paper submission due at the start of class
- Sorting 1: Time/Space/Stability, O(N^2) Sorts
Notes
- Empirical Sorting Tool
- No quiz this week.
Week 7
- Monday (11/11): Lecture
- Holiday (No Class): Veteran's Day
- Tuesday (11/12): Lab
- Start
Program #4: Implementing Maps and Sets via Hash Tables
- Wednesday (11/13): Lecture
- Sorting 2: O(N Log N) Sorts, lower bounds
Notes
- Thursday (11/14): Lab
- Work on
Program #4: Implementing Maps and Sets via Hash Tables
- Friday (11/15): Lecture
Week 8
- Monday (11/18): Lecture
- Tuesday (11/19): Lab
- Work on
Program #4: Implementing Maps and Sets via Hash Tables
- Wednesday (11/20): Lecture
- Thursday (11/21): Lab
- Work on
Program #4: Implementing Maps and Sets via Hash Tables
- Quiz #6: Checkmate submission due at 11:30 pm
- Friday (11/22): Lecture
Week 9
- Monday (11/25): Lecture
- Tuesday (11/26): Lab
- Start
Program #5: Implementing Graphs and Dijkstra's Algorithm
- Wednesday (11/27): Lecture
- Speeding-up code without changing its algorithm/complexity class
Notes
- Quiz #8:
Handed out in class
(
CLion Helper project for Quiz)
(due: Checkmate submission on Thursday 12/5, at 11:30 pm;
paper submission on Friday, 12/6 at the start of Lecture)
)
- Thursday (11/28): Lab
- Holiday (No Class): Thanksgiving
- Friday (11/29): Lecture
- Holiday (No Class): Thanskgiving
Week 10
- Monday (12/2): Lecture
- Computer Memory: Introduction
Notes
- Tuesday (12/3): Lab
- Work on
Program #5: Implementing Graphs and Dijkstra's Algorithm
- Wednesday (12/4): Lecture
- Computer Memory: Data Structures and Algorithms for Searching
Notes
- Example
- Thursday (12/5): Lab
- Work on
Program #5: Implementing Graphs and Dijkstra's Algorithm
- Quiz #8: Checkmate submission due at 11:30 pm
- Friday (12/6): Lecture
- Quiz #8: Paper submission due at the Start of Lecture
- Computer Memory: Algorithms for Sorting
Notes
Final Exams Week
- Monday (12/9): Final Exam
- 4:00pm - 6:00pm
- In ELH 100
- Instructions and seating assignments will be emailed before the exam
- Bring a photo ID with a legible name and picture
(UCI, drivers license, passport, etc.)