CPSC 327 Data Structures and Algorithms Spring 2026

CPSC 327 Schedule

Readings are listed on the schedule page on the day when they will be discussed in class. "ADM" refers to the textbook (The Algorithm Design Manual). Readings are the first introduction for most material — it often takes more than one encounter to fully absorb something, and class time is more effective if it can be used to fill in the gaps and answer questions about things you have already started to think about. You are encouraged to complete the assigned reading before class to identify the main ideas and note questions, and then revisit the reading after class to more fully understand the material.

Dates for things in light gray are for planning purposes and are subject to change.

 Assignments

Week 1: 1/21-1/23

Topics: course introduction; analysis of algorithms

 

Wed Materials from class: introductory survey
(on Canvas)
   

Fri Reading:
  • ADM 2.1-2.4 (RAM model of computation, big-Oh, growth rates and dominance relations, working with big-Oh)
Materials from class:
     

Week 2: 1/26-1/30

Topics: analysis of algorithms; standard ADTs and basic data structures

 

Mon Reading: Materials from class:    

Wed Reading: Materials from class:
  • slides: analysis of algorithms (big-Oh from sums and recurrence relations; sums from loops, recurrence relations from recursion)
homework 1

due Wed 2/4 in class
   

Fri Reading:
  • ADM chapter 3 intro (page 69)
  • ADM 3.1 (arrays and linked lists)
  • ADM 3.2-3.3, 3.5 (stacks, queues, dictionaries, priority queues) — only read the first part of each section about the operations of each ADT; skip the discussion about implementation
Materials from class:
   

Week 3: 2/2-2/6

Topics: ADTs and implementations: containers (lists, stacks, queues), lookup (dictionaries); data structures: binary trees, BSTs, and balanced BSTs

 

Mon Reading:
  • ADM 3.2 (containers: lists, stacks, queues)
  • ADM 3.3, 15.1 (lookup: dictionaries)
Materials from class:
   

Wed Reading:
  • ADM 3.4-3.4.2 (binary search trees)
Materials from class:
homework 2

due Wed 2/11 in class
   

Fri Reading: Materials from class:    

Week 4: 2/9-2/13

Topics: ADTs and implementations: lookup (dictionaries), priority queues; data structures: balanced BSTs, hashtables, heaps

 

Mon Reading: Materials from class:    

Wed Reading:
  • ADM 3.7-3.7.1 (hashtables)
Materials from class:
homework 3

due Wed 2/18 in class
   

Fri Reading:
  • ADM 3.5, 15.2 (priority queues)
  • ADM 4.3.1-4.3.4 (heaps)
Materials from class:
   

Week 5: 2/16-2/20

Topics: ADTs and implementations: sets; fundamental algorithms and techniques: sorting, searching, selection, hashing; data structure toolkit wrapup

 

Mon Reading:
  • ADM 15.5 (sets)
Materials from class:
   

Wed Reading:
  • ADM chapter 4, 17.1 (sorting)
  • ADM 5.1, 17.2 (searching)
  • ADM 17.3 (selection)
  • ADM 3.7.2-3.7.5 (hashing)
Materials from class:
homework 4

due Wed 2/25 in class
   

Fri Reading:
  • ADM 3.8, 15.3, 15.6, 8.1.3 (specialized structures)
Materials from class:
  • slides: data structures toolkit wrapup (external sorting, searching, selection, hashing; recap; choosing data structures, designing data structures)
   

Week 6: 2/23-2/27

Topics: graphs and graph algorithms: terminology, ADT and implementation, traversal (BFS)

 

Mon Reading:
  • ADM 7-7.2, 15.4 (flavors of graphs, graph ADT, implementation)
  • ADM 7.3-7.4 (war stories)
Materials from class:
  • slides: graphs (terminology, flavors of graphs, graph ADT, implementation)
programming assignment
Graph ADT


due Mon 3/9 in class
 

Wed Reading:
  • ADM 7.5 (graph traversal)
  • ADM 7.6-7.7 (BFS, applications of BFS)
Materials from class:
homework 5

due Wed 3/4 in class
 

lab session
Thu 4-5pm
Fri
exam
revise-and-resubmit for hw1

due Fri 2/27

comments on hw1

Week 7: 3/2-3/6

Topics: graph algorithms: DFS and DFS-based algorithms, minimum spanning trees, shortest paths

 

Mon Reading:
  • ADM 7.8-7.10 (DFS, applications of DFS)
Materials from class:
 

Wed Reading:
  • ADM 8-8.1 (weighted graph algorithms, minimum spanning trees)
Materials from class:
homework 6

due Wed 3/11 in class
 

Fri Reading:
  • ADM 8.3 (shortest paths)
Materials from class:
 

Week 8: 3/9-3/13

Topics: graph algorithms: network flows, bipartite matching, other algorithms; developing algorithms: modeling

 

Mon Reading:
  • ADM 8.5 (network flows and bipartite matching)
Materials from class:
  Graph ADT interviews

 
Wed Reading:
  • ADM 18, 19 (read the input and problem descriptions and enough of the discussion to gain an appreciation for what kinds of applications the problem has, but you don't need to read all of each section)
  • ADM 7.3-7.4, 8.2, 8.4 (war stories)
Materials from class:
homework 7

due Wed 3/25 in class
 

Fri Materials from class:    

Spring Break: 3/14-3/22


Week 9: 3/23-3/27

Topics: developing algorithms: control-flow paradigms

 

Mon Reading: Materials from class: programming assignment
Dijkstra's algorithm


due Wed 4/1 in class
 

Wed Reading: Materials from class:    

  lab session
Thu 4-5pm
Fri
exam
homework 8

#4 due Fri 4/3 in class
#1-3 due Wed 4/8 in class
revise-and-resubmit for hw2

due Fri 3/27

comments on hw2

Week 10: 3/30-4/3

Topics: developing algorithms: solution construction paradigms (decomposition, series of choices), algorithm paradigms (divide-and-conquer, greedy)

 

Mon Reading: Materials from class:  

Wed Materials from class: homework 9

due Wed 4/8 in class
   

  Dijkstra interviews
Fri Reading: Materials from class: programming assignment
Ski-O


due Wed 4/15 in class
revise-and-resubmit for hw3, hw4, hw5 #3-4

due Fri 4/3

comments on hw3, comments on hw4, comments on hw5

Week 11: 4/6-4/10

Topics: series of choices: greedy, backtracking

 

Mon Materials from class:  

lab session
Tue 4-5pm
Wed Materials from class: homework 10

due Wed 4/15 in class
 

Fri Reading: Additional Reading: (encouraged)
  • ADM 9.2 (examples)
Materials from class:
revise-and-resubmit for hw8 #4

due Fri 4/10

comments on hw8

Week 12: 4/13-4/17

Topics: series of choices: backtracking, branch and bound, dynamic programming

 

Mon Materials from class:  

Wed Reading: Additional Reading: (encouraged)
  • ADM 9.4-9.5 (examples, war stories)
Materials from class:
homework 11

due Wed 4/22
   

  Ski-O interviews
Fri Reading: Additional Reading: (encouraged)
  • ADM 10-10.1 (caching, dynamic programming)
  • ADM 10.2-10.3, 10.5, 10.7-10.8 (examples)
  • ADM 10.4, 10.6, 10.10 (war stories)
Materials from class:
   

Week 13: 4/20-4/24

Topics: dynamic programming

 

Mon Materials from class: programming assignment
Time-O


due Mon 5/4 in class
revise-and-resubmit for hw5 #1-2, hw6, hw7

due Mon 4/20

comments on hw5, comments on hw6, comments on hw7

Wed HWS Day (no class) homework 12

due Mon 5/4
 

Fri
exam
 

Week 14: 4/27-5/1

Topics: dynamic programming; reductions; complexity

 

Mon Materials from class:  

lab session
Tue 4-5pm
Wed Reading:
  • ADM 11.1-11.2 (reductions for algorithms)
  • ADM 11.3-11.6 (reductions for hardness)
Materials from class:
 

Fri Reading:
  • ADM 11.9 (P vs NP)
Materials from class:
homework 13

due Mon 5/4
 

Week 15: 5/4

Topics: dealing with NP-complete problems; wrapup

 

Mon Reading:
  • ADM 9.6-9.7 (best-first search, A* heuristic)
  • ADM 12.6, 12.9 (heuristic search methods, genetic algorithms)
  • ADM 12.7-12.8 (war stories)
Materials from class:
    Time-O interviews

Reading Period: 5/5-5/7

 

Tue office hours: 12:30-3:30pm      

Wed office hours: 1-4pm      

Thu      

Exams: 5/8-5/11

 

Fri office hours: 11am-2pm      

Sat      

Sun office hours: 11am-2pm      

Mon
exam 8:30-11:30am, Gulick 201
end of semester deadline
no work accepted after 11:30am
revise-and-resubmit for hw8 #1-3, hw9, graph ADT, dijkstra, ski-o

due Mon 5/11 8:30am

for programs, please name your resubmit with the form origname_resub

comments on hw8, comments on hw9, comments on graph ADT, comments on dijkstra, comments on ski-o