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

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

- unambiguous problem specification
- semantics of operational primitives
- algorithm design (as prerequisite to 'coding'/implementing)
- and analysis (correctness, cost)
- with proof of optimality.

### Synopsis

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

- memory,
- parallel time/depth,
- size=#CPUs/gates,
- communication volume,
- #coin flips etc.

And we discuss, design, and analyze algorithms in various *modes* *beyond* the traditional worst-case,
such as

- average-case,
- expected,
- amortized,
- competitive (ratio),
- approx. ratio etc.

The practical impact of these algorithms is demonstrated in selected implementations.

### Administration:

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)

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