All Computer Science is based on the concept of an efficient algorithm: as opposed to a program or a heuristic. We thus call these 'virtues' and features distinguishing CS from EE (Electrical Engineering):
Building on undergraduate CS300 (Introduction to Algorithms), the graduate-level course CS500 revolves around
advanced aspects of algorithms.
More specifically we discuss, design, and analyze algorithms with respect to various cost measures beyond traditional (=sequential) runtime,
such as
And we discuss, design, and analyze algorithms in various modes beyond the traditional worst-case, such as
The practical impact of these algorithms is demonstrated in selected implementations.
Lecturer: Martin Ziegler (use only this email address!)
Classroom: Online
Schedule: Tue+Thu 10h30~11h45am KST
Language: English only
Teaching Assistants: 현지훈 and 박정호
Homework: Handwritten individual solutions (English only) and programming assignments in ELICE.
Grading: 40% attendance/quizzes, 20% homework, 20% midterm, 20% final exam
Midterm: April 20, 9h00~11h45 in E3-1 #1501
Final exam: June 15, 9h00~11h45 in E3-1 #1501
Prerequisites: CS204 (Discrete Mathematics), CS300 (Introduction to Algorithms)
0. Summary (PPT, PDF)
1. Introduction (PPT, PDF)
2. Tree Data Structures (PPT, PDF)
3. Average-Case Analysis (PPT, PDF)
4. Amortized Analysis (PPT, PDF)
5. Randomized/Expected Analysis (PPT, PDF)
6. Online/Competitive Analysis (PPT, PDF)
7. P/NP Intermission (PPT, PDF)
8. Approximation (PPT, PDF)
9. parallel Time (PPT, PDF)
10. Memory (PPT, PDF)