代写EECS 281: Data Structures and Algorithms代写留学生C/C++语言
- 首页 >> Database作业EECS 281: Data Structures and Algorithms
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.
After taking this course, students should be able to:
1. Analyze the behavior. of a code fragment, predict its output, and repair any errors in it.
2. Read a specification of input data and develop a program than can acquire, store, manipulate, and produce required output.
3. Study an algorithm, analyze its time and space complexity, and determine how effective it will be for different sized data processing tasks.
4. Study a complex problem, be able to identify ways of decomposing it into simpler subproblems. combine those subproblem solutions to yield solutions to overall problems, and to be able to realize these techniques in operational code.
5. Analyze a problem and identify and define the computing requirements appropriate to its solution.
6. Apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices.
7. Optimize the algorithms and data structures used to solve a problem to reduce both time and space complexity.
Lectures
Each faculty member will have one lecture recorded online, live, at the scheduled class time. Please refer to the "Lecture Recordings" at the left for a link to each video. The videos will be automatically uploaded and made available, but it usually takes about 30 minutes from the end of lecture until it appears. Each lecture section scheduled in a room will also be streamed live via Zoom; the links for those appear in the "Calendar" at the left. Most lectures also have playlists of the videos, that were recorded previously, using the same slides but instead of one long lecture video, it has been broken down into multiple videos with a specific topic for each video.
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. MATH 465 or MATH 565 are accepted in lieu of EECS 203. Due to the overwhelming number of students interested in this course, we will strictly enforce the prerequisites. If you failed to complete, or if you received a grade of C- or below in any of the prerequisites, then you must drop EECS 281 this term, and re-enroll at a later term, after you have completed all prerequisites with a grade of C or better.
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.
Two-Attempt Rule
Per departmental policy, each student may attempt EECS 281 twice at most. One attempt in EECS 281 is defined as one instance where EECS 281 appears on your UM transcript. - including but not limited to a letter grade (A-E), withdrawal (W), pass/fail (P/F), incomplete (I). At most one attempt from Summer 2014 or earlier will count towards this limit. If you drop EECS 281 prior to the date which a W would appear on your transcript, then that would not count as an attempt for the purposes of this policy. Exceptions to this policy can be granted by the appropriate Chief Program Advisor under extraordinary circumstances only.
Grading Policy
Your work in this course is composed of: attending lecture and lab sections, reading assigned material, completing lab assignments, completing projects, taking a midterm exam, and taking a final exam. Final grades will be based on the total points earned on the labs, projects, and exams. Factors such as improvement and course 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% (each lab assignment weighted equally)
Projects 40% (each project weighted equally)
Midterm Exam 20%
Final Exam 20%
Grading Errors
We make every effort to grade correctly, however we do sometimes make mistakes.
Arithmetic errors can be corrected in person by your IA or GSI. 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 via email explaining the technical reason(s) that would make a regrade necessary. The email must be sent to [email protected] with “EECS 281 Regrade Request” in the subject line. All regrade requests must be submitted no later than five working days after the graded work is returned to the student - after that, your score on the assignment in question stands. This includes requesting that errors in recording a score in Canvas be fixed. Regrade requests must be an objective argument about which specific rubric items were inconsistently or improperly applied, not a subjective argument about what things should be worth. The work in question will be regraded carefully from scratch in its entirety, with consideration given to the written request. As a result, your grade might go up, stay the same, or go down.
Be careful with Canvas' "TOTAL" points -- it counts anything which has no recorded score as not existing (rather than 0). This works great when we're partway through the semester: if you've gotten a 98 on Projects 1 and 2, your projects total would be 98.
When we get to the end of the semester, something you didn't turn in should count as a 0, but it counts as not existing. So before you complain that your total says 83.01 but you're getting a B-, make sure you don't have any missed assignments -- one missed lab could put your actual total below 83.
For the exams, we will begin accepting regrade requests two calendar days after your exam is released to you on Gradescope. This is to force you to wait until you have carefully reviewed your exam responses and the rubric before submitting a regrade request. Regrade requests for the exams will close about one week after the scores are released. When exam scores are released on Gradescope, everyone will receive an email stating the exact start and end dates for regrade requests.
For lab handwritten parts, you have until the day before the corresponding exam the lab in question to dispute your score (the day before the midterm for labs 1-5, final for labs 6-10).
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
IF you achieve at least a 55% average on the Programming Projects AND a 50% average (curved scores) on the exams AND a 75% average on lab assignments, you will pass this course. You must achieve ALL of these thresholds separately - very high exam scores will not compensate for very low project scores, and vice versa. If you receive at least 220 project points AND at least 100 exam points total for the term AND at least 150 lab points, you are guaranteed at least a grade of C in the course.
Rounding is not guaranteed, so 219.999999 project points OR 99.999999 exam points OR 149.999999 lab points does not guarantee passing. If you do not meet these minimums you might still pass, but we consider each such case individually. The closer you are, the more improvement you show, and the fewer portions that you are not passing all improve your chances.
Curving
The Midterm and Final Exams will be curved if needed, and any curve applied can only be in your favor. For example, if the Midterm Exam turns out with a lower average than we would like, we might set a bar of say 46 points for passing the Midterm, rather than 50.
The table below gives you a lower bound as to what your grade would be. That is, we may perform. a final curving, which again may improve someone’s grade, but never reduce it. Rounding is not guaranteed, thus 90% overall guarantees at least a grade of A-, 89.999999% does not - the cutoff must go somewhere and no matter where it goes, there will always be somebody barely on either side of it.
Grades shown here are superseded by the “ Minimum Competency” rules shown above. If you achieve ALL thresholds, then the guarantee that you will receive at least a C in the course overrules the scale shown in the table below. However, if you fail to meet at least one of the thresholds, then you may still receive a C- or below even if the scale shown in the table below says that you should be getting a higher grade. For example, if you have 60% overall, and achieve at least the minimum 55% on projects and 50% on exams, you will receive a C, even though the table below says that you should receive a D. On the other hand, if you only achieve 50% on projects, but 100% on everything else, then despite that being 80% overall, your grade will be a C-, even though the table below says that you should receive a B-.
Grad |
Mi |
Ma |
e |
n |
x |
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 |