CPSC 327 Data Structures and Algorithms Spring 2023

CPSC 327 Schedule

Reading is to be done for the class period where it is listed; "ADM" refers to the textbook (The Algorithm Design Manual). Warmups are due by 10pm the night before the class for which they are listed.

Dates for things in light gray are for planning purposes and may be adjusted slightly.

 Assignments

Week 1: 1/23-1/27

Topics: course introduction; analysis of algorithms

 

Mon Materials from class: introductory survey (on Canvas, under "Quizzes")
due Fri 1/27
 

Wed Reading:
  • ADM 2.1-2.5 (RAM model of computation, big-Oh, growth rates and dominance relations, working with big-Oh, reasoning about efficiency)
Warmup: on Canvas, under "Quizzes"

Materials from class:

   

Fri Reading: Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 1
due Mon 1/30

resubmit due Wed 2/8
 

Week 2: 1/30-2/3

Topics: analysis of algorithms; data structures: building blocks, designing implementations; containers


Mon Reading:
  • ADM 4.6.3 (limitations of asymptotic complexity)
Warmup: no warmup (but do the reading anyway!)

Materials from class:

homework 2
due Wed 2/1

resubmit due Wed 2/15
 

Wed Reading:
  • ADM ch 3 intro, 3.1-3.2 (review of arrays and linked lists, stacks and queues)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 3
due Mon 2/6

resubmit due Wed 2/15
 

Fri Reading:
  • data structures toolbox (arrays vs linked lists, incremental improvement, specific strategies: tail pointers, circular array)
homework 4
due Mon 2/6

resubmit due Fri 2/17
 

Week 3: 2/6-2/10

Topics: data structures: searching and lookup; balanced search trees

 

Mon Reading:
  • ADM 3.3 (dictionaries)
  • ADM 3.4-3.4.2 (BSTs)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 5
due Wed 2/8

resubmit due Fri 2/17
 

Wed Reading:
  • ADM 3.4.3 (balanced search trees)
  • AVL trees
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 6
due Fri 2/10

resubmit due Mon 2/20
 

Fri Reading: Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 7
due Mon 2/13

resubmit due Fri 2/24
 

Week 4: 2/13-2/17

Topics: hashtables; data structures: sorting; priority queues, heaps

 

Mon Reading:
  • ADM 3.7 (hashing and hashtables)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 8
due Fri 2/17

resubmit due Mon 2/27
 

Wed Reading:
  • ADM 4.1, 4.2, 4.4 (applications and pragmatics of sorting)
  • ADM 3.5 (priority queues)
Warmup: on Canvas, under "Quizzes"

Additional reading/reference:

  • ADM 17.1 (sorting)

Materials from class:

 

Fri Reading:
  • ADM 4.3 (heaps and heapsort)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 9
due Mon 2/20

resubmit due Mon 3/6
 

Week 5: 2/20-2/24

Topics: data structures toolbox; graphs

 

Mon Reading:
  • ADM 3.7.2-3.7.5 (other uses of hashing)
  • ADM 3.6, 3.8-3.9 (custom and specialized data structures)
  • ADM 15 intro, 15.1-15.3, 15.5-15.6 (hitchhiker's guide) - read to be aware of what is there
Warmup: on Canvas, under "Quizzes"

Materials from class:

  exam 1
due Wed 2/22

in the Assignments section on Canvas

(review information)

resubmit due Wed 5/10 4:30pm

Wed Reading:
  • ADM 7 intro, 7.1 (graphs)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 10
due Fri 2/24

resubmit due Mon 4/3
 

Fri Reading:
  • ADM 7.2-7.4 (data structures for graphs) - pay attention to the data structures and how they work rather than the C code
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 11
due Fri 3/3

resubmit due Mon 4/3
 

Week 6: 2/27-3/3

Topics: graph algorithms: traversals, best-first search, depth-first search, weighted shortest path


Mon Reading:
  • ADM 7.5 (graph traversals)
  • ADM 7.6-7.7 (BFS and applications of BFS)
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Wed Reading:
  • ADM 7.8-7.10 (DFS and applications of DFS)
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Fri Reading:
  • ADM 8 intro, ADM 8.3 (weighted graph algorithms, shortest paths)
Warmup: on Canvas, under "Quizzes"

Materials from class:

  • slides: weighted graph algorithms (topological sort, strongly connected components; shortest path, all pairs shortest path, transitive closure)
homework 12
due Mon 3/6

resubmit due Fri 3/17
 

Week 7: 3/6-3/10

Topics: minimum spanning trees; solving problems with graphs; algorithm development: establishing correctness

 

Mon Reading:
  • ADM 8.1-8.1.3, including the introduction for section 8.1 (minimum spanning trees)
Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 13
due Mon 3/13

resubmit due Mon 4/10
 

Wed Reading:
  • ADM 8.2, 8.4, 8.7 (solving problems using graphs)
  • ADM 8.1.4, 8.5, 8.6 (more graph algorithms) - read to be aware of what things like maximum spanning trees, network flow, bipartite matching, min-cut, etc are and how they might come up in graph modeling problem (you don't need to know algorithms or running times)
  • ADM 18 (hitchhiker's guide) - read to be aware of what is there
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Fri Reading:
  • ADM 1.1-1.3 (reasoning about algorithm correctness)
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Week 8: 3/13-3/17

Topics: developing iterative algorithms

 

Mon Reading: Warmup: on Canvas, under "Quizzes"

Materials from class:

  exam 2
due Wed 3/15

in the Assignments section on Canvas

(review information)

resubmit due Wed 5/10 4:30pm

Wed Materials from class:
  • examples: region coloring (developing iterative algorithms) - in progress
homework 14
due Fri 3/17

resubmit due Wed 4/5
 

Fri Materials from class:
  • examples: region coloring (developing iterative algorithms) - in progress
  • examples: region coloring (developing iterative algorithms) - solution/writeup
   

Spring Break: 3/20-3/24


Week 9: 3/27-3/31

Topics: developing iterative algorithms; developing greedy algorithms

 

Mon Reading: Materials from class: homework 15
due Wed 3/29

resubmit due Mon 4/10
 

Wed Materials from class:
  • examples: snowplowing (developing iterative algorithms) - in progress
  • examples: snowplowing (developing iterative algorithms) - solution/writeup
homework 16
due Fri 3/31

resubmit due Mon 4/10
 

Fri Materials from class: homework 17
due Mon 4/3

resubmit due Mon 4/24
 

Week 10: 4/3-4/7

Topics: developing greedy algorithms; developing recursive algorithms; divide-and-conquer

 

Mon Materials from class: homework 18
due Wed 4/5

resubmit due Wed 4/26
 

Wed Reading: Warmup: on Canvas, under "Quizzes"

Materials from class:

homework 19
due Fri 4/7

resubmit due Wed 4/26
 

Fri Reading:
  • ADM 5.1, 5.2 (binary search and related algorithms)
  • ADM 4.5-4.6 intro, 5.5-5.6 (divide-and-conquer examples)
Warmup: no warmup (but do the reading anyway!)

Materials from class:

homework 20
due Mon 4/10

resubmit due Fri 4/28
 

Week 11: 4/10-4/14

Topics: developing recursive algorithms: divide-and-conquer, recursive backtracking, branch and bound

 

Mon Materials from class:
  • examples: hw10 - monster (developing iterative algorithms) - solution/writeup
  • examples: stocks (developing divide-and-conquer algorithms) - in progress
  • examples: stocks (developing divide-and-conquer algorithms) - solution/writeup
  • examples: majority element (developing divide-and-conquer algorithms) - in progress
  • examples: majority element (developing divide-and-conquer algorithms) - solution/writeup
  exam 3
due Wed 4/12

in the Assignments section on Canvas

(review information)

resubmit due Wed 5/10 4:30pm

Wed Reading: Warmup: no warmup

Materials from class:

homework 21
due Fri 4/14

resubmit due Wed 5/3
 

Fri Reading: Warmup: no warmup

Materials from class:

homework 22
due Mon 4/17

resubmit due Wed 5/3
 

Week 12: 4/17-4/21

Topics: dynamic programming

 

Mon Reading:
  • ADM 10-10.3 (dynamic programming)
Warmup: no warmup

Materials from class:

homework 23
due Wed 4/19

resubmit due Mon 5/1
 

Wed Reading:
  • ADM 10.5, 10.7-10.8 (dynamic programming examples)
Warmup: no warmup

Materials from class:

homework 24
due Fri 4/21

resubmit due Fri 5/5
 

Fri Reading:
  • ADM 10.4, 10.6, 10.10 (war stories)
Warmup: no warmup

Materials from class:

homework 25
due Mon 4/24

resubmit due Fri 5/5
 

Week 13: 4/24-4/28

Topics: developing algorithms: wrapup, strategies for improvement, beyond big-Oh; hard problems: reductions, complexity classes


Mon Reading:
  • ADM 4.7 (distribution sort)
  • ADM 4.6.2, chapter 6 introduction (randomization as an algorithmic technique)
  • ADM 4.6.3, 4.8 (beyond big-Oh)
  • (optional) ADM chapter 6 (randomized algorithms)
Warmup: no warmup

Materials from class:

homework 26
due Fri 5/5
 

Wed Reading:
  • ADM 11.1-11.8 (reductions)
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Fri Reading:
  • ADM 11.9 (P vs NP)
Warmup: on Canvas, under "Quizzes"

Materials from class:

 

Week 14: 5/1-5/5

Topics: dealing with NP-complete problems; wrapup

 

Mon Reading:
  • ADM 9.6-9.7 (best-first search, A*)
  • ADM 12.6-12.9 (heuristic seach methods)
Warmup: no warmup

Materials from class:

  • slides: complexity (P/NP/FP/FNP, P- and NP-complete, reductions for lower bounds and completeness)
homework 27
due Wed 5/3

resubmit due Wed 5/10

Wed Reading:
  • ADM 12.1-12.5 (approximation)
Warmup: no warmup

Materials from class:

homework 26
(continued)
due Fri 5/5

Fri Reading:

  • browse ADM part II (chapters 14-22) - for each chapter, read the introduction, skim the section titles, and pick one or two unfamiliar problems to read about
Warmup: no warmup

Materials from class:

 

Reading Period: 5/6-5/8

 

Sat    

Sun    

Mon review session 10am-noon (Lansing 301)
office hours 12:30-2:30pm

Materials from class:

   

Final Exams: 5/9-5/12


Tue office hours 11:30-1:30pm    

Wed office hours 11:30-1:30pm end-of-semester deadline
no work accepted after 5/10 4:30pm
final exam
due 5/10 4:30pm

in the Assignments section on Canvas (available after 5/8 12pm)

(review information)


Thu    

Fri