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!
Photo credit: Visualgo https://visualgo.net/
- Instructor: Diba Mirza
- Office hours: Thursdays 2p - 4p, HFH 1155
- TAs: Ally Chu, Brenna Scholte, Daniel Lopez, Kali Hale, Sarah Hyatt
- ULAs: Cindy Zhao, Nikhil Kapasi, Olivia Chen
- Lectures: TR 12:30p - 1:45p, BUCHN 1940
- Sections: F: 2p, 3p, 4p, 5p, and 6p in Phelps 3525
Mock Interviews
Instructions are available in the related assignment on Canvas: https://ucsb.instructure.com/courses/25665/assignments/358212 Book your Mock interview no later than Tuesday May 20 using the booking pages linked below.
Resources
- GDB cheatsheet https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf
Lectures
| lecture date | link | description | Reading |
|---|---|---|---|
| 2025-04-01 | lect01 | Week 1: Course introduction, CS16 review (slides) (annotated slides) | |
| 2025-04-03 | lect02 | Week 1: Running time analysis (slides) (annotated slides) | OP: 1.3, Dasgupta: 0.1 - 0.3 |
| 2025-04-08 | lect03 | Week 2: Abstract Data Types and operator overloading (slides) (annotated slides) | 2.1 - 2.5, 3.1 |
| 2025-04-10 | lect04 | Week 2: Linked list ADT and rule of three (slides) (annotated slides) | 4.3 - 4.4, 5.1, 5.3 |
| 2025-04-15 | lect05 | Week 3: Efficient search with Binary Search Trees (slides) (annotated slides) | 12.1, 10.1 - 10.3 |
| 2025-04-17 | lect06 | Week 3: Tree traversals (slides) (annotated slides) | 10.4, 10.5 |
| 2025-04-22 | lect07 | Week 4: Iterators (slides) (annotated slides) | 3.1 - 3.3 |
| 2025-04-24 | lect08 | Week 4: Space complexity, best/worst case analysis (slides) (annotated slides) | 1.2 |
| 2025-04-29 | lect09 | Week 5: Stacks (slides) (annotated slides) | 7.1 - 7.4 |
| 2025-05-01 | lect10 | Week 5: Queues, Breadth First Traversal, and Complete Binary Trees (slides) (annotated slides) | 8.1 - 8.4 |
| 2025-05-06 | lect11 | Week 6: Binary Heaps and Priority Queues (slides) (annotated slides) | 11.1 - 11.2 |
| 2025-05-08 | e01 | Midterm Exam: 12:30p - 1:45p | |
| 2025-05-15 | lect12 | Week 7: Hashtables: from theory to practice (slides) (annotated slides) | Prof. Suri's CS 130A handout |
| 2025-05-20 | lect13 | Week 8: Graph representation with applications to Neural Networks (slides) (annotated slides) | 15.1 - 15.2 |
| 2025-05-22 | lect14 | Week 8: Graph search: Breadth and Depth first traversal (slides) (annotated slides) | 15.3- 15.4 |
| 2025-05-26 | Memorial Day Holiday - No office hours | ||
| 2025-05-27 | lect15 | Week 9: (PA03) DFS based backpropagation (slides) (annotated slides) | Required videos in pa03 tutorial |
| 2025-05-29 | lect16 | Week 9: Mergesort: Divide and Conquer (slides) (annotated slides) | 13.1 - 13.2 |
| 2025-06-03 | lect17 | Week 10: Priority Queue Review + Complexity Analysis of BFS and DFS (slides) (annotated slides) | |
| 2025-06-05 | lect18 | Week 10: Final Practice (slides) (annotated slides) | |
| 2025-06-09 | e02 | Final Exam Instructions and Study Tips |
Lab Assignments
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| lab00 | true | Getting started with Github (optional lab) | ||
| lab01 | true | LeetCode 3-Sum + Empirical Runtime Analysis | Mon 03/31 09:00AM | Fri 04/11 11:59PM |
| lab02 | true | Implementing a linked list- OOP style | Fri 04/04 09:00AM | Fri 04/18 11:59PM |
| lab03 | true | Binary Search Tree | Fri 04/18 09:00AM | Fri 04/25 11:59PM |
| lab04 | true | Complexity Analysis - Part 1 | Fri 04/25 09:00AM | Fri 05/02 11:59PM |
| lab05 | true | Implementing a min-heap | Fri 05/09 09:00AM | Fri 05/23 11:59PM |
| lab06 | true | Complexity Analysis - Part 2 | Fri 05/30 09:00AM | Fri 06/06 11:59PM |
Programming Projects
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| pa01 | true | Card game using Binary Search Trees | Fri 04/25 09:00AM | Fri 05/16 11:59PM |
| pa02 | true | Application of data structures to a movie dataset | Fri 05/09 09:00AM | Fri 05/23 11:59PM |
| pa03-tutorial | true | A Gentle Introduction to Graphs and Neural Networks | ||
| pa03 | true | Application of graphs to machine learning | Fri 05/23 09:00AM | Fri 06/06 11:59PM |
Leetcode Practice Problems
| num | ready? | description | assigned | due |
|---|---|---|---|---|
| lp01 | true | Leetcode practice with linked lists | Mon 03/31 09:00AM | Fri 05/30 11:59AM |
| lp02 | true | Leetcode practice with binary search trees | Thu 04/17 09:00AM | Fri 05/30 11:59AM |
| lp03 | true | Leetcode practice with stacks and queues | Thu 04/24 09:00AM | Fri 05/30 11:59AM |
| lp04 | true | Leetcode practice with priority queues and hashtables | Tue 05/06 09:00AM | Fri 05/30 11:59AM |
| lp05 | true | Leetcode practice with graph search - bfs and dfs | Tue 05/20 09:00AM | Fri 05/30 11:59AM |
Office hours
CC BY-NC-SA 2.0, Diba Mirza, Feb 2025.