University of Minnesota
CSCI 4041: Algorithms and Data Structures
CSCI 4041 Syllabus

CSCI 4041

Algorithms and Data Structures

Fall 2018

(Last revised 8/13/18)

Read this document carefully: it explains the structure and policies of the class, and we will assume that you know and understand all of the information contained here.

Meeting time and place:
Lecture (001): 11:15am - 12:30pm Tuesday and Thursday Keller Hall 3-210.
Lecture (010): 6:30pm - 9:00pm Tuesday Keller Hall 3-210.



Name Nathan Taylor
Office Keller Hall 6-199

For instructor and TA office hours, see the Office Hours page on the website.

Class homepage

This website is the primary source of information for the Day, Night, and Online sections of 4041. The Canvas sites for the class serve three purposes:

  • Programming Assignments and Written Assignments will be submitted to Canvas.
  • Grades will be posted to Canvas.
  • Canvas has a discussion forum that students can use to form groups for the Homework and discuss course concepts.

Email Use: Most emails for the class should be sent to:

This alias will forward your message to the instructor and all of the TAs. Make sure to use Reply All when participating in an email conversation using the alias, so that all of the course staff can continue to provide input. If you are emailing to ask for clarifications on a homework problem or programming assignment, make sure you check the front page of the course website to see if it has already been addressed.
The exception to this is grading complaints. If you are emailing us because you think your Written Assignment was graded incorrectly, then you don't need to email the alias, just email the TA who graded you and CC me ( I will not interfere in a grading dispute unless the TA is clearly wrong or not following the grading guidelines I gave them for the problem, so this is mostly between you and the TA. Below are the TA's emails:

Zechen Zhang:
Prvakar Roy:
Liam Tyler:
Nikolaos Stefas:
Song Liu:
Arun Sharma:
Manish Keshri:
Robert Giaquinto:

Text: Cormen et al., Introduction to Algorithms 3rd edition.

Additional Resources (optional):

[1] Algorithms, 4th Edition
[2] Computer Science, An Interdisciplinary Approach, Chapter 4
[3] E. Horowitz and S. Sahni, "Fundamentals of Computer Algorithms", Computer Science Press, Rockville, MD, 1984.
[4] C.H. Papadimitriou and K. Steiglitz, "Combinatorial Optimization: Algorithms and Complexity", Dover Publications, Mineola, NY, 1998.
[5] D.E. Knuth, "The Art of Computer Programming", Addison-Wesley, Reading, MA, Volumes 1-4, Addison-Wesley, Reading, MA, 2011.
[6] U. Manber, "Introduction to Algorithms: A Creative Approach", Addison-Wesley, Reading, MA, 1989.
[7] A. Aho, J.E. Hopcroft, and J.D. Ullman, "Data Structures and Algorithms", Addison-Wesley, Reading, MA, 1983.
[8] R. Lafore, "Data Structures and Algorithms in Java", Sams Publishing, Indianapolis, IN, 2002.
[9] M. Goodrich, R. Tamassia, and M. Goldwasser, "Data Structures and Algorithms in Java", Wiley, Hoboken, NJ, 2014.
[10] R. Sedgewick and K. Wayne, "Algorithms", Addison-Wesley, Reading, MA, 2011.

General course description: The course objective is to provide fundamental paradigms for algorithm design with the supporting data structures.

Topics covered: Rigorous analysis of algorithms/implementation. Algorithm analysis, sorting algorithms, binary trees, heaps, priority queues, heapsort, dynamic programming, greedy algorithms, graphs, graph traversal, single source shortest path, minimum cost spanning trees, binary search trees, hash tables and hashing.

Grading: For all graded work, please address any concerns within one week of receiving the grade. After one week, no adjustments will be made. The grade breakdown for the course is as follows:

Programming Assignments (13 of them, lowest 2 dropped)         22%
Written Assignments (13 of them, lowest 2 dropped)             22% 
Quizzes (7 of them, lowest 1 dropped)                          24%
Recitations (13 of them, lowest 2 dropped)                     22%
In-class Exercises (48 of them, lowest 8 dropped)              10%

Final grades will be assigned based the following scale:

      93.0% -- 100.0%   A
      90.0% --  93.0%   A-
      87.0% --  90.0%   B+
      83.0% --  87.0%   B
      80.0% --  83.0%   B-
      77.0% --  80.0%   C+
      73.0% --  77.0%   C
      70.0% --  73.0%   C-
      67.0% --  70.0%   D+
      60.0% --  67.0%   D
       0.0% --  60.0%   F

For S/N grading, a satisfactory grade (S) requires a grade of 70.0% or above.

Programming Assignments:

  • Programming Assignments generally consist of implementing a data structure/algorithm in some (possibly) relevant context.
  • Programming Assignments will be posted each Tuesday, due the next Tuesday at 10:30 AM.
  • You must submit your Programming Assignment to the appropriate link on Canvas before the deadline.
  • Late Programming Assignments will not be accepted, but your lowest two scores will be dropped.
  • Programming Assignments are not group work: they must be completed indivudually.
  • Programming Assignments must be completed in Python 3.
  • A template Python file will be provided for each Programming Assignment.
  • You must implement the required data structure/algorithm as specified in the template.
  • The template will include test cases for your program. You will be graded based on how many of those test cases pass.
  • The grading will be done automatically by a script using the output of the test cases.
  • For the above reason, you must not alter anything in the template except where specified.

Written Assignments:

  • Written Assignments generally consist of a set of conceptual questions or proofs, often taken from the textbook.
  • Written Assignments will be posted each Tuesday, due the next Thursday at 10:30 AM (that is, 9 days from being assigned).
  • You must submit your Written Assignment to the appropriate link on Canvas before the deadline.
  • Late Written Assignments will not be accepted, but your lowest two scores will be dropped.
  • Written Assignments can be completed in groups of 1-3 students.
  • Written Assignments must be submitted in PDF format, and must include the name and x500 of each group member.
  • Submitting typed Written Assignments is preferred, but handwritten documents that have been scanned in are acceptable so long as the scanned PDF is still legible.
  • The TAs will grade Written Assignments primarily based on the quality of your explanations, not on whether your final answer is correct.


  • Every other Tuesday, there will be a 30 minute Quiz during lecture.
  • Quizzes are theoretically comprehensive, but in practice will heavily focus on the content covered since the last quiz.
  • The quizzes are closed book and are not collaborative.
  • You will be permitted one double-sided 8.5 x 11 sheet of handwritten notes for each quiz. Typed notes or other printed material is not acceptable.
  • No make-up quizzes will be permitted, but your lowest quiz score will be dropped.


  • Each recitation will begin with the TA covering an example of the content for the week.
  • The remaining time will be allotted to group work on a set of problems related to that content.
  • Groups of 3-5 students will be assigned randomly by the TA for the group work portion of recitation.
  • Groups must signal the TA to check their answers to each problem as they complete them.
  • Groups must get each problem checked off before moving on to the next one: splitting the group to work on different problems is not allowed.
  • Students who arrive late to recitation or do not substantially contribute to their group's efforts will not receive any credit for the recitation, regardless of their group's score.
  • No make-up recitations will be permitted, but your lowest two scores will be dropped.

In-class Exercises:

  • Each day lecture will include two in-class exercises: one at the beginning of class, and one about halfway through.
  • Each night lecture will include four in-class exercises spread throughout.
  • Lectures that contain a quiz will have one less in-class exercise.
  • The exercise at the beginning of lecture will generally cover the assigned reading for the day.
  • The exercise(s) during lecture will generally cover the lecture content discussed thus far.
  • In-class exercises are open-book, open-notes, and fully collaborative: you are encouraged to discuss with your neighbors.
  • In-class exercises will generally consist of a single multiple-choice question asked using Google Forms.
  • The link for the Google Form will be posted in lecture at the start of the exercise, and will close ~5 minutes later.
  • Students who are not able to access Google Forms during lecture will be given a notecard on which to submit their answer.
  • In-class exercises are graded out of 1 point: your answer is either correct or it is wrong.
  • No make-up in-class exercises will be allowed, but your lowest seven scores will be dropped.

UNITE: Streaming video archives of class meetings are available to students registered in the on-campus section of this course on a TEN-DAY delay for the length of the semester (UNITE will not make media available to students enrolled in on-campus sections for any reason past the last day of finals, including when assigned an Incomplete by the instructor).
Access these videos through the UNITE Media Portal with your University of Minnesota Internet I.D. and password (this is what you use to access your University of Minnesota email account).
DO NOT ask the instructor or teaching assistants for technical or troubleshooting assistance with these streaming video archives – use the UNITE Troubleshooting FAQ or “Submit a Trouble Report to UNITE” link found on all pages within the UNITE Media Portal.
Technical FAQ:
UNITE Media Portal:

Scholastic conduct: The quizzes and the programming assignments must not be the result of cooperative work (unless the instructor indicates otherwise). Each student must work individually in order to understand the material in depth. You may discuss the issues but by no means, copy the quiz or the programming assignment of somebody else. Copying significant pieces of code from the internet constitutes cheating. Any student caught cheating will receive an F as a class grade and the University policies for cheating and plagiarism will be followed.

Incompletes: will be given only in very rare instances when an unforeseeable event causes a student who has completed all the coursework to date to be unable to complete a small portion of the work (typically the final assignment or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentations must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such the unforeseeable event is apparent.

Disability Accommodations: We desire to make learning rewarding and fun for all students and make every attempt to accommodate anyone who has a desire to learn. If you require special classroom or test-taking accommodations, you need to contact the University Disability Services and also notify the instructor as soon as possible at the start of the semester (no later than 1 week prior to the first quiz).

Students Mental Health and Stress Managment: 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