The following gives a schedule 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. Note that some topics, particularly weeks 1, 2, and 9, should be mostly review from earlier classes (CSC 250 and CSC 330), so we will go through these very quickly focusing primarily how this material fits in the context of general algorithm design.
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.
Reading: Perrin Number Information and Chapters 1–2
Tuesday: Class overview and syllabus review; intro to algorithms using Perrin numbers
Thursday: Review and discussion of formal notation, reasoning, and writing
Handout: Syllabus
Reading: Chapter 3 and Appendix A
Topics: Basics of algorithm analysis and asymptotic notation
Reading: Sections 4.1–4.2 (for Thursday)
Tuesday: Common functions and relative growth rates
Thursday: Divide-and-conquer basics and Strassen’s algorithm
Due Thursday: Assignment 1
Reading: Sections 4.3–4.5 (for Tuesday) and 7.1–7.4 (for Thursday)
Topics: Divide and Conquer, Recurrences, and Quicksort
Reading: Section 8.1
Topics: More on quicksort, Lower bound for comparison-based sorting, and exam review
Monday: Assignment 2 due at midnight
Tuesday: Mid-term Exam 1
Reading: Sections 15.1–15.3
Thurs: Dynamic programming, day 1
Reading: Section 15.4 and sample problems handout
Topic: Dynamic programming, week 2
Reading: Sections 16.1 – 16.3
Topic: Greedy algorithms
Reading: Sections 22.1 – 22.4
Topic: Elementary graph algorithms
Tuesday: Minimum spanning tree algorithms (Chapter 23)
Thursday: Single-source shortest paths (Sections 24.1–24.3)
Tuesday: All-pairs shortest paths (Sections 25.1–25.2) and exam review
Thursday: Mid-term Exam 2
Reading: Sections 34.1 – 34.4
Topic: NP-completeness
Reading: Sections 34.5
Topic: NP-completeness – practice and common errors
Reading: Sections 35.1 – 35.3
Topic: Coping with NP-completeness – approximation algorithms
Tuesday: Review/Problem solving day
No class Thursday (Reading Day)
Thursday, May 5, 12:00-3:00