The University of Michigan, Winter 2021
Computer science fundamentals, with programming in C++. Build an image processing program, a Euchre card game, a web backend, and a machine learning algorithm.
Jonathan Beaumont <jbbeau@umich.edu> |
Andrew DeOrio <awdeorio@umich.edu> |
James Juett <jjuett@umich.edu> |
Due to COVID-19, EECS 280 will be remote this semester. You can complete the entire course from anywhere in the world.
Lectures are offered via live and asynchronous formats. You may attend any lecture section or watch any of the recordings, even if it's different than your registered section. We don't take attendance in lecture.
MW 10:30 - 12:00 ET | DeOrio Zoom Lecture |
MW 1:30 - 3:00 ET | Juett Zoom Lecture |
MW 3:00 - 4:30 ET | Beaumont Zoom Lecture |
Asynchronous | DeOrio short videos via Panopto |
Asynchronous | Juett short videos and interactive exercises via Runestone |
Labs will be completed remotely in assigned groups of four. A staff member will join your video call for part of the time. Expect to complete a worksheet together as a group. Attendance at your registered lab is required.
Projects will be completed either alone or in a partnership and turned in to an autograder.
Exams will be completed remotely using a web-based exam platform. Expect scheduled, timed midterm and final exams.
Office hours will be held via video conference, both one-on-one and in groups.
Grades are weighted less on exams compared to previous semesters (rubric).
Make sure you have a laptop consistent with CAEN recommendations.
Test your internet connection with the U-M Custom Speedtest website and make sure it meets the minimum requirements for any UM service. You'll need more bandwidth if there will be multiple simultaneous users in your household.
Resources for help with computing equipment:
EECS 280 is a second-semester foundational programming course. You'll learn how to write correct programs that are easy for others to understand and modify. We focus on computer science concepts including:
|
|
In our exploration of these concepts, we cover many elements of the C++ language:
|
|
ENGR 101 or ENGR 151 or EECS 180 or EECS 183 with a minimum grade of "C". Prerequisites may be waived with transfer credit or a proficiency exam. Contact the CSE Advising Office in Beyster 2808 ugadmin@eecs.umich.edu.
Course notes.
Optional C++ Primer by Lippman, Lajoie and Moo. 5th edition. Available free through UM library.
eecs280.org links to all course resources and is required reading.
Piazza is the course discussion forum, best for technical questions and project updates. Do not publicly post your code.
eecs280staff@umich.edu reaches the course staff, best for non-technical questions.
Individual professor email addresses are best for confidential matters.
Canvas is where we publish important announcements and grades. It is your responsibility to verify you can receive Canvas announcements.
There will be one midterm and one final examination. Exam dates are posted on eecs280.org. It is your responsibility to verify you can attend both exams before registering.
We provide a single alternate midterm exam. It is available only to students who have a valid, documented conflict with a required activity in another course, or university-affiliated athletics.
We provide a single alternate final exam. It is available only to students who have a conflict with another final exam.
All requests for alternate exams must be received no later than the third week of the semester.
During lab sections, you will complete worksheets in small groups. A staff member will join you for part of the lab. Labs will be graded on attendance and completion of the worksheet.
You will complete five major programming projects ranging in size from ~100 to ~1,000 lines of code.
Project 1 is independent. You may work either alone or in a partnership for the remaining projects.
If you work in a partnership, you must partner with a student registered for EECS 280 this term (any section). You must not partner with anyone outside the course. For those retaking the course: if you submitted an assignment in a previous term, you must not partner on that same assignment this term.
You may change partners between projects. You must not change partners during a project. In exceptional cases, you may request partnership dissolution via email to the faculty. If the dissolution is granted, both partners may use previously shared code and both partners must work alone on the remainder of the project.
You and your partner turn in the same solution to the autograder. You must register your partnership on the autograder.
We use a web-based autograder to evaluate correctness, style, and the thoroughness of your tests.
Before the deadline, you may submit up to 3 times per day. After each submission, the autograder shows the results of the public tests released with the project.
After the deadline, the autograder shows the results of private tests, which are usually more thorough than the public tests.
Your final project score is a combination of public and private tests. We use the submission that received the combined best score. If multiple submissions share the best score, we grade the last.
You are free to develop on any platform. You are responsible for any differences between your preferred platform and the grading platform, so use only ANSI/ISO standard C++. We recommend testing your code on CAEN Linux, which provides version 4.8.5 of the g++ compiler, the same version used by the autograder.
Tips for doing well on the projects include:
Tips for project partnerships include:
Letter grades are assigned on a straight scale with curved exams. In general, our goal is be consistent with past semesters.
Compared to previous semesters (before Winter 2021), exams are weighted less. Additionally, letter grades are assigned on a straight scale and exams are curved individually. The new process is intended to increase transparency, and we expect the overall grade distribution to remain consistent with past semesters.
We calculate your total weighted score using these weights.
Assignment | Weight |
---|---|
Lab (all labs equal weight) | 10% |
Projects (p1 5%; p2-p5 11% each) | 49% |
Midterm Exam | 20% |
Final Exam | 20% |
Computing CARES entry and exit surveys | 1% |
Total | 100% |
After computing the total weighted score, we use these ranges to assign letter grades. Each range is half-inclusive, for example a score of 89.9% is a B+ and a score of 90.0% is an A-. We may adjust thresholds in your favor.
Total weighted score | Letter grade |
---|---|
0 - 50% | E |
50 - 60% | D |
60 - 70% | C- |
70 - 77% | C |
77 - 80% | C+ |
80 - 83% | B- |
83 - 87% | B |
87 - 90% | B+ |
90 - 93% | A- |
93 - 97% | A |
97 - 100% | A+ |
After each exam, we may adjust your score to account for the difficulty of the exam. In general, our goal is a mean in the mid 80's. We will never adjust scores downward.
To pass EECS 280 with a C or better, your total weighted project score must be at least 60.0%, and your total weighted curved exam score must be at least 70.0%.
We do not accept late work. Project and lab submissions are not allowed past the deadline.
Students adding EECS 280 after the Project 1, Lab 1, or Lab 2 deadline may petition to turn in those assignments.
We will consider extension requests made at least two weeks in advance, for example, for religious holidays or planned medical procedures.
If you experience a medical or personal emergency, please reach out to us! We will consider exceptions on a case-by-case basis. Please provide documentation of the emergency if you are able, as this helps us make appropriate accommodations.
We do not consider individual exception or extension requests for labs. Instead, we will automatically drop your two lowest lab scores.
Request an extension using the form linked from eecs280.org.
Exams are graded by hand. Request a regrade via Gradescope. We accept requests only to correct grading errors, not disagreement with the rubric. Your score may go up or down.
Labs are graded for attendance and completion. Report a clerical error via the link on eecs280.org.
Projects are automatically graded. We do not accept regrade requests.
In all cases regrade requests are due no later than 7 days after a grade is released unless a shorter deadline is specified.
We encourage collaboration in EECS 280, especially on concepts, tool, specifications, and strategies.
All work you submit must be your own or your partnership's. Collaboration must not result in code that is identifiably similar to other solutions, past or present.
Encouraged Collaboration | Unacceptable collaboration |
---|---|
Sharing high-level design strategies, e.g., helper function organization or data structure choices | Walking through an important piece of code step-by-step, sharing pseudocode, sharing comments |
Helping others understand the spec or project nuances | Providing your code as a reference |
Helping someone debug | Debugging someone's code for them |
Explaining a compiler error to someone | Fixing a compiler error for someone |
Discussing test strategies | Sharing test code to verify someone else's design, even if test cases are not submitted |
Brainstorming edge cases for testing | Discussing specifics about what tests exposed instructor bugs on the autograder |
Sharing code provided by the course staff | Copying code in whole or in part, even if the code is modified Writing original code for someone else, or paying someone to write your project |
Looking at someone else's code to understand concepts | Sharing your code in a way that could be copied, e.g., sending code over email or taking a picture of code |
You are still responsible for following these rules even after finishing the course.
If you are unsure about what constitutes an honor code violation, please contact the course staff with questions.
If you are retaking the course, you may reuse your own code, provided it was wholly written according to rules outlined in this syllabus. It is possible for instructors to miss an honor code violation in a previous term, but catch and report it when the code is reused.
You may not make your code publicly available in any form, for example in a public GitHub repository or personal website. You are still responsible for following these rules even after finishing the course.
We report suspected violations to the Engineering Honor Council. To identify violations, we use both manual inspection and automated software to compare present solutions with each other, with past solutions, and with code found online. The Honor Council determines whether a violation of academic standards has occurred, as well as any sanctions. Read the Honor Code for detailed definitions of cheating, plagiarism, and other forms of academic misconduct.
Here's what you can expect if you are reported for an honor council violation:
If you have a pending honor council case at the end of the term, you receive an "I" (incomplete) grade until the case is resolved. We will send you a grade projection via email to help with planning. Your grade is updated once the case is resolved. The "I" should not remain on your transcript.
If you think you need an accommodation for a disability, please let your instructor know during the first three weeks of the semester. Some aspects of this course may be modified to facilitate your participation and progress. As soon as you make us aware of your needs, we can work with the Services for Students with Disabilities (SSD) office to help us determine appropriate academic accommodations. SSD (734-763-3000; http://ssd.umich.edu) typically recommends accommodations through a Verified Individualized Services and Accommodations (VISA) form. Any information you provide is private and confidential and will be treated as such.
As indicated in the General Standards of Conduct for Engineering Students, we are committed to a policy of equal opportunity for all persons and do not discriminate on the basis of race, color, national origin, age, marital status, sex, sexual orientation, gender identity, gender expression, disability, religion, height, weight, or veteran status. Please feel free to contact us with any problem, concern, or suggestion. We ask that all students treat each other with respect.
University of Michigan is committed to advancing the mental health and well-being 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: https://caps.umich.edu/article/um-mental-health-resources.
Your class work might be used for research purposes. No identifying information about you or your work will be published. For example, we may use anonymized student assignments to design algorithms or build tools to help programmers. Or we might survey responses to help us improve the course and better understand instructional techniques. Any student who wishes to opt out can contact the course staff (eecs280staff@umich.edu) at any time up to seven days after final grades have been issued. This has no impact on your grade in any manner.