CS4040/5040 Design and Analysis of Algorithms

Final Exam is Friday, December 15, at 10:10 a.m.

Material from the review sessions from Dr. Juedes.

Please checkAnimated
writinghomework page frequently for clarifications regarding assignments, and any late-breaking news regarding due dates etc.

A Style Guide is available on-line to assist you in determining the correct style for your programs. You are required to follow the guidelines in all programs you turn in for the course. Failure to follow the guidelines may result in a significantly lower grade on an assignment.

      TeacherInstructor: David M. Chelberg (Press here to email) flying letter!
Office: Stocker 322B
Office Hours: Mon, Wed, Fri 2:00pm-3:00pm, and by email appointment. Feel free to just stop by as well.
TA: There is one TA for the course:
email: Xiao Liu (xl224810@ohio.edu)
Office hours:   by email appointment
Animated writingHomework assignments
Animated Book
      ImageReading assignments
Lecture Notes
will be available from prime/p1/p2 in the directory: ~cs404/lectures. They will be stored as compressed postscript files, and as pdfs. To print, you must first uncompress using the command gunzip, then send to a postscript printer (using lp). Detailed instructions for those new to Unix.
This course provides an introduction to the modern study of computer algorithms. Through this course students should be able to:
  1. analyze algorithm performance using complexity measurement.
  2. master major algorithms design techniques such as divide and conquer, greedy and dynamic programming.
  3. apply above approaches to solve a variety of practical problems such as sorting and selection, graph problems, computational geometry, etc.
  4. understand the theory of NP-completeness.
CS3610 and CS3000.
Required Texts: Animated Book Image
"Introduction to Algorithms, Third Edition," by Cormen, Leiserson, Rivest, and Stein, MIT Press, 2009.

Recommended Texts: Animated Book Image
"Computer Algorithms, 2ed" by Horowitz, Sahni and Rajasekaran, Silicon Press 2008.

Course Outline:
This course emphasizes the importance of fundamental analysis and design techniques to programming. Here we build on CS 3610 (Data Structures and Algorithms) and examine the following topics in more detail.
  1. The mathematical analysis of algorithms: best-case, worst-case, average case analysis; asymptotic growth rates; recurrence relations.
  2. Algorithms design techniques: divide and conquer algorithms; greedy algorithms; dynamic programming algorithms.
  3. Lower bound analysis.
  4. Intractability: P vs. NP vs. NP-completeness.
  5. Special topics (e.g. Mathematical algorithms: fast Fourier transform; matrix multiplication).
Students are expected to spend AT LEAST two hours outside of class per class session, including working exercises in the book, and programming homework problems. Programming can only be learned by doing! In this class students are expected to write many programs in order to gain proficiency, and to fully understand the algorithms and data structures covered.
Examination schedule:
There will be one midterm exam (Friday, October 20). Pop quizzes may be given on any given day when no other exams are scheduled.
Grading policy:
Your grade will be based on a composite score computed according to the following approximate breakdown: 20% for quizzes, 25% for paper homework and programming projects 20% for the midterm, and 35% for the final.
Attendance Policy:
Students are strongly encouraged to attend all classes, but attendance is not required. Class attendance will not be used in the final determination of grades. Students miss classes at their own risk. There will be no make-up quizzes, students missing class on the day of a quiz will be given a zero. Students are required to attend class during the midterm and final exam unless prior arrangements have been made.
Academic dishonesty:
Students are expected to turn in only their own work with proper documentation. Anything else will result in an F for the exam, project or program, and possibly an F for the course, or even dismissal from the University. This means NO WORKING IN GROUPS, and NO SHARING CODE. For more information see the student affairs handbook
Interesting Links:
Limit Tests for Big O, Big Theta, Big Omega and little o, and omega.
A Wikipedia article on Big O, etc. notation with hints.
Logarithm Facts
Java Based Sorting Algorithm Animations
More sorting animations
Another visualization of sorting algorithms.
Algorithm/Data Structure Visualization .jar file
You tube video "I will derive" Humorous!
Zune Bug Discussion (algorithm correctness, etc.)
Article Titled: "How Speeding The "Most Important Algorithm Of Our Lifetime" Could Change This Modern World"
Computational Complexity applied to video games, this paper proves PacMan is NP-Hard.
Questions and Answers about Proofs by induction

David M. Chelberg <chelberg@ohio.edu>
last-modified: Wed Dec 13 19:41:27 2017