Reading Assignments - CompSci 161, Spring 2026 (Dillencourt)
The textbook reading activities for the quarter are listed below. Generally, the readings for each week will be posted by Friday afternoon of the previous week.
Rules for receiving credit for a reading:- "Reading a section" means reading the section and doing all the participation activities.
- Readings and associated activities are to be completed before 9:29AM
on the due date (one minute before the start of class).
- For example, you would receive full credit for having read Section 1.1 if and only if the Zybook software logs you as having completed all participation activities in the section by 9:29AM PST on Thursday, April 2.
- There is no grace period.
- It is recommended that you do not wait until the last possible moment to read the material and complete the activities.
- Zybook allows me to obtain a retroactive report of who had finished which sections at any time in the past. Please keep this in mind before claiming that a section that you finished after the deadline was actually completed before the deadline.
Special rules for the first two weeks:
- The readings for the first two weeks (up through and including the ones due on Thursday, April 9) will not count toward your reading score.
- I will collect the data and send each student an individual report it during week 3. When this report is available, please read it. This helps identify errors and misconceptions. (For example, if you signed up for Zybooks using an email other than your UCI email, or if you signed up for Zybbooks using the incorrect code.)
- Beginning week 3, readings will count toward your reading score.
Readings assignments:
- Week 1:
- Tuesday, March 31, by 9:29AM:
- No reading assigned (but you might want to get started early on the reading due on Thursday)
- Due Thursday, April 2 by 9:29AM:
- 1.1: Introduction
- 1.2: Analyzing algorithms
- 1.3: A quick mathematical review
- 1.4: A case study in algorithm analysis
- Tuesday, March 31, by 9:29AM:
- Week 2:
- Due Tuesday, April 7, by 9:29AM:
- 2.1: Introduction [Basic Data Structures]
- 2.2: Stacks and queues
- 2.3: Lists
- 2.4: Trees
- Due Thursday, April 9, by 9:29AM:
- 3.1: Introduction [Binary Search Trees]
- 3.2: Searches and updates
- The following two readings are recommended
but not required.
The reason for recommending but not requiring them is
given with each reading.
- [Recommended but not required]
Section 5.3 (just the material on Insertion Sort that
starts immediately after Participation Activity 5.3,
together with
Algorithm 5.3.3 and Participation Activity 5.3.4).
- [GT], somewhat idiosyncratically, presents insertion sort as a priority queue algorithm, and this is where it is covered. I will assign this section as required reading when we cover priority queues in class.
- [Recommended but not required]
Section 8.3: Quick Sort.
- The details of the quicksort algorithm given in [GT] differ from the quicksort algorithm that I will present in class, and I will expect you to know the version presented in class. So I am not requiring this section. That having been said, you may find this section a useful complement to quicksort as presented in class.
- [Recommended but not required]
Section 5.3 (just the material on Insertion Sort that
starts immediately after Participation Activity 5.3,
together with
Algorithm 5.3.3 and Participation Activity 5.3.4).
- Due Tuesday, April 7, by 9:29AM:
- Week 3:
- Due Tuesday, April 14, by 9:29AM:
- 8.2: Merge sort
- Due Thursday, April 16, by 9:29AM:
- 5.1: Introduction [Priority Queues and Heaps]
- 5.2: Priority queues
- 5.3: PQ-sort, selection sort, insertion-sort
- 5.4: Heaps
- 5.5: Heapsort
- [Optional: 5.6 Extending priority queues]
- Due Tuesday, April 14, by 9:29AM:
- Week 4:
- Due Tuesday, April 21, by 9:29AM:
- 8.4: A lower bound on comparison-based sorting
- Thursday April 23: Midterm 1. No reading assigned.
- Due Tuesday, April 21, by 9:29AM:
- Week 5:
- Due Tuesday, April 28, by 9:29AM:
- 9.1: Introduction [Fast Sorting and selection]
- 9.2: Bucket Sort and Radix Sort
- Due Thursday, April 30, by 9:29AM:
- 10.1: Introduction [The Greedy Method]
- 10.2 The fractional knapsack problem
- 10.3 Task scheduling
- Due Tuesday, April 28, by 9:29AM:
- Week 6:
- Due Tuesday, May 5, by 9:29AM:
- 10.4 Text compression and Huffman coding
- Due Thursday, May 7, by 9:29AM:
- 11.1: Introduction [Divide and Conquer]
- 11.2: Recurrences and the master theorem
- Due Tuesday, May 5, by 9:29AM:
- Week 7:
- Due Tuesday, May 12, by 9:29AM:
- No reading assigned (but you might want to get started early on the reading due on Thursday)
- Due Thursday, May 14, by 9:29AM:
- 11.3: Integer multiplication
- 11.4: Matrix multiplication
- 12.1: Introduction [Dyamic Programming]
- 12.4: The General Technique [Dynamic Programming]
- 12.5: Telescope Scheduling
- 12.8: The 0-1 Knapsack problem
- Due Tuesday, May 12, by 9:29AM:
- Week 8:
- Due Tuesday, May 19, by 9:29AM:
- No reading required.
- Recommended but not required: 12.3: Matrix chain products
- I will most likely cover some or all of the material in this section in class on Tuesday. This material will not be covered on the second midterm but it will be covered on the final exam. This section will be required reading for Tuesday, May 26. It would be better to read it before class on Tuesday May 19.
- Thursday May 21: Midterm 2. No reading assigned.
- Due Tuesday, May 19, by 9:29AM:
- Week 9:
- Due Tuesday, May 26, by 9:29AM:
- 12.3: Matrix chain-products
- Due Thursday, May 28, by 9:29AM:
- 13.1 Introduction
- 13.2 Graph Terminology and representations
- 13.6 Directed Acylic Graphs
- Recommended additional reading: (2 groups)
- The following sections are recommended by not required.
I will not cover these topics in lecture and you will not be
responsible for them on the final exam.
However, they are things every computer scientist
ought to know:
- 13.3 Depth-first search
- 13.4 Breadth-first search
- 13.5 Transitive closure
- 13.7 Biconnected components
- The following sections will be required reading for
Tuesday June 2. It is possible that we will start covering
this material in class on Thursday May 28, which is why I
am listing them as recommended but not required for
Thursday May 28.
- 14.1 Introduction to shortest paths
- 14.2 Single-source shortest paths
- 14.3 Dijkstra's algorithm
- The following sections are recommended by not required.
I will not cover these topics in lecture and you will not be
responsible for them on the final exam.
However, they are things every computer scientist
ought to know:
- Due Tuesday, May 26, by 9:29AM:
- Week 10:
- Due Tuesday, June 2, by 9:29AM:
- 14.1 Introduction to shortest paths
- 14.2 Single-source shortest paths
- 14.3 Dijkstra's algorithm
- 15.1 Introduction to minimum spanning trees
- 15.2 Properties of minimum spanning trees
- 15.4 The Prim-Jarnik algorithm
- Due Thursday, June 4, by 9:29AM:
- 15.3 Kruskal's algorithm
- Due Tuesday, June 2, by 9:29AM:
Last modified: May 28, 2026