University of Minnesota Duluth
 
 
MyU | Search | People | Departments | Events | News

CS 5521 -- Advanced Algorithms and Data Structures (Fall 2018)

Course Description

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

Instructor

Dr. Andrew M. Sutton
Email: amsutton@d.umn.edu
Tel: 218.726.7978
Office: 311 Heller Hall
Office Hours: T Th 14:00-15:30 (and by appointment)

Teaching Assistant

Yumna Anwar
Office Hours: TBA

Meeting Times and Locations

Day Time Location
Lecture T Th 15:30-16:45 HH 306
Lab T 19:00-19:50 MWAH 177

Canvas

We will use Canvas to assign reading and homework and for submissions, grading and other class-related activities.

Pre-requisites

A grade of C- or better is required in all prerequisite courses.

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

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.

IMPORTANT: The University of Minnesota Library system provides an electronic edition of this text for free: [link]

Course Content and Objectives

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 improve your skills as a programmer by (1) teaching you the mathematical language for talking about program behavior, (2) develop your skills for algorithmic thinking, and (3) hone your abilities for data and procedural abstraction.

We will cover the following topics in this course, roughly in this order:

  1. Introduction to the analysis of algorithms
  2. Review growth of functions and solving recurrences
  3. Randomized algorithms and probabilistic analysis
  4. Advanced sorting algorithms
  5. Binary search trees
  6. Red-black trees
  7. Hashing
  8. Heaps, binomial heaps and Fibonacci heaps
  9. Amortized analysis
  10. Graph algorithms, minimum spanning tree and shortest path algorithms

Additional material may also be covered from the following set of topics.

Objectives and Student Learning Outcomes

This course addresses UMD campus student learning outcomes (SLOs), as well as CS education outcomes specified by the UMD Department of Computer Science and aligned with the standards put forth by the ABET accrediting board.

  1. SLO 1: Demonstrate competence in a major field
    1. The students will gain knowledge of the core methods of advanced data structures such as use of appropriate data structures and algorithms, and their running times.
    2. The students will demonstrate competent use of data structures and algorithms in lab and homework assignments.
    3. The students will demonstrate knowledge of data structures and algorithms on exam questions.
  2. SLO 3: Think critically and creatively in seeking solutions to practical and theoretical problems.
    1. The students will be able to recognize different types of algorithmic problems and identify the best approach of how to solve them
    2. The students will be able to determine the most appropriate data structures to utilize, or be able to design their own

Assignments and Grading

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.

You are free to work on programming assignments in your own development environment, however programs must compile and run on a department machine such as akka.d.umn.edu.

All assignments must be submitted by their stated due date.

Examinations

There will be a midterm exam, worth 100 points and a final exam worth 200 points. Both exams are closed book, and 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 Tuesday, October 23
Final Exam 200 points Thursday, December 13, 2:00 PM

Grading Procedures

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

Grades are assigned based on a percentage of the total points.

Academic Policies

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 the Board of Regents Policy: https://regents.umn.edu/sites/regents.umn.edu/files/policies/Student_Conduct_Code.pdf.

Teaching & 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. Reference the full policy here: http://d.umn.edu/academic-affairs/academic-policies/classroom-policies/instructor-and-student-responsibilities.

Academic Integrity:
Academic dishonesty is taken seriously by the University. Cheating on assignments or examinations, plagiarizing, or any other act which violates the rights of another student in academic work or that involves misrepresentation of your own work may result in a grade reduction on the assignment/quiz/test or a grade reduction in the class (including the possibility of failing the class). If a student is found responsible for academic dishonesty, a report is filed with the UMD student academic integrity officer and is considered a violation of the Student Conduct Code. The UMD Student Academic Integrity Policy can be found at http://www.d.umn.edu/academic-affairs/academic-policies/classroom-policies/student-academic-integrity. The policy outlines what is considered prohibited 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. Reference the full policy here: 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. Find complete information here: http://d.umn.edu/academic-affairs/academic-policies/classroom-policies/excused-absences.

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. Find additional information here: http://d.umn.edu/academic-affairs/academic-policies/classroom-policies/course-notes-and-materials.

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 to discuss and arrange reasonable accommodations. Call 218-726-6130 or visit the Disability Resources web site at https://umd-general.umn.edu/disability-resources for more information.


© 2018 University of Minnesota Duluth
The University of Minnesota is an equal opportunity educator and employer.
Last modified: January 2018
University of Minnesota Campuses
Crookston | Duluth | Morris
Rochester | Twin Cities | Other Locations