Design and Analysis of Computer Algorithms

Spring 2017, lectured by Prof. H. Choo

This is a fundamental and important course for undergraduate students with prior knowledge of C and Data Structures. This course provides significant basic concepts of computer science and engineering, the philosophy behind the theory, and actual applications to real world. During the course students can learn the design of advanced data structures, the techniques for designing and analyzing the efficiency of algorithms, the methods of obtaining efficient algorithms. The main purpose of this course is to introduce key algorithms which are essential for solving computeroriented problems, and techniques for easier creation of other efficient algorithms. We cover advanced techniques behind data structures for analyzing upper and lower bounds for many essential algorithms in this area. Problems discussed during the semester include sorting, searching, advanced data structures, dynamic programming, divide-and-conquer method, greedy methods, graph algorithms, and maximum flow problem.

Office Information

Office: Engineering II (27304) / Phone: (031)290-7145
Office hour: TBA
Teaching assistant: Dang Thien Binh (26317, )


Introduction to Algorithms, 3rd Edition
by T.H.Cormen, C.E. Leiserson,
R.L. Rivest, MIT Press, 2009



1. No class on Wednesday, April 5th, 2017. The makeup class will be on May 3rd, 2017. Room will be announced later.

Lecture notes

Lecture 0. C Programming and Data Structures
Lecture 1. Introduction/Insertion Sort/Merge Sort
Lecture 2. Growth of Functions/Asymptotics
Lecture 3. Recurrences/Heapsort
Lecture 4. Quicksort
Lecture 5. Counting Sort/Radix Sort


Homework #1
Homework #1

Programming tool

Dev-C++ 5.11