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

CSci 4041

Algorithms and Data Structures

Fall 2017

(Last revised 8/31/17)

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



Name James Parker
Email jparker (at) cs (dot) umn (dot) edu
Office Shepherd Laboratories 391
Office Hours Monday: 5:00pm - 6:00pm
Tuesday: 2:00pm - 3:30pm
Thursday: 5:30pm - 6:30pm
Shepherd Laboratories 391

For TA office hours, see moodle or the "Office hours" page on the website.

Class homepage

Text: Cormen et al., Introduction to Algorithms 3rd edition. Other resources will also be linked to the class web page.

Additional Resources (optional):

[1] M. Goodrich, R. Tamassia, and M. Goldwasser, "Data Structures and Algorithms in Java", Wiley, Hoboken, NJ, 2014.
[2] R. Sedgewick and K. Wayne, "Algorithms", Addison-Wesley, Reading, MA, 2011.
[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] java/code/DataStructures/

General course description: The course objective is to provide fundamental paradigms for algorithm design with the supporting data structures. In particular, the course will start from simple algorithms in sorting and graph theory. Later in the semester, more complex geometric, algebraic, and numeric algorithms will be discussed. Finally, a special class of problems, called NP-complete problems, will be presented.

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

Homework (3 of them)                        30% 
Programming Assignments (2 of them)         20%
Midterm (Sec 001: 10/24, Sec 010: 10/23)    25%
Exam (Sec 001: 12/12, Sec 010: 12/18)       25%

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%   --  60.0%   F
For S/N grading, a satisfactory grade (S) requires a weighted score of 70 or above.

Email Use: Please check the moodle discussion and announcements for answers first. To help us serve you better, please put the 4041 note in the title of your emails if you decide to send one. This is not Java/C++/Python class. Thus, we assume that you know the basic structures of the language.

Homework: Three homework will be given during the semester. They will consist of problems that will help you understand the material and monitor your progress. Solutions to the homework may not be distributed, but you can come to an office hour if you have questions about the solution. For passing this class, it is strongly suggested to submit all the homework and programming assignments.

Programming Assignments: Two major programming assignments will be given during this semester. Every student of this class should have an account at the CSE machines and verify it works on these machines.

Late work: Late work will not be accepted past the deadline. If you feel you should be given an extension, you must ask at least 48 hours before the deadline. If you are unable to finish the work in time, you should turn in what you currently have at the deadline.

Recitations: Recitations are very important for reinforcing the material. Try to attend all of them.

Scholastic conduct: The exams, the homework, 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 homework 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 3 weeks prior to the first examination).

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