Table of Contents

Design and Analysis of Algorithms (CS500) in Spring 2020 at KAIST's School of Computing

All Computer Science is based on the concept of an efficient algorithm: a finite sequence of primitive instructions that, when executed according to their well-specified semantics, provably provide a mechanical solution to the infinitely many instances of a complex mathematical problem within a guaranteed number of steps of least asymptotic growth. We thus call these the 'virtues' of Theoretical Computer Science:

Synopsis

Building on undergraduate CS300 (Introduction to Algorithms), the graduate-level course CS500 discusses the design of advanced algorithms and analyzes their behaviour with respect to various notions of performance such as

Their practical impact is demonstrated in selected implementations.

Administration:

Lecturer: Martin Ziegler

Classroom: Online

Schedule: Tuesdays and Thursdays, 9:00am to 10:30am
Lectures start from March 17th.

Language: English only

Teaching Assistants: 임동현 (klimdhn@kaist.ac.kr), Ivan Koswara (chaoticiak@kaist.ac.kr)

Homework: Handwritten individual solutions (English only) and programming assignments in ELICE.

Grading: In view of the recent switch to online teaching and cancelled midterm, the final grade is determined to 50% from homework and 50% from final exam.

Midterm: cancelled
Final exam: TBD

Prerequisites: CS204 (Discrete Mathematics), CS300 (Introduction to Algorithms)

Literature

Syllabus/Slides

0. Preliminaries (pdf,ppt,video)
1. Introduction (pdf,ppt,video)
2. Examples (pdf,ppt,video)
3. Tree Data Structures (pdf,ppt,video1,video2,video3,video4)
4. Amortized Analysis (pdf,ppt,video1,video2,video3,video4,video5,bonus)
5. Randomization (pdf,ppt,video1,video2,video3)
6. Online/Competitive (pdf,ppt,video1,video2,video3)
7. Complexity Theory (pdf,ppt,video1,video2)
8. Approximation (pdf,ppt,video1,video2,video3)
(9. Memory≈parallel Time)
10. Conclusion (pdf,ppt)

E-Learning: