| Instructor: | Doug Dunham |
| Email: | ddunham@d.umn.edu |
| Web Site: | http://www.d.umn.edu/~ddunham |
| Office: | 311 Heller Hall |
| Phone: | 726-7510 |
| Office Hours: | M, W 3-4, Tu 2-4, F 12-12:50 and by appointment |
| Lectures: | M, W, F 1-1:50 p.m. in HH 306 |
| Lab: | W 5-5:50 p.m. in MWAH 177 |
| Course Web Site: | http://www.d.umn.edu/~ddunham/cs4521s07 |
| Teaching Assistant: | Shruti Pandey |
| Email: | pande019@d.umn.edu |
| Web Site: | http://www.d.umn.edu/~pande019 |
| Consulting: | Thursdays 4-5 pm and Fridays 11am to 1pm in HH 314 |
Course Outcomes: A detailed list of course outcomes is at: http://www.d.umn.edu/cs/asse/outc/CS4521.pdf
Bulletin Description:
Asymptotic analysis of algorithms. Methods for proving correctness.
Implementation of algorithms. Survey of algorithms and data structures,
such as: heaps and heapsort, quicksort, binary search trees, red-black
trees, B-trees, hash tables, graph algorithms, dynamic programming, and
greedy algorithms.
Prerequisites:
CS 2511, CS 3511 or #,
or the equivalent if you are a transfer student.
Important note:
The computer science bachelor's degree program at UMD
is accredited by CAC (the Computing Accreditation Commission).
One of the CAC requirements is that all students must
satisfy the prerequisites in order to be admitted to a course,
so if you have not passed the prerequisite courses, you must
drop this course (if you have any questions about this,
please see the instructor after the lecture or during office hours).
Course Objectives and Content:
Advanced computer programming requires an understanding of both the
objects on which programs work, the data structures, and the
sequences of steps driving the programs themselves, the
algorithms. In order for data structures and algorithms to be
generally useful, they often must overcome memory and speed
limitations of the underlying machine. Thus it is important for the
programmer to be able to analyze algorithms for their efficiency in
execution and use of space for data. This course will
study the data structures and algorithms with an eye toward both
analyzing efficiency and developing working models using sound data
abstraction and procedural abstraction practices.
The following is a rough outline of the material that I hope to cover in the course. We will start with a discussion of algorithms and their analysis and design. This will be followed by a review of growth of functions and solving recurrences. Then we will discuss most of the following topics: advanced sorting, binary search trees, red-black trees, B-trees, hash tables, binary heaps and priority queues, binomial heaps, Fibonacci heaps, amortized analysis, graph algorithms, minimal spanning trees, and shortest path algorithms. Additional material may also be covered, such as dynamic programming, greedy algorithms, string matching, encryption, NP-completeness, and approximate algorithms.
Equal Opportunity:
The University of Minnesota is committed to the policy that all persons shall
have equal access to its programs, facilities, and
employment without regard to race, color, creed, religion, national origin,
sex, age, marital status, disability, public assistance status,
veteran status, or sexual orientation.
As instructor, I am committed to upholding University of Minnesota's
equal opportunity policy.
I encourage you to talk to me in private about any concerns you have
related to equal opportunity in the classroom. To inquire further about the
University's policy on equal opportunity, contact the
Office of Equal Opportunity,
269-273 DAdB,
(http://www.d.umn.edu/equaloo),
phone: (218) 726-6827 or (218) 726-6849,
email: equaloo@d.umn.edu.
Students with Disabilities:
If you have any disability (either permanent or temporary) that might affect
your ability to perform in this class, please inform me at the start of
the quarter. I may adapt methods, materials, or testing so that you can
participate equitably. To learn about the services that UMD provides to
students with disabilities, contact Disability Services and Resources
258 Kirby Student Center,
(http://www.d.umn.edu/access),
phone: (218) 726-8217 or TTY (218) 726-6575,
email: access@d.umn.edu
or contact the Office of Equal Opportunity, 269-273 DAdB,
(http://www.d.umn.edu/equaloo),
phone: (218) 726-6827,
email: equaloo@d.umn.edu.
Text:
Cormen, T. H., C. E. Leiserson, R. L. Rivest, and C. Stein
Introduction to Algorithms, Second Edition,
September, 2001,
MIT Press, Cambridge, MA, ISBN: 0-262-03293-7
or McGraw-Hill, Boston, MA, ISBN: 0-07-013151-1.
Web site:
http://mitpress.mit.edu/algorithms
and the list of corrections is
here.
Course Requirements:
The lab assignments must be done in C or C++ (without using the Standard
Template Library), not Java (since the algorithms have been implemented
in Java on the CD that comes with the book).
It is not directly required that you attend class, however: You are responsible for reading assigned text material and for material covered in class and in the lab, including:
If you are unable to attend a class meeting, it is your responsibility to obtain class notes, assignments, and extra copies of handouts from your study partner. Note: assignments are due at the beginning of class on the due date (unless otherwise specified) -- they will be docked 25% per day if turned in late.
Assignments:
The assignments will consist of both programming and non-programming problems. Programming assignments will be based on algorithms written in a generic pseudo-code presented in lecture and in the text. The solutions must be written in C or C++ (without using stl), as mentioned above. C++ is particularly appropriate for implementing data structures The programming assignments should adhere to the Computer Science Lab Report Format; the non-programming assignments should adhere to the Written Homework Format.
Examinations and Grading:
There will be a midterm exam, worth 100 points and a final exam worth 200 points. These exams are closed book, but you are allowed to bring one 4 x 6 inch note card to the midterm exam as a crib sheet, and two such cards to the final exam. The final exam will be comprehensive. Exams will not be given early, and makeups must be justified by dire circumstances described to the instructor before the time of the exam. It is Department of Computer Science policy not to return final exams, however they are kept and you can look at your exam in the instructor's office. The section Final Examination Conflicts on the Final Examination Policy web page explains the UMD policy about having more than two final exams on a single day.
| Exam | Points | Date and Time |
|---|---|---|
| Midterm Exam | 100 points | Wednesday, March 7, 1-1:50 pm in HH 306 |
| Final Exam | 200 points | Thursday, May 10, 2-3:55 pm in HH 306 |
Scores and total points
will be maintained by the TA on the TA's web site.
At the end of the semester, scores, total points, and grades
will be posted on the
"Grades" page of
the class web site:
http://www.d.umn.edu/~ddunham/cs4521s07/grades
using the last digits of your
student id number. If you wish to have your scores posted
using a number other than the last digits of your student id,
you may email your request to the instructor.
Grading Procedures: Final grades are based on total points distributed approximately as follows: