Duke Univ - CPS110 Fall 1998:Policies
CPS 110
Introduction to Operating Systems
Fall 1998
Policies and Administration
Goals of the Course
- To cover the traditional topics: What is an Operating System and what is it supposed to do for us? How does it accomplish these functions? How are such systems implemented and structured? Topics include concepts of
protected kernels, processes and threads, concurrency and synchronizations, file systems, and virtual memory.
- To help you develop new skills: Concurrent programming. Inheriting large, complex software systems and adding value (as in the "real world"). Developing an intuition for system design tradeoffs. A major
component of the course is a series of projects using the notorious Nachos instructional operating system.
- Who should take this course? All undergraduate CS majors should take this course at some point. You should have
completed the basic introductory sequence, and also CPS 104. Familiarity with C, C++, and basic Unix program development
tools (e.g., gmake ) is assumed.
- Workload. This is a demanding course. There are seven required Nachos programming assignments, with one due every two
weeks. To make things a bit easier, you will work through the Nachos projects in teams of three or four students. As in
previous offerings of CPS 110, you will present your projects in demo sessions with the instructor or the TAs. These
projects will be fun and valuable if you form teams quickly, start early on the projects, and make your Nachos work a priority
this semester. In addition to the Nachos assignments, there will be optional problem sets, one or two in-class
exams, and an in-class final exam.
Textbooks and Other Resources
- Operating Systems: A Modern Perspective, by Gary Nutt
- All course materials, lecture slides, and announcements will be accessible via the course web site at http://www.cs.duke.edu/education/courses/cps110/current/. You will visit this web site often, as we will rarely hand out printed materials in
class. Grades are also distributed through the course web: please see Darrell for a password.
- There is also a course newsgroup duke.cs.cps110 . We prefer that you post questions to the newsgroup rather than e-mailing
us. We read the newsgroup regularly, and so should you: it is embarrassing to ask a question or waste time struggling with a
problem that has already been discussed in the newsgroup. If you know the answer to a posted question, please post a
response.
Grading
- As your instructor, I see my role as that of coming up with exciting and valuable learning activities for you to do and I consider establishing a grade in the course by evaluating the results of those valuable learning activities as just a side-effect. Still, I bet you are interested in how these activities factor into your grade, so here is the breakdown (approximate -- your mileage may vary):
- Nachos Programming Projects (50%). Hands-on experience that will develop skills and give you an in-depth appreciation for some of the details and concrete design issues.
- Optional Written Homeworks. These problem sets will come from the textbook readings and give you a very valuable preview into the content of the exams. The purpose of the readings and homework is to fill in the breadth that the specific projects can not address. The
problem sets are ungraded, but about half of the exam questions will be drawn from the problem sets.
- Exams - one midterm (20%) and final (25%).
- Course participation and other subjective factors (5%). I would like this to be an interactive class, so ask questions and offer ideas freely.
I grade on a curve to compensate for any possible problems with the projects and exams.
Policies
- The Reasonable Person Principle
- This principle (which applies throughout this course) simply states
that a reasonable request made in a reasonable fashion shall
be reasonably handled by reasonable persons.
The TAs and instructor are reasonable people, and we expect that
everyone else involved in this class is as well. Asking to turn stuff in late is
not a reasonable request, barring extreme circumstances.
- Collaboration vs. Cheating
- Collaboration is a very good thing. Students are encouraged to work together and some programming projects will require a team effort with everyone expected to contribute.
- On the other hand, cheating is considered a very serious offense.
Please don't do it! Concern about cheating creates an unpleasant
environment for everyone.
- So how do you draw the line between collaboration and cheating? Here's a reasonable set of groundrules.
Failure to
understand and follow these rules will constitute cheating, and will
be dealt with as per university guidelines.
- The Gilligan's Island Rule: This rule says that you are
free to meet with fellow students(s) and discuss assignments with
them.
Writing on a board or shared piece of paper is acceptable
during the meeting; however, you should not take any written
(electronic or otherwise) record away from the meeting. This applies when the assignment is supposed to be an individual effort or whenever two teams discuss common problems they are each encountering (inter-group collaboration). After the
meeting, engage in a half hour of mind-numbing activity (like watching
an episode of Gilligan's Island), before starting to work on
the assignment. This will assure that you are able to reconstruct
what you learned from the meeting, by yourself, using your own brain.
- The Freedom of Information Rule: To assure that all
collaboration is on the level, you must always write the name(s)
of your collaborators on your assignment. Failure to adequately acknowledge your
contributors is at best a lapse of professional etiquette, and at worst it is plagiarism. Plagiarism is a form of
cheating.
- The No-Sponge Rule: In intra-team collaboration where the group, as a whole, produces a single "product", each member of the team must actively contribute. Members of the group have the responsibility (1) to not tolerate anyone who is putting forth no effort (being a sponge) and (2) to not let anyone who is making a good faith effort "fall through a crack" (to help weaker team members come up to speed so they can contribute). We want to know about dysfunctional group situations as early as possible. To encourage everyone to participate fully, we
make sure that every student is given an opportunity to explain and justify their group's approach to the Nachos projects.