The course consists of the following elements:
- Lectures: There will be approximately 30 lectures. Attendance and participation is expected at all of them.
- Written Assignments: Every other week, you will have a written assignment due that will be mostly problems from the text. We will grade some subset of these problems but won’t tell you which in advance. Complete solutions will be made available after the due date.
- Programming Assignments: Every other week, you will have a programming assignment due. All the undergraduate lab machines 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.
- Reading: We will cover most of the Computer Systems: A Programmer's Perspective text. Readings will be assigned for each lecture.
- Midterm exam: A one-hour exam at approximately the midpoint of the quarter.
- Final exam: A two-hour exam during finals week as per the University’s final exam schedule.
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 (person-to-person, e-mail, feedback form) 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
- 40%: programming assignments
- 40%: exams (15% midterm, 25% final)
Your grade will be determined by how well you understand the material as evidenced by the assignments and exams. We would like nothing better than to give the entire class a 4.0.
Your weekly 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 (i.e.,
num_late_days = ceil(hours_late /
24) ). An exception is made for weekends, which count as a
single late day. After you have used the late days afforded to you,
you will lose 10% of the maximum possible credit for each day an
assignment is overdue. Assignments will not be accepted after
solutions have been published (usually within a couple of days of the
Assignment problems will be graded on a random basis. To get full credit for an assignment, you must, of course, turn-in solutions for each assigned problem. Only a subset of the problems will actually 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.
Unless specifically stated otherwise, we encourage collaboration on homework, 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 in your own writing, using your own words, and understand the solution fully. Copying someone else's homework is cheating (see below), as is copying the homework from another source (prior year's notes, etc.). The exam problems will be very similar to the homework problems; if you truly understand the homework, then the exams will be easy. If you have copied the homework...
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, 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.
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) is another form of cheating. Copy code from a similar course at another university or generally using solutions/code on the web is also cheating. Communicating 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.
If in doubt about what might constitute cheating, send the instructor email describing the situation.
For more information, you may consult the department’s Academic Misconduct Policy.