Course Syllabus
EECS 281: Data Structures and Algorithms
Winter 2017
-
Basic Information
Faculty Instructors
Dr. Andrew Lukefahr, 2632 Beyster, eecs281admin@umich.edu
Dr. David Paoletti, 2645 Beyster, eecs281admin@umich.edu
Office Hours
Office hours will be posted on Canvas
Other resources
Course web page (all sections): Canvas: umich.instructure.com
Course forum/chat (all sections): Use Piazza tool
Course administrative email (used for special circumstances such as illness): eecs281admin@umich.edu
-
Course Overview
EECS 281 is an introductory course in data structures and algorithms at the undergraduate level. The objective of the course is to present a number of fundamental techniques to solve common programming problems. For each of these problems, we will determine an abstract specification for a solution and examine one or more potential representations to implement the abstract specification, focusing on those with significant advantages in time/space required to solve large problem instances. When appropriate, we will consider special cases of a general problem that admit particularly elegant solutions.
-
Prerequisites
Students must have obtained a grade of C or better in each of EECS 203 and EECS 280, or have equivalent knowledge of discrete mathematics and C++ programming. Due to the overwhelming number of students interested in this course, we will strictly enforce the prerequisites.
Students will be expected to use the "make" utility to automate C++ compilation. Also, students should be able to generate plots using MS-Excel, OpenOffice, Gnuplot, or similar tools. Students with questions about whether they have sufficient preparation for this course should speak with the instructor(s) as soon as possible.
-
Reading List
Required Reading (both are available electronically to UM students at no extra cost):
- Introduction to Algorithms, 3rd Edition, by Cormen, Leiserson, Rivest, and Stein. MIT Press, 2009 (click on Available Online below the Holdings tab)
- The C++ Standard Library: A Tutorial and Reference, 2nd ed., by N Josuttis. Addison Wesley Publishing, 2012
There may also be some handouts that the faculty will provide. You are required to read the contents of the course website and visit the course forum regularly where we will post important course-related information.
-
Grading Policy
Your work in this course is composed of: attending lecture and discussion sections, reading assigned material, completing homework assignments, completing projects, taking a midterm exam, and taking a final exam. Final grades will be based on the total points earned on the homework, projects, and exams. Factors such as class participation may be used to adjust your final grade, especially if it falls on a borderline. The weight assigned to each category is as follows:
Lab Assignments 20%
Projects 40%
Midterm Exam 20%
Final Exam 20%
There is a ‘gray area’ of several points around each specific numeric grade, within which a ± system is used. Two people getting the same numeric grade might therefore receive different letter grades for the course. If the student is in one of these gray areas, their grade may go up or down depending upon whether exam and/or project performance has been improving or declining.
-
Grading Errors
We make every effort to grade correctly, however we do sometimes make mistakes. Arithmetic errors can be corrected in person by your TA. If you believe something was graded incorrectly, you may submit it for a regrade. All exam regrade requests must be made on Gradescope. Regrade requests for other assignments must be made in email explaining the technical reason(s) that would make a regrade necessary. Email must be sent to help email address given above (section 1) with “EECS281 Regrade Request” in the subject line. All regrade requests must be made no later than five working days after the graded work is returned to the student. The work in question will be regraded carefully in its entirety, with consideration given to the written request. As a result, your grade might go up, or it might go down. Subsequent regrade requests may require additional scrutiny.
-
Incompletes
Incompletes will generally not be given except in extreme circumstances. In accordance with university policy, doing poorly in a course is not a valid reason for an incomplete. If you are having problems in the course, please talk to the instructor(s) as soon as you are able.
-
Minimum Competency
To pass this course, you must achieve at least 55% on the Programming Projects AND 50% (curved score) on the exams.
-
Curving
The Midterm and Final exams will be curved if needed. When this is done, your score may go up but it will never go down. After curving, the grading scale will be as shown in the table below. We may perform a final curving which again may improve someone’s grade, but never reduce it. Grades shown here are superseded by the “Minimum Competency” rules shown above (for example, if you have 75% overall but only 50% on the projects, your grade will be no higher than a C-).
|
Grade |
Min |
Max |
|
A+ |
97 |
100 |
|
A |
93 |
<97 |
|
A- |
90 |
<93 |
|
B+ |
87 |
<90 |
|
B |
83 |
<87 |
|
B- |
80 |
<83 |
|
C+ |
77 |
<80 |
|
C |
73 |
<77 |
|
C- |
70 |
<73 |
|
D+ |
65 |
<70 |
|
D |
60 |
<65 |
|
E |
0 |
<60 |
-
Lab Assignments
We will assign approximately 12 homework assignments over the course of the semester (equally weighted). The lowest score will be dropped. Lab submissions must not include external materials (e.g., web downloads) unless specifically requested in the assignment. Any external sources used must be clearly cited in the lab solution set. Lab work is typically due as some combination of: (1) a sheet of paper turned in at the end of the lab period (2) a submission to the EECS 281 Canvas site; (3) a submission to the EECS 281 autograder. Late homework assignments will not be accepted for any reason. Your lowest score will be dropped; use it wisely!
-
Course Projects
Four projects will be assigned during the term. Project submissions must not include external materials (e.g., web downloads) unless specifically requested in the assignment. These projects will require substantial time commitment on every student’s part. However, we expect that effort spent on programming projects will help the student to gain a conceptual understanding of the material. We strongly recommend that students begin working on assignments early, both to lower stress and have more time to ask questions.
-
Project Grading
The projects together total 40% of the course grade (10% each). The breakdown of points for each project grade will be specified in the project assignment. Categories include:
- functional correctness;
- execution speed to obtain correct solution;
- principles and practices (readable code, efficient algorithms and implementation, comments, use of topics from class);
- documentation of your solution.
-
Turning in Projects
Each project is allotted 2-3 weeks. Project will be turned in online to an autograder. Specific details of the project submission process will be described on the course website.
Sometimes unexpected events or other academic commitments make it difficult to get a project in on time. Late projects will not be accepted for any reason. Often, it will be better to submit a partially working assignment on time rather than spend an uncertain amount of additional time in getting it to work completely. Because of auto-grading, it is important to carry out the project tasks in such a way that you have at least a partially working project early on, which you enhance every day till the project becomes due.
-
Computing Facilities
All projects are to be written in C++. The student is free to use any environment to develop a program, but any submitted program must compile and run in the CAEN Linux computing environment (login.engin.umich.edu) using the GCC version 5.1.0 compiler. You are responsible for making sure that your projects run correctly in this environment. Using CAEN Linux computing as your development environment will reduce the chance of encountering nasty surprises when your project is graded.
-
Exams
There will be one midterm exam and one final examination. If you miss an exam without a documented medical or personal emergency, you will receive a zero for that exam. If you need additional time to complete the exam because of a personal disability, talk to the instructor(s) at least 1 month before the exam date. The exam dates are given at the beginning of the semester so that you can avoid scheduling job interviews or other commitments on exam days. Other than for medical or personal emergency reasons, no scheduling conflicts will be taken into consideration two weeks after the start of the semester. Outside commitments are not considered a valid reason for missing an exam. The midterm examination is scheduled for Wednesday, February 22nd, 7:00pm - 9:00pm. The final examination is scheduled for Monday, April 24th, 8:00am - 10:00am.
-
Getting Help
Your first and best option is to ask your question during the office hours of a member of course staff. The next best option is to post your question to the course forum which will be monitored regularly. Students are allowed/encouraged to post answers to forum questions; however, posted questions must not reveal solutions to the projects or homework questions. You should not rely on private email to ask course-related questions. Members of the course staff may or may not answer questions sent by private email.
We do understand that students sometimes have questions of a personal or sensitive nature. For such matters, we ask that you see your instructor during office hours. If you have a conflict with all posted hours, you should send email to schedule another time.
-
Policy on Collaboration and Cheating
Acts of cheating and unacceptable collaboration will be reported to the Engineering or LS&A Honor Councils, as appropriate. Cheating is when you copy, with or without modification, someone else's work that is not meant to be publicly accessible. Unacceptable collaboration is the knowing exposure of your own exam answers, project solutions, or homework solutions; or the use of someone else's answers or solutions made public. This includes solution sets and student solutions from past incarnations of EECS 281. This means that students are not permitted to use previous solution sets, even if the solutions are your own. Any misrepresentation of another person’s work as your own is unacceptable in EECS 281 and it is a violation of the honor code.
At the same time, we encourage students to help each other learn the course material. As in most courses, there is a boundary separating these two situations. You may give or receive help on any of the concepts covered in lecture or discussion and on the specifics of C++ syntax. You are allowed to consult with other students about the conceptualization of a project, or the general approach for homework solutions. However, all written work, whether in scrap or final form, must be done by you or your partners, where applicable.
You are not allowed to work out the programming details of the projects or specific details of the homework problems with anyone or to collaborate to the extent that your programs/homework are identifiably similar. You are not allowed to look at or in any way derive advantage from the existence of solutions prepared in prior terms, whether these solutions are copies of former students' work or solution sets handed out by course staff. We will be using an automated program to correlate projects against each other and past solution sets.
Under no circumstances should you show any code that you will turn in for a grade (for a programming project or a homework assignment) to any persons other than the EECS 281 instructional staff. Similarly, under no circumstances should you look at code written by another EECS 281 student (current or past) when preparing your own solutions.
If you have any questions as to what constitutes unacceptable collaboration or exploitation of prior work, please talk to the instructor(s) right away. You are expected to exercise reasonable precautions in protecting your own work. Don't let other students borrow your account or computer, don't leave your work in a publicly accessible directory, and take care when discarding printouts.
-
Student Mental Health and Wellbeing
University of Michigan is committed to advancing the mental health and wellbeing of its students. If you or someone you know is feeling overwhelmed, depressed, and/or in need of support, services are available. For help, contact Counseling and Psychological Services (CAPS) at (734) 764-8312 and https://caps.umich.edu during and after hours, on weekends and holidays, or through its counselors physically located in schools on both North and Central Campus. You may also consult University Health Service (UHS) at (734) 764-8320 and https://www.uhs.umich.edu/mentalhealthsvcs, or for alcohol or drug concerns, see www.uhs.umich.edu/aodresources.
For a listing of other mental health resources available on and off campus, visit http://umich.edu/~mhealth/.
Course Summary:
| Date | Details | Due |
|---|---|---|