About CS24: Problem Solving with Computers-II
Welcome to CS24! The goal of this class is to solve problems efficiently using data structures and algorithms. You’ll learn about abstract data types e.g. stacks, queues, priority_queues, sets, and maps; the concrete data structures used to implement them, e.g. vectors, and binary trees; and how to reason about the complexity of the operations performed on the data structures. Another goal is to become proficient with coding in C++ and using the C++ Standard Template Library (STL) to succeed in technical coding interviews and future classes!

Interactive data structure visualizations from VisuAlgo
| Instructor: Diba Mirza | Office Hours: WR: 1p - 2p, HFH 2119 |
| Lectures: MW 11:00a - 12:15p, BUCHN 1910 |
Sections: R: 11a - noon , noon - 1p, 1p - 2p , 2p - 3p, 3p - 4p in Phelps 3525 Link to section slides
Teaching Assistants (TAs) Sarah Canto Hyatt, Yupeng Su, Zhuoer Shen, Towhidul Islam
Learning Assistants (LAs): Nikhil Kapasi, Olivia Chen, Kyle Manternach, Ritam Saha, Samuel Zhang, Jackson Cao
Lectures
| Lecture Date | Link | Description | Reading |
|---|---|---|---|
| lect01 | CS16 Review: Abstract Data Types (Linked List) (slides) (annotated slides) (handout) | Savitch: 2.1 - 2.5, 3.1 | |
| lect02 | C++ Operator Overloading and Rule of three (slides) (annotated slides) (handout) | Savitch: 4.3 - 4.4, 5.1, 5.3 | |
| lect03 | Running time analysis (slides) (annotated slides) (handout) | OP: 1.3, Dasgupta: 0.1 - 0.3 | |
| lect04 | Efficient search with Binary Search Trees(QUIZ 1) (slides) (annotated slides) | Savitch: 12.1, 10.1 - 10.3 | |
| No lecture - Martin Luther King Day | |||
| lect05 | BST operations and Tree traversals (slides) (annotated slides) (handout) | Savitch: 10.4, 10.5 | |
| lect06 | Iterators (slides) (annotated slides) (handout) | Savitch: 3.1 - 3.3 | |
| lect07 | BST and Big O review (QUIZ 2) (slides) (annotated slides) (handout) | Savitch: 1.2 | |
| lect08 | Stacks (slides) (annotated slides) (handout) | Savitch: 7.1 - 7.4 | |
| lect09 | Queues, Breadth First Traversal, and Complete Binary Trees (slides) (annotated slides) (handout) | Savitch: 8.1 - 8.4 | |
| lect10 | Binary Heaps and Priority Queues (slides) (annotated slides) (handout) | Savitch: 11.1 - 11.2 | |
| lect11 | Hashtables (slides) (annotated slides) | Prof. Suri's CS 130A handout | |
| Presidents Day Holiday - No Class | |||
| lect12 | Priority Queue and Hashtable Practice (QUIZ 3) (slides) | ||
| lect13 | Graph representation with applications to Neural Networks (slides) (handout) | Savitch: 15.1 - 15.2 | |
| lect14 | Graph search: Breadth first traversal (Quiz 4) (slides) | Savitch: 15.3 | |
| lect15 | Graph Search: Depth first traversal | Savitch: 15.4 | |
| lect16 | Mergesort: Divide and Conquer | Savitch: 13.1 - 13.2 | |
| lect17 | Final Review | ||
| final | Final Exam Instructions and Study Tips |
Lab Assignments
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| lab00 | true | Getting started with Github (optional lab) | ||
| lab01 | true | Implementing a linked list- OOP style | Mon 01/05 09:00AM | Fri 01/16 11:59PM |
| lab02 | true | Complexity Analysis - Part 1 | Fri 01/16 09:00AM | Fri 01/23 11:59PM |
| lab03 | true | Binary Search Tree | Wed 01/14 09:00AM | Fri 01/30 11:59PM |
| lab04 | true | Implementing a min-heap | Fri 02/13 09:00AM | Fri 02/27 11:59PM |
| lab05 | false | Complexity Analysis - Part 2 | Fri 02/27 09:00AM | Wed 03/11 11:59PM |
Programming Projects
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| pa01 | true | Card game using Binary Search Trees | Mon 01/26 09:00AM | Fri 02/13 11:59PM |
| pa02 | true | Application of data structures to a movie dataset | Mon 02/09 09:00AM | Fri 02/27 11:59PM |
| pa03-tutorial | true | A Gentle Introduction to Graphs and Neural Networks | ||
| pa03 | false | Application of graphs to machine learning | Wed 02/25 09:00AM | Fri 03/13 11:59PM |
Leetcode Practice Problems
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| lp01 | true | Leetcode practice with linked lists | Mon 01/05 09:00AM | Fri 01/16 11:59PM |
| lp02 | true | Leetcode practice with binary search trees | Wed 01/14 09:00AM | Fri 01/30 11:59PM |
| lp03 | true | Leetcode practice with stacks and queues | Mon 02/02 09:00AM | Fri 02/13 11:59PM |
| lp04 | true | Leetcode practice with priority queues and hashtables | Mon 02/16 09:00AM | Fri 02/27 11:59PM |
| lp05 | false | Leetcode practice with graph search - bfs and dfs | Fri 02/27 09:00AM | Fri 03/13 11:59PM |
Office Hours
CC BY-NC-SA 2.0, Diba Mirza, Winter 2026.