CS 4521 Data Structures and Algorithms

Fall 2012

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 1-1:50, Tu 2-3:50, F 4-5, and by appointment |

Lectures: |
M, W, F 3-3:50 p.m. in MWAH 175 |

Lab: |
Tu 4-4:50 p.m. in MWAH 177 |

Course Web Site: |
http://www.d.umn.edu/~ddunham/cs4521f12 |

Teaching Assistant: |
Aditya Vegesna |

Email: |
veges002@d.umn.edu |

Web Site: |
http://www.d.umn.edu/~veges002 |

Office Hours: |
Mon 7:00-8:00pm, Wed 11:00-noon HH 314 Tues: 10:00-11:00am, Fri 4:00-5:00pm MWAH 187 |

**
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 3512, or #,
or the equivalent if you are a transfer student.

**
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:
**
It is the policy and practice of the University of Minnesota Duluth to
create inclusive learning environments for all students, including
students with disabilities. If there are aspects of this course that
result in barriers to your inclusion or your ability to meet course
requirements - such as time limited exams, inaccessible web content,
or the use of non-captioned videos - please notify the instructor as
soon as possible. You are also encouraged to contact the
Office of Disability Resources, 258 Kirby Student Center,
to discuss and arrange reasonable accommodations.
Please call 218-726-6130 or visit the DR website at
(http://www.d.umn.edu/access)
for more information.

**
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
http://www.d.umn.edu/hlthserv/counseling/.

**
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
http://www.d.umn.edu/conduct/
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
(
http://www.d.umn.edu/conduct/
). 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.

**
Text:
**

Cormen, T. H., C. E. Leiserson, R. L. Rivest, and C. Stein
*Introduction to Algorithms, Third Edition,*
2009,
MIT Press, Cambridge, MA, ISBN: 978-0-262-03384-8 (hardcover) or
978-0-262-53305-8 (paperback).
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:

- doing the reading assignments from the text
- the material covered in the lectures
- obtaining assignments and handouts
- 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.

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

Exam | Points | Date and Time |
---|---|---|

Midterm Exam | 100 points | Wednesday, October 24, 3-3:50 pm in MWAH 175 |

Final Exam | 200 points | Monday, December 17, 8-9:55 am in MWAH 175 |

Scores and total points will be maintained by the TA on eGradebook.

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

- Labs and homework assignments (approx. 200 points)
- Midterm Exam (100 points)
- Final Examination (200 points)

- The A- cutoff is 90%
- The B- cutoff is 80%
- The C- cutoff is 70%
- The D cutoff is 60%
- Below 60% is an F