# 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:

- full and unambiguous problem specification
- formal semantics of operational primitives
- algorithm design (as opposed to 'programming')
- and analysis (correctness, asymptotic cost)
- with proof of asymptotic optimality.

### 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

- worst-case,
- average-case,
- expected, and
- amortized runtime;
- memory use,
- competitive ratio,
- approximation ratio etc.

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

**Cormen, Leiserson, Rivest, Stein: Introduction to Algorithms (3rd Edition), MIT Press (2009).**- Dasgupta, Papadimitriou, Vazirani: Algorithms, McGraw-Hill (2006).
- Kleinberg, Tardos: Algorithm Design, Pearson (2006).
- Vöcking, Alt, Dietzfelbinger, Reischuk, Scheideler, Vollmer, Wagner: Algorithms Unplugged, Springer (2011).
- Introduction to the Analysis of Algorithms (Robert Sedgewick and Philippe Flajolet)
- Online Computation and Competitive Analysis (Allan Borodin and Ran El-Yaniv)
- Probability and Computing: Randomized Algorithms and Probabilistic Analysis (Michael Mitzenmacher and Eli Upfal)
- M. Sipser: Introduction to the theory of computation, Boston (1997)
- E. Vigoda: Graduate Algorithms
- R. Sedgewick: Algorithms
- Coursera: Data Structures and Algorithms

### 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)