Computer Science 385
Design and Analysis of Algorithms

Spring 2024, Siena College

Course Schedule

"Levitin" indicates readings from Introduction to The Design and Analysis of Algorithms, Third Edition, by Anany Levitin, "Bailey" from Java Structures: Data Structures in Java for the Principled Programmer, "Root 7" Edition, by Duane Bailey. Additional readings will be given occasionally. Links will be added here with additional information about lectures and problem sets. All assignment dates are subject to change, and are provided only as a general guideline until the actual assignment is handed out in class.

Date

Topic and/or Event Readings
January 17 Lecture 1: Introduction and Overview; Lab 0: Data Structures Refresher Topic Notes: Introduction and Overview; Topic Notes: Fundamental Data Structures; Levitin Ch. 1
January 19 Lecture 2: Bubble Sort; Counting Operations; GCD; Summations Practice Levitin Ch. 2.3; Topic Notes: Counting Operations
January 22 Lecture 3: Graph Data Structures Topic Notes: Fundamental Data Structures: Graphs; Bailey Ch. 16.1-16.3
January 24 Lecture 4: Lab Meeting #1; Lab 1: Counting Operations, Graphs (paper handout only) Knuth article: NYT Site or Library Archive also in Canvas
January 26 Lecture 5: Asymptotic Analysis; Analysis Practice Topic Notes: Analysis Fundamentals; Levitin Ch. 2.1-2.2
January 29 Lecture 6: Asymptotic Analysis
January 31 Lecture 7: Lab Meeting #2; Lab 2: METAL Data and Analysis Practice (paper handout and shared document)
February 2 Lecture 8: Brute-Force Algorithms; Brute Force Practice Topic Notes: Brute-Force Algorithms; Levitin Ch. 3
February 5 Lecture 9: Brute Force/Exhaustive Search; Exhaustive Search Practice
February 7 Lecture 10: Lab Meeting #3; Lab 3: Brute-Force Closest Pair (paper handout and shared document)
February 9 Lecture 11: Brute-Force Convex Hull
February 12 Lecture 12: Decrease and Conquer Algorithms; Recurrences; Decrease and Conquer Practice Topic Notes: Decrease and Conquer Algorithms; Levitin Ch. 2.4, 4
February 14 Lecture 13: Lab Meeting #4; Lab 4: Brute Force and Decrease and Conquer (paper handout only)
February 16 Lecture 14: Solving Recurrences
February 19 Lecture 15: Decrease and Conquer Wrapup; Review
February 21 Exam 1 During Lab Meeting Times (alternate time: 2 hours between Noon and 3 on Tuesday 2/20)
February 23 No Class: February Break
February 26 Lecture 16: Decrease and Conquer Wrapup; Divide and Conquer Introduction Topic Notes: Divide and Conquer Algorithms; Levitin Ch. 5
February 28 Lecture 17: Exam 1 Recap; Graph Traversals Intro; Lab Meeting #5; Lab 5: Graph Traversals (shared document only)
March 1 Lecture 18: Divide and Conquer Closest Pair
March 4 Lecture 19: More Divide and Conquer; Academic Showcase Project: [HTML] [PDF] Introduction
March 6 Lecture 20: Quicksort Wrapup; Lab Meeting #6; Lab 6: Recurrences and Divide and Conquer
March 8 Lecture 21: Lab 6 Wrapup; AVL Trees Topic Notes: AVL Trees
March 11 Lecture 22: AVL Trees; 2-3 Trees Topic Notes: 2-3 Trees; Levitin Ch. 6.3
March 13 Lecture 23: Lab Meeting #7; Lab 7: Search Trees
March 15 Lecture 24: Dynamic Programming Levitin Ch. 8; Topic Notes: Dynamic Programming
March 18 Lecture 25: Dynamic Programming
March 20 Exam 2 During Lab Meeting Times
March 22 Lecture 26: (Virtual Lecture) Hashing Levitin Ch. 7.3; Topic Notes: Hashing
March 25-April 1 No Classes or Labs: Happy Easter!
April 3 Lecture 27: Lab Meeting #8; Lab 8: Dynamic Programming
April 5 Lecture 28: Greedy Algorithms Topic Notes: Greedy Algorithms; Levitin Ch. 9
April 8 No Class: Eclipse Day! Get in the Shadow! Work on your Problem Sets! Levitin Ch. 6.4-6.5; Topic Notes: Heaps
April 10 Lecture 29: Lab Meeting #9; Lab 9: Prim's Algorithm, Dijkstra's Algorithm, Traversals
April 12 Lecture 30: Greedy Algorithms Wrapup Topic Notes: Dijkstra's Algorithm Handout;
April 15 Lecture 31: Backtracking Levitin Ch. 12.1
April 17 Lecture 32: Lab Meeting #10; Lab 10: Backtracking
April 19 Lecture 33: Limitations of Algorithms Levitin Ch. 11; Topic Notes: Limitations of Algorithms
April 22 Lecture 34: Limitations of Algorithms
April 24 Lecture 35: Lab Meeting #11
April 26 Academic Showcase: 1:45-2:45, RB 340 - this is a required part of the course
April 29 Lecture 36: P and NP; Wrapup
May 1 Final Exam, 4-6 PM, RB 340