Home|Publications|Projects|Research Interests|Teaching|Students|Experience|Announcements|Contact


ALGORITHM ANALYSIS
Description
Introduction to algorithms, algorithm analysis, Sorting algorithms (selection sort, insertion sort, bubble sort, shell sort, merge sort, quick sort, heap sort), sorting in linear time (count sort, radix sort, bucket sort). Dynamic programming (matrix-chain multiplication, longest common subsequence). Elementary graph algorithms (BFS, DFS, Topological sort). Greedy algorithms, minimum spanning trees (kruskal algorithm, prim algorithm), shortest path (bellman-ford algorithm, dijkstra algorithm). Compression (Huffman algorithm).
Grading
Midterm - 35%
Homeworks - 20%
Participation - 5%
Final - 40%
Textbooks
(1) Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Cliford Stein, Introduction to Algorithms, MIT Press, 2003.
(2) Richard Johnsonbaugh, Marcus Schaefer, Algorithms, Pearson Education, 2004.
Supplementary books
(1) Robert Sedgewick, Algorithms in Java, Parts 1-4, Addison-Wesley, 2002.
(2) Robert Sedgewick, Algorithms in Java, Parts 5, Addison-Wesley, 2002.
(3) J. Kleinberg, E. Tardos. Algorithm Design. Addison-Wesley, 2005.
(4) Sara Baase, Allen Van Gelder, Computer Algorithms: Introduction to Design and Analysis (3rd edition), Addison-Wesley, 2000.
Useful Internet Resources
Outline
(1) Introduction
(2) Asymtotic complexity
(3) Divide and conquer
(4) Recurrences
(5) Quicksort and heapsort
(6) Comparison sorts
(7) Noncomparison sorts
(8) Dynamic programming
(9) Compression
(10) Graphs and search algorithms
(11) Greedy algorithms