CPSC 327 Data Structures and Algorithms Spring 2025

CPSC 327 Schedule

Class preparation assignments are generally based on the assigned reading and are due by 10pm the night before the class for which they are listed. For readings, "ADM" refers to the textbook (The Algorithm Design Manual).

Dates for things in light gray are for planning purposes and may be adjusted slightly. Expect class preparation assignments for most classes, weekly homeworks, and several programming assignments.

 Assignments

Week 1: 1/21-1/24

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:
class prep — ADM 2.1-2.4
(on Canvas)

due Thu 1/23 10pm
     

Week 2: 1/27-1/31

Topics: analysis of algorithms; ADTs

 

Mon Reading: Materials from class: class prep — big-Oh for sums and recurrence relations, ADM 2.7-2.8
(on Canvas)

due Sun 1/26 10pm
     

Wed Reading:
  • ADM 4.6.3 (limitations of asymptotic complexity)
Materials from class:
  homework 1

due Fri 2/7 in class
   

Fri Reading:
  • ADM chapter 3 intro (page 69)
  • ADM 3.1 (arrays and linked lists)
  • ADM 3.2-3.3 (stacks, queues, dictionaries)
  • ADM 3.5 (priority queues) — for the "stop and think" about implementation, focus on the unsorted and sorted array implementations
Materials from class:
class prep — ADM 3.1
(on Canvas)

due Thu 1/30 10pm
   

Week 3: 2/3-2/7

Topics: data structures: arrays, linked lists, binary trees; binary search trees, balanced BSTs

 

Mon Materials from class:
  • slides: data structures (arrays, linked lists, implementations of containers)
     

Wed Reading:
  • ADM 3.4-3.4.2 (binary search trees)
Materials from class:
class prep — BSTs
(on Canvas)

due Tue 2/4 10pm
   

Fri Reading:
  • ADM 3.4.3 (balanced search trees)
  • AVL trees
Materials from class:
class prep — AVL trees
(on Canvas)

due Thu 2/6 10pm
homework 2 [corrected!]

due Fri 2/14 in class
   

Week 4: 2/10-2/14

Topics: balanced search trees (2-4 trees); heaps; hashtables

 

Mon Reading: Materials from class: class prep — 2-4 trees
(on Canvas)

due Sun 2/9 10pm
   

Wed Reading:
  • ADM 4.3.1-4.3.4 (heaps)
Materials from class:
class prep — heaps
(on Canvas)

due Tue 2/11 10pm
   

Fri Reading:
  • ADM 3.7-3.7.1 (hashing and hashtables)
Materials from class:
class prep — hashtables
(on Canvas)

due Thu 2/13 10pm
homework 3

due Fri 2/21 in class
   

Week 5: 2/17-2/21

Topics: specialized data structures; developing data structures; applications of data structures and fundamental techniques

 

Mon Reading:
  • ADM 3.8-3.9 (specialized data structures)
  • ADM 15 (hitchhiker's guide) — skim, focusing on what each data structure is, its applications, and an overview of the relevant variations and considerations
Materials from class:
class prep — ADM 15
(on Canvas)

due Sun 2/16 10pm
   

Wed Reading:
  • ADM 4.1-4.2, 4.3, 4.3.5, 4.5-4.7, 4.8, 17.1 (sorting)
Materials from class:
class prep — sorting
(on Canvas)

due Tue 2/18 10pm
   

Fri Reading:
  • ADM 3.6, 4.4 (applications of containers)
  • ADM 17.2-17.3 (searching and selection)
  • ADM 3.7.2-3.7.5 (other uses of hashing)
Materials from class:
class prep — fundamental techniques
(on Canvas)

due Thu 2/20 10pm
homework 4

due Fri 2/28 in class
   

Week 6: 2/24-2/28

Topics: graphs, graph traversal, BFS and BFS-based algorithms

 

Mon Reading:
  • ADM 7 (introduction), 7.1 (graphs and graph terminology)
  • ADM 7.2 data structures for graphs — pay attention to the data structures and how they work rather than the C code
  • ADM 7.3-7.4 (war stories)
Materials from class:
  • slides: graphs (terminology, Graph ADT and implementation)
class prep — ADM 7.1-7.2
(on Canvas)

due Sun 2/23 10pm
programming assignment 1
Graph ADT


due Fri 3/7 in class

help sessions:
Wed 2/26 8:30-9:30am
Thu 2/27 3-4pm
Lansing 301
hw1 resubmit
due Mon 2/24 in class

feedback

Wed
exam 1
   

Fri Reading:
  • ADM 7.5 (graph traversals)
  • ADM 7.6-7.7 (BFS and BFS-based algorithms and applications)
Materials from class:
class prep — ADM 7.5-7.7
(on Canvas)

due Thu 2/27 10pm
homework 5

due Mon 3/10 in class
 

Week 7: 3/3-3/7

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

 

Mon Reading:
  • ADM 7.8-7.10 (DFS and DFS-based algorithms and applications)
Materials from class:
  • slides: BFS (BFS-based algorithms)
  • slides: DFS (DFS, DFS-based algorithms)
class prepADM 7.8-7.10
(on Canvas)

due Sun 3/2 10pm
hw2 resubmit
due Mon 3/3 in class

feedback

Wed Reading:
  • ADM 8 introduction (weighted graph algorithms)
  • ADM 8.3 (shortest paths)
Materials from class:
  • slides: DFS (DFS-based algorithms for directed graphs)
  • slides: shortest paths (Dijkstra's algorithm)
class prepADM 8 intro, 8.3
(on Canvas)

due Tue 3/4 10pm
 

Fri Reading:
  • ADM 8.1-8.1.3 (minimum spanning trees)
Materials from class:
class prep — ADM 8.1-8.1.3
(on Canvas)

due Thu 3/6 10pm
programming assignment 2
Dijkstra's Algorithm


due Fri 3/14 in class

Week 8: 3/10-3/14

Topics: solving problems with graphs; divide-and-conquer algorithms

 

Mon Reading:
  • ADM 8.7 (design graphs, not algorithms)
  • ADM 7.1.1, 8.2, 8.4 (examples and war stories)
Materials from class:
class prep — ADM 8.7
(on Canvas)

due Sun 3/9 10pm
homework 6

due Wed 3/26 in class
 

Wed Reading:
  • ADM 18 (hitchhiker's guide) — skim, focusing on what each problem is, its applications, and an overview of the relevant variations and considerations
  • ADM 8.1.4 (variations on MST)
  • ADM 8.5 (except 8.5.2), 8.6 (network flows, bipartite matching, min-cut) — skim, focusing on what each problem is and its applications rather than the algorithms for solving the problem
Materials from class:
class prep — ADM 8.1.4, 8.2, 8.5-8.6, 18
(on Canvas)

due Tue 3/11 10pm
hw3 resubmit
due Wed 3/12 in class

feedback

Fri Reading: (for the week after spring break if you don't get to it before class) Materials from class:  

Spring Break: 3/17-3/21


Week 9: 3/24-3/28

Topics: divide-and-conquer algorithms; iterative algorithms


Mon Materials from class:
  • examples: sorting — from class (in progress) (developing divide-and-conquer algorithms)
  programming assignment 3
Ski-O


due Mon 4/7 in class
 

Wed Additional Reading: (encouraged)
  • ADM 5.1, 5.5-5.6, 4.5-4.6 (divide and conquer examples)
  • ADM 5.2 (war stories)
Materials from class:
  homework 7

due Fri 4/4 in class
 

Fri Reading: Materials from class: class prep — iterative algorithms
(on Canvas)

due Thu 3/27 10pm
 

Week 10: 3/31-4/4

Topics: iterative algorithms; greedy algorithms

 

Mon Materials from class:   hw4 resubmit
due Mon 3/31 in class

feedback

Wed
exam 2
   

Fri Reading:
  • developing greedy algorithms (to be posted)
Materials from class:
  homework 8

due Fri 4/11 in class
hw5 resubmit
due Fri 4/4 in class

feedback

Week 11: 4/7-4/11

Topics: greedy algorithms; backtracking

 

Mon Reading: Materials from class: class prep — greedy algorithms
(on Canvas)

due Sun 4/6 10pm
   

Wed Materials from class:
  • examples: Boston to Seattle — draft from class, final writeup (developing greedy algorithms — subset)
  • examples: event scheduling — final writeup (developing greedy algorithms — subset)
  • examples: callers on hold — final writeup (developing greedy algorithms — ordering)
   

Fri Reading: Additional Reading: (encouraged)
  • ADM 9.2 (examples)
Materials from class:
  homework 9

due Fri 4/18 in class
 

Week 12: 4/14-4/18

Topics: backtracking, pruning, branch and bound


Mon Reading: Additional Reading: (encouraged)
  • ADM 9.4 (example)
  • ADM 9.5 (war stories)
Materials from class:
class prep — pruning, branch and bound
(on Canvas)

due Sun 4/13 10pm
programming assignment 4
Time-O


due Mon 4/28 in class
Graph ADT resubmit
due Mon 4/14 in class

hand in as graphv2

feedback
hw6 resubmit
due Mon 4/14 in class

feedback

Wed
exam 3
   

Fri Materials from class:   homework 10

due Fri 4/25 in class
 

Week 13: 4/21-4/25

Topics: dynamic programming

 

Mon 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:
class prep — dynamic programming
(on Canvas)

due Sun 4/20 10pm
Dijkstra's Algorithm resubmit
due Mon 4/21 in class

hand in as dijkstrav2

feedback

Wed HWS Day — no class    

Fri Materials from class:   homework 11

due Fri 5/2 in class
 

Week 14: 4/28-5/2

Topics: reductions; complexity; dealing with NP-complete problems

 

Mon Reading:
  • ADM 11.1-11.6 (reductions and proving hardness)
  • ADM 11.7-11.8 (war stories)
Materials from class:
class prep — ADM 11.1-11.8
(on Canvas)

due Sun 4/27 10pm
   

  interviews
(see your email for the signup link)

signup deadline 4/28 11:59pm
Wed Reading:
  • ADM 11.9 (P vs NP)
Materials from class:
class prep — ADM 11.9
(on Canvas)

due Tue 4/29 10pm
Ski-O resubmit
due Wed 4/30 in class

hand in as skiov2

feedback

Fri 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:
  homework 12

due Mon 5/5 in class
 

Week 15: 5/5

Topics: dealing with NP-complete problems; wrapup

 

Mon     hw7 resubmit
due Mon 5/5 in class

priority: #2

feedback
hw8 resubmit
due Mon 5/5 in class

priority: #1, #3

feedback
hw9 resubmit
due Mon 5/5 in class

priority: #2

feedback

Reading Period: 5/6-5/8

 

Tue office hours: 12:30-4pm        

Wed office hours: 12:30-2:30pm       (optional)
exam 1-3 second chance
(to be posted)

(signup link to be emailed Monday evening)

Thu office hours: 12:30-4pm      

Final Exams: 5/9-5/12

 

Fri        

Sat
final exam
5/10 7-10pm
end-of-semester deadline
no work accepted after 5/10 10pm
hw10 resubmit
priority: #3, #4

hw11 resubmit
priority: #2

hw12 resubmit

Time-O resubmit

due Sat 5/10 10pm

Sun        

Mon