Fall 2009; Tuesday, Thursday 9:30-10:45am
Whitehall Classroom Room 231-CB
Instructor: Professor Klapper, 779A Anderson; phone -- x7-6743; e-mail: klapper at cs.uky.edu; Home page
Office Hours: Tuesdays 2-3pm, Thursdays 1-2pm, and by appointment. E-mail questions are welcome.
Course Description: The design and analysis of efficient algorithms and data structures for problems in sorting, searching, graph theory, combinatorial optimization, computational geometry, and algebraic computation. Emphasis on paradigms for design and on rigorous analysis. Practical issues pertaining to efficient implementation and performance measurements.
You are expected to be familiar with basic data structures (lists, trees, graphs), algorithms (searching, sorting), and models of computation such as in CS 315 (prerequisite). You should be familiar with discrete math as in CS 275 (prerequisite for CS315), including recurrence relations; mathematical induction; basic probability; basic counting techniques; relations; graphs; and trees. You should be familiar with basic calculus (derivatives, limits, L'Hospital's rule, integration, log and exponential functions).
Textbook: ``Introduction To Algorithms,'' by Cormen, Leiserson, Rivest, and Stein; McGraw Hill, Second Edition. ISBN: 0-07-013151-1
web page
Exams and Homework: There will be a Midterm exam: October 15; a Final exam: Tuesday, December 15, 8:00am - 10:00am; and frequent homeworks. Homeworks will be due at the start of class usually two weeks from the day they are assigned. They will generally consist of designing algorithms; proving algorithms are correct; analyzing the performance of algorithms; and developing the mathematical tools for these activities. There will be no programming assignments. Homework handed in more than five minutes after the start of the class when it is due will not be accepted. Assignments must be legible and grammatical. Copying of homework from other students or from other sources is strictly prohibited. Obtaining a solution from another source without citing the source is plagiarism. Detailed Plagiarism Statement. You are strongly encouraged to visit me in my office hours or ask for help by e-mail if you are stuck on homework problems. You don't need an appointment to come to my regularly scheduled hours. Attendance in class is very strongly encouraged. You will make every reasonable effort to arrive before class begins. Cell phones must be turned off before class starts.
Grades: Course grades are based on:
attendance - 10%; homework - 25%; midterm - 25%; final exam - 40%.
Letter grades are assigned by the scale:
Graduate students: A: 80-100; B: 65-79; C:50-64;
Undergraduates: A: 75-100; B: 60-74; C:45-59; D:35-44.
Outcomes and assessments: The following are
the stated learning outcomes for this course. These will be assessed by
a survey at the end of the semester, in compliance with certification standards
for academic Computer Science departments. A successful
student will develop knowledge of various mathematical tools and algorithmic
methods that are applicable in computer science. Specifically, students
will be able to:
Approximate Syllabus:
Intro and Review
(August 27 - September 15): Chapters 1,2,3,4
1. Time complexity
2. Big O notation.
3. Recurrences: first order linear, Fibonacci numbers, divide and conquer, etc.
4. Proofs of correctness
Searching and Sorting
(September 17 - October 1): Chapters 6-9,12,13,18-21.
1. Sorting -- radix, heap, merge, and quick sorts.
2. Searching (sequential, binary, tree), order statistics, lower bounds.
3. Advanced search structures (balanced trees, disjoint sets).
Graph Algorithms
(October 6 - 29): Chapters 22-26.
1. Traversals.
2. Shortest paths.
3. Spanning trees.
4. Network flows and matching.
Midterm Exam: October 15
Algebraic Algorithms
(November 3 - 12): Chapter 31.
1. Euclidean algorithm.
2. Fast integer multiplication and modular exponentiation.
3. Primality testing and applications to cryptography.
4. Matrix algebra.
Strings, Sequences, and Dynamic Programming
(November 17 - 24): Chapter 15.3,15.4,32.
1. String matching.
2. Substrings and subsequences.
Relations Between Problems
(December 1 - 10): Chapters 36, 37.
1. Decision and optimization problems.
2. Reductions between problems, nondeterminism, NP vs. P., and NP-completeness.
3. Approximate solutions to hard problems.
FINAL EXAM: Tuesday December 15, 8:00am - 10:00am231-CB