CS 5521 Data Structures and Algorithms

Fall 2016

Instructor: |
Doug Dunham |

Email: |
ddunham@d.umn.edu |

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

Office: | 333 Heller Hall |

Phone: | 726-7510 |

Office Hours: |
T, Th 2:30-3:25 p.m., W 2:30-5:55 p.m., and by appointment |

Lectures: |
Tu, Th 9:30-10:45 a.m. in MWAH 175 |

Lab: |
W 6-6:50 p.m. in MWAH 177 |

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

Teaching Assistant: |
Penghuan Ni |

Email: |
nixxx136@d.umn.edu |

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

Office Hours: |
M 11-12, Tu 5-6, W 12-1 in HH 314 |

**
Bulletin Description:
**
Survey of advanced data structures and algorithms such as heaps and heapsort,
quicksort, red-black trees, B-trees, has tables, graph algorithms, divide
and conquer algorithms, dynamic programming, and greedy algorithms.
Methods for proving correctness and asymptotic analysis.

**
Prerequisites:
**
CS 2511, CS 3512, Math 3326 or instructor consent, a grade of C- or better
is required in all prerequisite courses.

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

**
Course Objectives and Student Learning Outcomes:
**

- Students will gain
knowledge of the core methods of advanced data structures such as use of
appropriate data structures and algorithms, and analysis of their running
times.

Expected Outcomes:- The students will demonstrate use of those data structures and algorithms in lab and homework assignments.
- The students will demonstrate knowledge of those data structures and algorithms on exam questions.

- Students will gain knowledge of key issues in advanced data structures,
such as appropriateness of data structures and efficiency
of their related algorithms.

Expected Outcomes:- The students will demonstrate use of those key concepts in lab and homework assignments.
- The students will demonstrate knowledge of those key concepts on exam questions.

- Students will gain proficiency in applying knowledge from the theory of
advanced data structures to various application areas.

Expected Outcomes:- The students will demonstrate that proficiency in lab and homework assignments.
- The students will demonstrate that knowledge on exam questions.

**
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
Department of Human Resources & Equal Opportunity
255 DAdB,
(http://www.d.umn.edu/umdoeo),
phone: (218) 726-6827,
email: umdeo@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 Disability Resources website at
https://umd-general.umn.edu/disability-resources
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 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. Student are expected adhere to Board of Regents
Policy: Student Conduct Code:
(
http://www.d.umn.edu/conduct/
).

**
Teaching and Learning: Instructor and Student Responsibilities:
**
UMD is committed to providing a positive, safe, and inclusive place for all
who study and work here. Instructors and students have mutual responsibility
to insure that the environment in all of these settings supports teaching and
learning, is respectful of the rights and freedoms of all members, and
promotes a civil and open exchange of ideas. To reference the full policy
please see:
http://www.d.umn.edu/vcaa/TeachingLearning.html

**
Student Academic Integrity Policy:
**
Academic dishonesty tarnishes UMD's reputation and discredits the
accomplishments of students.
Academic dishonesty is regarded as a serious offense by all
members of the academic community.
This course will adhere to UMD's Student Academic Integrity Policy, which
can be found at
http://www.d.umn.edu/conduct/

**
Final Exams:
**
All 1xxx-5xxx courses offered for undergraduate credit should include a
final graded component or end of term evaluation that assesses the level of
student achievement of one or more course objectives. All final graded
components are to be administered or due at the time and place according to
the final exam schedule and not during the last week of class.
To reference the full policy please see:
http://www.d.umn.edu/vcaa/FinalExams.html

**
Excused Absences:
**
Students are expected to attend all scheduled class meetings.
It is the responsibility of students to plan their schedules to avoid
excessive conflict with course requirements. However, there are legitimate
and verifiable circumstances that lead to excused student absence from the
classroom. These are subpoenas, jury duty, military duty, religious
observances, illness, bereavement for immediate family, and NCAA varsity
intercollegiate athletics. For complete information, please see:
http://www.d.umn.edu/vcaa/ExcusedAbsence.html

**
Appropriate Student Use of Class Notes and Course Materials:
**
Taking notes is a means of recording information but more importantly of
personally absorbing and integrating the educational experience. However,
broadly disseminating class notes beyond the classroom community or accepting
compensation for taking and distributing classroom notes undermines instructor
interests in their intellectual work product while not substantially
furthering instructor and student interests in effective learning.
For additional information, please see:
http://www.d.umn.edu/vcaa/ClassNotesAppropriateUseof.html

**
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 some printings of the text).

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 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:
**
There will be weekly assignments which 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 | Thursday, October 20, 9:30-10:45 xm in MWAH 175 |

Final Exam | 200 points | Wednesday, December 14, noon-1:55 pm 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