The course consists of the following elements:
- Lectures: There will be 29 lectures. Attendance and participation is expected at all of them.
- Programming Assignments (Labs): There are 6 total programming assignments, due roughly every other week. All the undergraduate lab machines (and the VM) will have access to the tools and there will be some discussion of them in section. We will use these assignments to reinforce key concepts and will strive to have them be as practical as possible.
- Written Assignments (Homework): There are 4 total written assignments, due roughly every other week, that will be mostly problems from the text. We will grade a subset of these problems (rather than all) but will not tell you which in advance. Complete solutions will be made available after the due date.
- Reading: We will assign readings from the the course textbook that correspond to lecture topics.
- Midterm exam: A one-hour, in-class exam at approximately the midpoint of the quarter. See the course calendar.
- Final exam: A two-hour exam during finals week. A joint final exam will be held Tuesday, Dec. 13, 12:30-2:30pm. — This is not the normal assigned exam slot for either lecture!
We will try to ensure that the workload is typical for a four-credit course, namely, nine to twelve hours per week outside of the lectures. If we do not succeed, please let us know in whichever way you feel the most comfortable (in-person, via e-mail, on the discussion board, anonymous feedback) and explain which parts of the course are causing you to spend too much time non-productively.
We have structured the course so that spending a few hours per day will maximize your efficiency. You will work this way in the real world—you cannot cram a three-month design assignment into the last night—so you may as well work this way now. Plus, you will understand the material better. If you leave the homework for the day before it is due you will not have time to ask questions when (not if) the software misbehaves.
Your assignments must be neat and legible. We will not spend time trying to decipher messy work. We urge you to use the graphical and word processing tools that are readily available to you in all the labs in the department.
We will compute your course grade as follows:
- 20%: written assignments
- 35%: programming assignments
- 45%: exams (15% midterm, 30% final)
- Midterm: In-class exam. Covers up to and including the 10/24 lecture on Procedures and Stacks.
- Final: Cumulative final consists of 2 sections: Midterm material and post-Midterm material. Performance on the Midterm section can override Midterm grade (see Clobber Policy).
On each exam, you will be provided with a reference shee of useful information. Additionally, you will be allowed to bring handwritten cheat sheets as indicated below:
- Midterm: One 8.5" x 11", double-sided cheat sheet. Midterm reference sheet.
- Final: Two 8.5" x 11", double-sided cheat sheets. Final reference sheet.
Midterm "Clobber" Policy
The clobber policy allows you to override your Midterm score with the score of the Midterm section of the Final. Note that the reverse is not true -- you must take the entire Final, regardless of your Midterm score.
- Potential replacement score = (Final_MT_subscore - Final_MT_mean) / Final_MT_stddev * MT_stddev + MT_mean
- Clobbered Midterm score = MAX(original MT score, potential replacement score)
Final_MT_subscore is your score on the Midterm section of the Final, Final_MT_mean and Final_MT_stddev are the mean and standard deviation of the Midterm section of the Final, and MT_stdev and MT_mean are the standard deviation and mean of the Midterm.
"Clobbered MT score" is then filled in as your Midterm score for the final grade calculation.
Your written and programming assignments are due at the specified time on the assigned due date. You are allocated a total of 3 late days for the entirety of the quarter to utilize should the need arise.
- A late day is defined as the 24 hour period after an
assignment's due date:
num_late_days = ceil(hours_late / 24).
- An exception is made for weekends, which count as a single late day. That is, if an assignment is due at 11:59pm on Friday, if you submit it before Sunday at 11:59pm it will only count as one day late (submitting by 11:59pm on Monday would count as TWO days late).
- There is no bonus for having leftover late days at the end of the quarter.
If you exceed the late days afforded to you, you will lose 10% of the assignment score for each day an assignment is overdue. Note that all assignment submissions close 3 days (72 hours) after the due date. In addition, submission may end before 72 hours in the following cases:
- Written assignments will not be accepted after solutions have been published.
- Programming assignments will not be accepted after the assignment has been graded.
Written assignment problems will be graded on a random basis. To get full credit for an assignment, you must submit solutions for every assigned problem. Only a subset of the problems will be graded in detail. You will not know in advance which problems this will be, so make sure to do all of them. You are strongly encouraged to review the assignment solutions to ensure you understood all the problems whether they are graded or not and make sure to do so carefully before questioning a grade with either the instructor or the teaching assistants.
If you have a question about an assignment or exam that was returned to you, please don't hesitate to ask a TA or the instructor about it during their office hours. Learning from our mistakes is often one of the most memorable ways of learning!
If after discussing your question with a TA or the instructor you feel that your work was misunderstood or otherwise should be looked at again to see if an appropriate grade was given we ask that you submit a written re-grade request as follows:
- Submit a written summary describing why the work should be looked at again. For assignments or exams submitted and graded on paper, you should submit the original paper version of the assignment/exam along with a written regrade request (which can be neatly handwritten). For work that was electronically submitted and graded, an email re-grade request is appropriate.
- Submit it to the instructor or to a TA.
- Re-grade requests should be submitted within a week of when the assignment was returned.
Unless specifically stated otherwise, we encourage collaboration on homework and labs, provided (1) You spend at least 15 minutes on each and every problem alone, before discussing it with others, and (2) You write up each and every problem/program yourself, using your own words/code, and understand the solution fully. We can learn a lot from working with each other, and it can make the course more fun.
Copying someone else's homework is cheating (see below), as is copying the homework from another source (prior year's notes, sources on the web, etc.). Keep in mind that the overall goal is for *YOU* to learn the material so you will be prepared for the exams and for job interviews etc. in the future. The assignments are designed to help you gain that understanding. Copying turns the assignments into an exercise that is a silly waste of both your time and ours, save us both by not doing it.
Cheating consists of sharing code or solutions to assignments either by copying, retyping, looking at, or supplying a copy of a file. Coaching (where you help a friend write a program line-by-line or figure out the exact text to put in defuser.txt or an exploit string) is another form of cheating. Copying code from a similar course at another university or using solutions/code on the web is also cheating. Communicating your solution with another student via electronic or non-electronic means constitutes cheating. To avoid creating situations where copying can arise, never electronically share or post your solution files. It is NOT cheating to explain how to use the software tools or help others with interpreting high-level design issues.
Cheating is a very serious offense. If you are caught cheating, you can expect a failing grade and initiation of a cheating case in the University system. Basically, cheating is an insult to the instructor and course staff, to the department and major program, and most importantly, to you and your fellow students. If you feel that you are having a problem with the material, or don't have time to finish an assignment, or have any number of other reasons to cheat, then talk with the instructor. Just don't cheat.
If in doubt about what might constitute cheating, send the instructor email describing the situation and we will be happy to clarify it for you.
For more information, you may consult the department’s Academic Misconduct Policy.
We will keep track of any extra credit items you attempt on labs and homeworks. You won't see these affecting your grades for individual homeworks and labs, but they will be accumulated over the course and will be used to bump up borderline grades at the end of the quarter.
The bottom line is that these will only have a small effect on your overall grade (possibly none if you are not on a borderline) and you want to be sure you have completed the non-extra credit portions of the lab/homework in perfect form before attempting any extra credit. They are meant to be fun extensions to the assignments, so if you complete some extra credit it *may* positively impact your overall grade.