CSC 454/654 – Spring 2020 – Schedule

Note: This is the original class schedule, as planned for a fully face-to-face class. With the transition to online teaching, this is no longer accurate but is kept for reference. Please see the current schedule for current information.

The following gives a day-by-day breakdown of topics covered, readings assigned, and assignment handouts/due dates. Each topic includes several required readings that students should read before the topic is discussed in class – always look ahead a few days to see what readings you should be doing. Some topics also have supplemental (non-required) readings that students can look into if they want to delve more deeply into that topic.

The schedule in this class is flexible, and past dates will be updated to reflect what was actually covered. Future dates are always tentative and subject to change.

Day 1: Monday, January 13.

Topics: Class overview and syllabus review; introduction to the study of algorithms
Reading: Perrin Number Information and Chapter 1
Handout: Syllabus

Day 2: Wednesday, January 15

Topics: Basics of algorithm analysis
Reading: Chapter 2

Note: No class on Monday, January 21 (Martin Luther King, Jr. Holiday)
Day 3: Wednesday, January 22

Topics: Asymptotic notation and summations
Reading: Chapter 3 and Appendix A
Assigned: Assignment 1

Day 4: Monday, January 27

Topics: Divide-and-conquer basics
Reading: Sections 4.1 and Karatsuba Multiplication

Day 5: Wednesday, January 29

Topics: Recurrences
Reading: Sections 4.3–4.5 (note: 4.3–4.4 are for review)

Day 6: Monday, February 3

Due: Assignment 1
Topics: Divide-and-conquer in computational geometry: closest pair
Reading: Section 33.4
Assigned: Assignment 2

Day 7: Wednesday, February 5

Topics: Randomized algorithms and quicksort basics
Reading: Sections 5.1–5.3 and 7.1–7.2

Day 8: Monday, February 10

Topics: Randomized quicksort and selection
Reading: Sections 7.3–7.4 and Chapter 9

Day 9: Wednesday, February 12

Topics: Lower bound for comparison-based sorting
Reading: Section 8.1

Day 10: Monday, February 17

Due: Assignment 2
Topics: Revew/Problem solving day

Day 11: Wednesday, February 19

Topics: Exam 1

Day 12: Monday, February 24

Topics: Dynamic programming - day 1
Reading: Chapter 15
Assigned: Assignment 3

Day 13: Wednesday, February 26

Topics: Dynamic programming - day 2

Note: No class on March 2 – 6 (Spring Break)
Day 14: Monday, March 9

Topics: Dynamic programming - day 3

Day 15: Wednesday, March 11

Topics: Greedy algorithms - day 1
Reading: Sections 16.1 – 16.3

Day 16: Monday, March 16

Due: Assignment 3
Topics: Greedy algorithms – day 2

Day 17: Wednesday, March 18

Topics: Basic graph algorithms
Reading: Chapter 22

Day 18: Monday, March 23

Topics: Minimum spanning tree algorithms
Reading: Chapter 23

Day 19: Wednesday, March 25

Topics: Revew/Problem solving day

Day 20: Monday, March 30

Topics: Exam 2

Day 21: Wednesday, April 1

Topics: Single-source shortest path algorithms
Reading: Chapter 24

Day 22: Monday, April 6

Topics: All-pairs shortest path algorithms
Reading: Chapter 25

Day 23: Wednesday, April 8

Topics: Maximum flow – day 1
Reading: Sections 26.1 – 26.3

Day 24: Monday, April 13

Topics: Maximum flow – day 2

Day 25: Wednesday, April 15

Topics: NP-completeness – day 1
Reading: Chapter 34

Day 26: Monday, April 20

Topics: NP-completeness – day 2

Day 27: Wednesday, April 22

Topics: NP-completeness – day 3

Day 28: Monday, April 27

Topics: Comping with NP-completness – approximation algorithms
Reading: Sections 35.1 – 35.3

Day 29: Wednesday, April 29

Topics: Last day of class – review

Final Exam

Friday, May 1, 7:00-10:00