CS 4122/5122 - Algorithms and Data Structures (Spring 2022)
Course Description
Survey of advanced algorithms and data structures 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: Tue, Thu 9:30-11am
Teaching Assistant
Luke Branson
Email: brans109@d.umn.edu
Office Hours: TBA
Meeting Times and Locations
Day | Time | Location | |
---|---|---|---|
Lecture | T Th | 08:00-09:15 | HH 106 |
Lab | T | 17:00-17:50 | MWAH 177 |
Pre-requisites
- CS 2511 - Software Analysis and Design
- CS 2531 - Discrete Structures or Math 3355 - Discrete Math
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
University of Minnesota students can access a free version here
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) sharpen your abilities for data and procedural abstraction.
Below is a tentative schedule for the semester.
Week | Dates | Topic |
---|---|---|
1 | Jan 13 | Introduction |
2 | Jan 18, 20 | Asymptotic Analysis |
3 | Jan 25, 27 | Divide-and-Conquer Algorithms |
4 | Feb 1, 3 | Randomized Algorithms |
5 | Feb 8, 10 | ADS: Heaps, Fibonacci Heaps |
6 | Feb 15, 17 | ADS: Red-black trees and Disjoint-set forests |
7 | Feb 22, 24 | |
8 | Mar 1, 3 | Greedy Algorithms |
9 | Mar 15, 17 | |
10 | Mar 22, 24 | Dynamic Programming Algorithms |
11 | Mar 29, 31 | |
12 | Apr 5, 7 | Network Flow |
13 | Apr 12, 14 | |
14 | Apr 19, 21 | Advanced Topics |
15 | Apr 26, 28 | |
16 | May 3-7 | FINAL EXAM WEEK |
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.
- SLO 1: Demonstrate competence in a major field
- 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.
- The students will demonstrate competent use of data structures and algorithms in lab and homework assignments.
- The students will demonstrate knowledge of data structures and algorithms on exam questions.
- SLO 3: Think critically and creatively in seeking solutions to practical and theoretical problems.
- The students will be able to recognize different types of
algorithmic problems and identify the best approach of how to solve them
- 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. Solutions to programming assignments will be written in C++ without using STL.
All assignments must be submitted by their stated due date.
Students enrolled in 5122
If you are a graduate student enrolled in 5122, there will be an extra research project. You will need to complete the following steps.
- Select a research paper on a particular algorithm. The paper must be approved by the instructor by the first midterm exam.
- Submit a short report (5-8) pages outlining the paper by the second midterm exam.
- Give a short (10-15 minute) oral presentation about the paper at the end of the semester
Participation
This is an upper division course, and therefore I will not make attendance mandatory. However, classroom participation will be graded and included as part of the assignment component for the computation of the final grades.
You can earn participation points by contributing to classroom discussions, answering questions, coming to office hours, etc. To allow a fair chance for everyone to participate, I will sometimes draw names at random to ask questions about the material. Don't worry about getting the answer right! Research suggests that answering questions incorrectly can be valuable for moving information from working memory into long-term memory.
Examinations
There will be two midterm exams, worth 100 points each 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
Exam | Points | Date |
---|---|---|
Midterm Exam 1 | 100 | TBA |
Midterm Exam 2 | 100 | TBA |
Final Exam | 200 | Thursday, May 5 8:00am |
Grading Procedures
Final grades are based on total points distributed approximately as follows:
- Assignments and participation (approx. 200 points)
- Midterm Exams (200 points)
- Final Exam (200 points)
- Graduate research project (5122 students only) (100 points)
Grades are assigned based on a percentage of the total 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
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.
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: https://evcaa.d.umn.edu/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 https://evcaa.d.umn.edu/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: https://evcaa.d.umn.edu/final-examinations.
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: https://evcaa.d.umn.edu/excused-absences.
Note that COVID-19 falls under the category of exceptional circumstance. Any student who is absent from class for COVID-19 related reasons (as defined below) is excused from class. Such students do not need to request an excused absence and no documentation is required. Students are required to alert the instructor as soon as is reasonably feasible that they will be absent for COVID-19 related reasons. In these instances, it is sufficient for students to communicate with the instructor via email or phone. Alerting the instructor must occur before the class session(s) in question, not after.
COVID-19 related reasons include but are not limited to the following:
The student:
- is subject to a government quarantine or isolation due to COVID-19;
- has been advised by a healthcare provider to self-quarantine due to COVID-19;
- is experiencing the symptoms of COVID-19 and is seeking a diagnosis;
- is caring for an individual ill from COVID-19;
- is caring for an individual subject to or advised to quarantine or isolate due to COVID-19;
- has underlying medical conditions that make them susceptible to COVID-19 infection;
- is stuck in a different state due to quarantine requirements imposed by that state; or
- is caring for one’s own child for a child of an immediate family member whose school or childcare is closed or unavailable due to COVID-19.
Please refer to the University's excused absence policy for further information.
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: https://evcaa.d.umn.edu/course-notes-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://disability-resources.d.umn.edu/ for more information.
Mental Health and Stress Management: 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 and may reduce your ability to participate in daily activities. University services are available to assist you. You can learn more about the broad range of confidential mental health services available on campus via the Student Mental Health Website: http://www.mentalhealth.umn.edu.