CPSC 327 Data Structures and Algorithms Spring 2022

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/24-1/28

Topics: course introduction; analysis of algorithms

 

Mon In Class:    

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"

In Class:

  • slides: algorithm analysis (RAM model of computation, O/Ω/Θ, best and worst cases, understanding growth rates)
   

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

In Class:

homework 1
due Mon 1/31

resubmit due Fri 2/11

Week 2: 1/31-2/4

Topics: algorithm analysis; data structures; containers

 

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

In Class:

homework 2
due Wed 2/2

resubmit due Wed 2/16
 

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

In Class:

  • slides: containers (container ADTs; data structures - arrays, linked lists)
homework 3
due Fri 2/4

resubmit due Fri 2/18
 

Fri In Class: homework 4
due Mon 2/7

resubmit due Fri 2/18

Week 3: 2/7-2/11

Topics: searching and lookup; balanced BSTs

 

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

In Class:

homework 5
due Wed 2/9

resubmit due Mon 2/21 Wed 2/23
 

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

In Class:

   

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

In Class:

  • slides: balanced BSTs (comments on hw3, hw4; AVL trees; an aside about splay trees; 2-4 trees)
homework 6
due Mon 2/14

resubmit due Mon 2/28

Week 4: 2/14-2/18

Topics: hashtables; sorting and incremental sorting; heaps

 

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

In Class:

homework 7
due Wed 2/16

resubmit due Mon 2/28
 

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

In Class:

   

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

In Class:

homework 8
due Mon 2/21

resubmit due Wed 3/2

Week 5: 2/21-2/25

Topics: hitchhiker's guide to data structures; 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 (hitchhiker's guide) - skim
Warmup: on Canvas, under "Quizzes"

In Class:

   

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

In Class:

  • slides: graphs (terminology, modeling with graphs)
homework 9
due Fri 2/25

resubmit due Mon 3/14
 

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"

In Class:

  • slides: graphs (Graph ADT and implementation)
homework 10
due Wed 3/9

resubmit due Wed 3/30

Week 6: 2/28-3/4

Topics: graph traversals; BFS and BFS-based algorithms; DFS and DFS-based algorithms; 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"

In Class:

 

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

In Class:

exam 1
due Mon 3/7

on Canvas, under "Assignments"

(review information)

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

In Class:


Week 7: 3/7-3/11

Topics: minimum spanning trees; solving problems with graphs; 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"

In Class:

 

Wed Reading:
  • ADM 8.2, 8.4, 8.7 (solving problems using graphs)
  • ADM 8.1.4, 8.5, 8.6 (more graph algorithms) - skim
  • ADM 18 (hitchhiker's guide) - skim
Warmup: on Canvas, under "Quizzes"

In Class:

homework 11
due Fri 3/11

resubmit due Wed 3/30
 

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

In Class:

homework 12
due Fri 3/18

resubmit due Mon 4/11

Week 8: 3/14-3/18

Topics: developing iterative algorithms

 

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

In Class:

 

Wed In Class:  

Fri In Class:

Spring Break: 3/19-3/27


Week 9: 3/28-4/1

Topics: developing greedy algorithms

 

Mon Reading: Warmup: no warmup

In Class:

homework 13
due Wed 3/30

resubmit due Wed 4/13
 

Wed In Class:   exam 2, part 1
due Fri 4/1

on Canvas, under "Assignments"

(review information)

Fri In Class: homework 14
due Wed 4/6

resubmit due Fri 4/15

Week 10: 4/4-4/8

Topics: developing recursive algorithms; divide-and-conquer

 

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

In Class:

 

Wed 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

In Class:

homework 15
due Fri 4/8

resubmit due Mon 4/18
 

Fri In Class: homework 16
due Mon 4/11

resubmit due Fri 4/22

Week 11: 4/11-4/15

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

 

Mon In Class:    

Wed Reading: Warmup: no warmup

In Class:

homework 17
due Fri 4/15

resubmit due Fri 5/6
 

Fri Reading: Warmup: no warmup

In Class:

homework 18
due Mon 4/18

resubmit due Fri 5/6

Week 12: 4/18-4/22

Topics: dynamic programming

 

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

In Class:

  exam 2, part 2
due Wed 4/20

on Canvas, under "Assignments"

(review information)

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

In Class:

homework 19
due Fri 4/22

resubmit due Fri 5/6
 

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

In Class:

  • examples: edit distance (dynamic programming) - rough version, from class
homework 20
due Mon 4/25

resubmit due Fri 5/6

Week 13: 4/25-4/29

Topics: developing algorithms: 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

In Class:

homework 21
due Fri 5/6
 

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

In Class:

 

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

In Class:

homework 22
due Mon 5/2

Week 14: 5/2-5/6

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

In Class:

homework 21 (continued)
due Fri 5/6
 

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

In Class:

 

Fri *** bring a device (laptop, tablet, phone) if you can ***

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

In Class:

  exam 3
(review information)

final exam
(review information)

on Canvas, under "Assignments"
exam resubmit opportunity
(information)

Reading Period: 5/7-5/9

 

Sat  

Sun  

Mon office hours: 11am-1pm  

Exams: 5/10-5/13

 

Tue office hours: 11am-1pm  

Wed office hours: 11am-1pm  

Thu office hours: 11am-1pm  

Fri end-of-semester deadline
no work accepted after 5/13 4:30pm