ACS-3947-050 Algorithm Design

This course focuses on the connection between data structures and the corresponding algorithms, including simple analysis of computational complexity. The emphasis is on comparative study of alternate ways to implement solutions to computing problems. Requisite Courses: ACS-2913 (or the former ACS-2911 and ACS-2912) and ACS-2947 with a minimum grade of C.


Office Hour: Thursdays 3:00-4:00pm 3C08B

Class meeting time: Tuesdays 6:00-9:00pm 3D04


Course outline

Lecture notes

Introduction (2023.9.5)
Trees (2023.9.12)
Graphs - data structures and graph traversals (2023.9.19)
Graphs - algorithms (2023.9.26)
Greedy Algorithm - interval schedulling, shortest paths (2023.10.3)
Greedy Algorithm - minimum spaning tree, data compression (2023.10.17)
Divide and Conquer (2023.10.24)
Divide and Conquer - recurrences (2023.11.7)
Dynamic Programming - 1 (2023.11.14)
Dynamic Programming - 2 (2023.11.21)
Network Flow (2023.11.28)

Assignments

Assignment 1 (Due at 8:00pm 2023.9.24)
Assignment 2 (Due at 8:00pm 2023.10.15)
Assignment 3 (Due at 8:00pm 2023.11.12)
Assignment 4 (Due at 8:00pm 2023.12.3)

Exams

Midterm test (2023.10.31)
Final (TBD)