CS404/504 Design and Analysis of Algorithms
Please check
homework 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.
Instructor: David M. Chelberg
(Press here to email)
- Office: Stocker 322B
- Office Hours: Mon, Tue, Thr 10:10-11:00am, and by email
appointment. Feel free to just stop by as well.
Homework
assignments
-
Reading assignments
- Lecture Notes
- are available from prime/p1/p2 in the directory:
~cs404/lectures. They are stored as compressed postscript
files. 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.
- Objectives
- This course provides an introduction to the modern study
of computer algorithms. Through this course students should
be able to:
- analyze algorithm performance using complexity
measurement.
- master major algorithms design techniques such as
divide and conquer, greedy and dynamic programming.
- apply above approaches to solve a variety of practical
problems such as sorting and selection, graph problems,
computational geometry, etc.
- understand the theory of NP-completeness.
-
- Prereq:
- CS361 and CS300.
- Required Texts:
- "Introduction to Algorithms, Second Edition," by Cormen,
Leiserson, Rivest, and Stein, MIT Press, 2001.
- Recommended Texts:
- "Computer Algorithms," by Horowitz, Sahni and Rajasekaran, W. H.
Freeman Press, 1998.
- Course Outline:
- This course emphasizes the importance of fundamental analysis and
design techniques to programming. Here we build on CS 361(Data
Structures and Algorithms) and examine the following topics in
more detail.
- The mathematical analysis of algorithms: best-case, worst-case,
average case analysis; asymptotic growth rates; recurrence
relations.
- Algorithms design techniques: divide and conquer algorithms; greedy
algorithms; dynamic programming algorithms.
- Lower bound analysis.
- Intractability: P vs. NP vs. NP-completeness.
- Special topics (e.g. Mathematical algorithms: fast
Fourier transform; matrix multiplication).
- Expectations
- 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 (date to be determined). 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: 15% for
quizzes, 45% for paper homework and programming projects
15% for the midterm, and 25% 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.
-
Java Based Sorting Algorithm Animations
-
Another animated sorting demo.
-
Algorithm/Data Structure Visualization .jar file
-
QuickHull Visualization
- You tube
video "I will derive" Humorous!
- Zune Bug Discussion (algorithm correctness, etc.)
David M. Chelberg <chelberg@ohiou.edu>
Last modified: Fri Nov 20 15:08:47 EST 2009