CMPS 111: Introduction to Operating Systems
Computer Science Department
University of California, Santa Cruz
Fall 2003
Syllabus
| Time: | Tue & Thu 4:00–5:45 PM |
| Location: | Porter Acad 148 |
| Section: | Baskin 105: Mon 12–2 PM, Tue 7–9 PM |
| Lab hours: | Baskin 105: Thu 9–11 AM |
| Instructor: | Prof. Ethan L. Miller (elm@ucsc.edu) |
| Office & hours: | 229 Baskin: Tue 2–3, Thu 11–noon |
| TA: | Thomas (Bo) Adler (badler@ucsc.edu) |
| TA office & hours: | Office TBD: Mon 2:30–3:30, Thu 12:30–1:30 PM |
| Tutor: | TBD |
| Tutor office & hours: | TBD |
| Prerequisites: | |
| Required text: | Modern Operating Systems, 2nd Edition, Tanenbaum |
| Optional texts: | Understanding
the Linux Kernel, 2nd edition, Bovet & Cesati The Design and Implementation of the 4.4 BSD Operating System, McKusick, et al. |
| Home page: | http://www.soe.ucsc.edu/classes/cmps111/Fall03/ |
Course Objectives
The goal for students in this course is to learn the fundamental principles of operating systems. To help you accomplish this, we will discuss the various important aspects of operating systems in general, examine specific examples from current operating systems, and do programming assignments with a generic teaching-oriented operating system (DLXOS). The specific topics we will cover include:
- Basic operating system concepts
- Processes & scheduling
- Deadlocks
- Memory management
- Operating system management of input/output devices
- File systems
- Protection & security
- Introduction to distributed operating systems (if time permits)
Where possible and appropriate, we will use examples from Linux and other modern operating systems to illustrate concepts covered in class.
Prerequisites & Texts
The formal prerequisites for this class are CMPS 101 and CMPS 110. Students should have taken these classes or equivalent relatively recently; experience has shown that students who took these classes more than two years ago tend to have more difficulty with the material in CMPS 111.
In addition to the class prerequisites, you must have your own CATS account. Because assignments will be turned in on the CATS system, you must have your own CATS account by the end of the first week of classes. You may not borrow a roommate's / friend's / co-worker's / spouse's account. Doing so is a violation of the CATS user policy, and will be reported.
You should also be familiar with C or C++ programming on the CATS systems using such tools as gcc and makefiles. You're welcome to ask for help with these tools, but such questions will have lower priority than those about material covered in the course.
The required text (Modern Operating Systems, 2nd Edition) is available at the UCSC bookstore as well as at online booksellers such as amazon.com and barnesandnoble.com. It really is a required texthomework problems may be taken from the book, and lectures and notes will complement the material as presented there. Make sure you get the second edition of the text.
The optional texts are just thatoptional. They cover two popular operating systems in depth (Linux and 4.4 BSD) and may be of interest to those who want more details about operating systems in the real world. Neither homeworks nor projects will depend on the contents of the optional texts, except if the material is covered in class, in which case it'll be in the slides.
Assignments & Grades
Assignments will be posted on the web, and will be accessible from anywhere on the Internet. It is likely that some assignments will be posted before they are officially assigned; however, you should not assume that an assignment on the web is in final form until the date it is assigned. In other words, assignments are subject to change before the date that they are officially assigned.
Homework
There will be a homework assignment assigned about every week and a half, due about one week later. The homework will give you a chance to see how well you understand the concepts we've covered in class. They will be graded out of a total of 5 points.
Programming projects
Programming projects are an important component of this course. You will be implementing several components in a operating system kernel running atop a simulated DLX processor. While it would be ideal to work on an actual operating system, a real operating system, unlike a compiler, is too complex to write our own from scratch in a quarterFreeBSD has over 100,000 lines of code, and Linux has more. Instead, we will use DLXOS, a simple operating system that runs on a DLX processor (and has only 3,000 lines of code, much of it documentation). There's a DLX simulator and cross-compiler installed on the CATS IC systems; the simulator and development tools also run on Linux. More details on the projects are available on the project page.
Grades
Assignments are due on the date and time specified in the assignment. Late homeworks will not be accepted. Late projects will lose 10% for each 12 hours (or fraction) they are late, including weekends and holidays. Projects more than 48 hours late will receive a maximum grade of 5 points (out of 100). You must turn in a reasonable attempt at each project to pass the class. Graded assignments will be returned as soon as possible, usually within one week, and grades will be available online during the quarter.
Overall grades will roughly follow a 90/80/70/60 scale, but I reserve the right to adjust the curve upward or downward as appropriate. Your grades will be determined as follows:
- Programming assignments: 10% each (total of 40%)
- Homework: 10% total (all homeworks weighted equally)
- Midterm: 18%
- Final: 30%
- Class participation: 2%
NOTE: You must average above 50% on the programming assignments and on the exams in order to pass the class. A score below 50% on either part of the class will result in a failing grade regardless of your overall score. This is a necessary, but not sufficient, condition for passing the class—averaging above 50% on both parts does not guarantee a passing grade.
Attendance
Class attendance is mandatory, but attendance won't be taken. Homeworks, assignments, and important dates on the class web page, but this is provided as a courtesy and is not always complete. It's your responsibility to find out what you missed if you don't attend class.
Lab attendance is also required, but, again, attendance won't be taken. However, you'll miss important material on the programming assignments if you don't attend one lab per week. This is where the programming assignments will be discussed in detail.
Office hours are optional. They're your chance to ask the professor and TA questions about the material being covered, programming assignments, or anything else about operating systems (or other general computer science issues) you want to discuss.
Getting Answers to Your Questions
Operating systems is a tough subject, so there are several ways to get help with concepts covered in class, homework, and programming projects.
- Attend classes and lab sections
- Check the class Web page frequently (every day or two)
- Read the class news group: ucsc.class.cmps111
- Meet with the professor and TAs during office hours
- Email the professor and TAs (cmps111-staff@cats.ucsc.edu)
Please meet with the professor or TA in person if you have an in-depth question, such as detailed help with the programming assignment design or debugging. Please don't just drop by outside of office hours; if you can't attend office hours, arrange a meeting in advance by emailing the person you want to meet with.
Academic Honesty: Collaboration vs. Cheating
In an ideal world, academic honesty wouldn't be an issue, but recurring events have made the following discussion necessary.
You're encouraged to discuss the course material and concepts with other students in the class. If you do so, you may not take notes during the discussion. You should also follow the Simpsons rule: you should watch an episode of The Simpsons between discussing the material with other students and working on your own assignment; other 30 minute activities, such as watching Animaniacs or (ugh) Gilligan's Island are also acceptable.
If you get significant help on an assignment from a source other than the textbook, slides, your own notes, or the professor or TA, you must acknowledge it in whatever you turn in. It's not cheating to read other textbooks or look for help on the Internet; it is cheating if you copy solutions from one of these sources. Under no circumstances may you look at anyone else's code or show anyone else your code (except for your project partner, of course). While you may discuss the concepts used in the programming assignments, you may not discuss implementation details of the assignments themselves. If you are caught copying or otherwise turning in work that is not solely your own, you will fail the course and a letter will be sent to your Department, the School of Engineering, and to your Provost and academic preceptor.
The bottom line is that you're expected to conduct yourself as a person of integrityyou're expected to adhere to the highest standards of academic integrity. This means that plagiarism in any form is completely unacceptable. You are a (soon-to-be) computing professional; I encourage you to consult the code of ethics appropriate to your discipline (the ACM, IEEE, and IEEE Computer Society).
Plagiarism will be assumed until disproved on work that is essentially the same as that of other students. This includes identically incorrect, off-the-wall, and highly unusual duplicate answers where the probability of a sheer coincidence is extremely unlikely. All parties to this unacceptable collaboration will receive the same treatment. In the case of programs, reordering routines, renaming files, and simply renaming variables does not make two programs different.
If all of this doesn't convince you of the folly of using
others' work, consider the following
Foxtrot
comic (Bill
Amend, September 28, 2002):
Last updated 12 Nov 2003 by Ethan L. Miller (elm@ucsc.edu)