![]() |
CPS 210 Operating Systems | ![]() |
|||||
|
|||||||
Who should take this course. Undergraduate and graduate students with an interest in systems and networking. The course covers core topics in operating systems and networked/distributed systems.
Preparation. You should be familiar with undergraduate-level computer architecture and consider yourself a strong student and a good programmer. We will ask you to program in C and in Java.
Readings. There is no text for the course. We will have some web reading, and a few papers, but the core material will be presented in lecture and notes. Students may improve their understanding by looking at one of the optional texts.
Base workload. In addition to the readings, there will be assigned projects or labs (done in teams of 2-4), two midterms, and a final exam. Students report spending at least 10-15 hours on each lab. Many groups spend more time: as with all software development, debugging time is effectively unbounded. The more bugs you create, the more time you will spend hunting them down. It is worth taking the time to plan and write solid code from the start. You can take my word for it, or you can discover it for yourself.
Late work. Graded work has deadlines. To keep things fair no extensions can be granted to individuals or groups. We may occasionally grant extensions to the entire class, or grant "free passes" for late days that all groups may "spend" as they choose. Late work receives a penalty of between 25% and 80%, depending on circumstances. It is much better to do the work and hand it in than to receive a zero on any assignment.
Policy on collaboration for CPS 210. Collaboration on lab work and project work is encouraged. Help each other. However, any work you turn in must be your own, and you may be called upon to explain (alone) your choices and approaches in more detail. You may incorporate public software into your assigned lab work and course project to a reasonable extent, but not so much as to undermine the educational purpose and spirit of the project. You must acknowledge any sources of your words, ideas, and software when they are not your own, and you should disclose (in advance, without any specific request) any sources you used. Failing to do so is at best a violation of professional etiquette. But if you use content (code or words) from a source that you do not acknowledge, then that constitutes cheating. For example, handing in code from a previous semester is a serious offense.
Sharing code among groups. Sharing code among groups is permitted under the collaboration policy. However, it is discouraged and it will not improve your grade. All students should understand that we have software that flags copied code with a high degree of certainty and precision. If you share or copy code, we will know, and we will remember. (The tools do not differentiate the makers from the takers.) In this course, for practical reasons we choose to treat it as a public health problem rather than an offense under the university's academic dishonesty policy. We view code copying as a reflection of your attitude toward the course. If you share code, you may find that we are less committed to helping you and that you are less likely to receive the benefit of any doubt on grading. If a substantial amount of code is copied, then we may choose not to grade it.
A Note on grades, pressure and all that. I try to focus on serving students who are smart and highly motivated and honest. That's what I enjoy, and it's where I can have the most positive impact. If you are in that group, I want to give you a world-class educational experience. Among other things, that means I spend a certain amount of time talking about stuff that's useful and interesting but is "not on the test".
It is a practical reality of being a professor in the real world that many students are less than fully committed and/or are struggling in some way. Some students are in over their heads, some students have external demands on their time that they are not able to control, and all of us make difficult choices about how we allocate time over many activities. We do our best to value your time, maximize the learning value of the time spent, make the minimal expectations clear, and work to resolve problems individually if necessary.
Most students feel grade pressure. I try to give grades that measure fairly a student's achievement, and reflect that most of our Duke students are strong, many are very strong, and a few are exceptional. We take grading very seriously. But in the end we will assign a grade and stick to it. You should always feel free to ask questions about your grade, but please do not ask for an "upgrade".
How do I assign semester grades? In this course your lab/project grades and exams are roughly equally weighted. All members of a project group receive the same grades for the projects. Projects also figure into your exam score, because I often ask questions about the projects on the exams to get a better reading on who is pulling weight in the project groups. As for the exams: there are generally two midterms (200 points each) and a final exam (300 points) and another 100 exam points derived from your "best" exam, as a mechanism to give more weight to your best exam. I add up all the points, sort, and assign grades in rank order, according to natural breaks. I also make some allowance for outliers, trends of improvement or decline, and other factors. These may result in adjustments of up to half a letter grade.
I generally reserve failing grades for students who know for themselves that they deserve it. Examples of behavior that leads to failure are: not showing up, not doing the work, and not bothering to learn anything. But there are many students who do not succeed, but also do not fail. Students who are in over their heads for whatever reason rarely if ever receive failing grades if they are open with me about the challenges they face and make a solid effort to address it. But if you feel that you are in trouble, please come to me sooner rather than later. We can't always tell who needs help.
The flip side of this philosophy is that I reserve A and A+ grades for students who distinguish themselves among their peers in a clear way. If you receive an A grade from me I will be happy to write you a strong letter of recommendation. I also give a lot of A- and B+ grades. Students who are getting by but are clearly behind most of their peers will generally receive grades in the C to B range.
Cheating. Cheating is a very serious offense. I used to say: "I do not expect it to occur in this class." However, after more than 15 years of teaching at Duke blissfully unaware of any cheating, I lost my innocence recently. So: I fear that some students will be tempted to cheat. Please don't do anything you will regret later. In particular, we have automated tools to watch out for copied code, including various web sources and code from previous semesters. These tools are known to be effective. If you cheat and get caught, please just confess and take the plea deal from the dean. If you don't confess it can get pretty ugly for everyone. Please: just stay honest. Lies corrode the soul.