Course Syllabus,
CS 4521 Data Structures and Algorithms
Fall 2009

Course Data:
Instructor: Doug Dunham
Web Site:
Office:311 Heller Hall
Office Hours: M 1-1:50, Tu 2-4, W 12-12:50, F 4-5 and by appointment
Lectures: M, W, F 3-3:50 p.m. in MWAH 175
Lab: W 7-7:50 p.m. in MWAH 177
Course Web Site:

Teaching Assistant: Reena Rachel
Web Site:

CAC (Computng Accreditation Commission) Course Description:

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.

CS 2511, CS 3511 or CS 3512, 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, (, phone: (218) 726-6827 or (218) 726-6849, email:

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, (, phone: (218) 726-6130, (218) 726-8217, or TTY (218) 726-6575, email: or contact the Office of Equal Opportunity, 269-273 DAdB, (, phone: (218) 726-6827, email:

Mental Health Statement:
As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce a student's ability to participate in daily activities. University of Minnesota services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus via the UMD Health Service Counseling website at

Student Academic Integrity Policy Academic dishonesty tarnishes UMD's reputation and discredits the accomplishments of students. UMD is committed to providing students every possible opportunity to grow in mind and spirit. This pledge can only be redeemed in an environment of trust, honesty, and fairness. As a result, academic dishonesty is regarded as a serious offense by all members of the academic community. In keeping with this ideal, this course will adhere to UMD's Student Academic Integrity Policy, which can be found at This policy sanctions students engaging in academic dishonesty with penalties up to and including expulsion from the university for repeat offenders.

Student Conduct The instructor will enforce and students are expected to follow the University's Student Conduct Code ( ). Appropriate classroom conduct promotes an environment of academic achievement and integrity. Disruptive classroom behavior that substantially or repeatedly interrupts either the instructor's ability to teach, or student learning, is prohibited. Disruptive behavior includes inappropriate use of technology in the classroom. Examples include ringing cell phones, text-messaging, watching videos, playing computer games, doing email, or surfing the Internet on your computer instead of note-taking or other instructor-sanctioned activities.


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: 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:

  1. doing the reading assignments from the text
  2. the material covered in the lectures
  3. obtaining assignments and handouts
  4. turning in programming assignments and homework

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.

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 UMD Final Examination Policy web page explains the UMD policy about having more than two final exams on a single day, among other things.

Exam Schedule:
ExamPointsDate and Time
Midterm Exam 100 points Wednesday, October 28, 3-3:50 pm in MWAH 175
Final Exam 200 points Thursday, December 17, 8-9:55 am in MWAH 175

Scores and total points will be maintained by the TA. When appropriate, distributions of points will be posted on the "Distributions" page of the class web site:

Grading Procedures: Final grades are based on total points distributed approximately as follows:

Grades are assigned based on a percentage of the total points. These percentages may be lowered slightly but they will not be raised.
Important note: In the past, students have tended to do better on the lab and homework assignments (average = 78%) than on the midterm (73%) and final (68.5%) exams. Thus class averages going into the final exam tend to be higher than after the final exam. This leads to the following two pieces of advice: (1) keep your average as high as possible by doing well on the lab/homework assignments, and (2) study carefully for the exams, using the review guides, so that your average isn't brought down by poor exam scores.
The views and opinions expressed in this page are strictly those of the page author. The contents of this page have not been reviewed or approved by the University of Minnesota.
Page URL: /~ddunham/cs4521f09/syllabus.html
Page Author: Doug Dunham
Last Modified: Tuesday, 08-Sep-2009 16:59:18 CDT
Comments to: