| Home | Syllabus
| Schedule | Homework:
1 2 3
4 5 6
| Projects | Grades
| Feedback
| CS Home
|
CMPS 111: Introduction to Operating Systems (Fall 2001) |
Computer Science Department
|
| Time: | MWF 12:301:40 PM |
| Location: | Kresge 327 |
| Discussion section: | Baskin 105, Wed 7:309 PM |
| Reserved lab hours: | Baskin 105, Thu 911 AM |
| Instructor: | Professor Ethan Miller |
| Office & hours: | 229 Baskin: Wed 24, Fri 1112, or by appointment |
| TA: | Garima Tripathi |
| TA office & hours: | 1st floor Baskin lounge, Mon 34:30 PM; Crown Computer Lab, Thu 2:304 PM |
| Prerequisites: |
CMP/CMPS 101 and CMPE 012C
|
| Required text: | Modern Operating Systems, 2nd Edition, Tanenbaum |
| Optional texts: | Understanding
the Linux Kernel, Bovet & Cesati The Design and Implementation of the 4.4 BSD Operating System, McKusick, et al. |
| Home page: | http://www.cse.ucsc.edu/~elm/Classes/111/f01/ |
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:
Where possible and appropriate, we will use examples from Linux and other modern operating systems to illustrate concepts covered in class.
The formal prerequisites for this class are CMPS 101 and CMPE 012C. 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, each students must have his/her 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.
Students should also be familiar with C or C++ programming on the CATS systems using such tools as gcc and makefiles. Students are 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, barnesandnoble.com, and fatbrain.com . It really is a required text homework 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).
Much of the information for the class will be distributed via the Internet. The class home page is at http://www.cse.ucsc.edu/~elm/Classes/111/f01/, and is the starting point for lots of information about the class including assignments and announcements.
Access to some of the class web pages may be restricted to users on campus and a few other domains. Access from off-campus domains may be granted on a case-by-case basiscontact the instructor for details. If you want to access the web pages from off-campus, you may log into an account at UCSC and view or download the pages using lynx (a text-based web browser).
Due dates for all assignments will be listed on the class schedule, as well as on the assignment itself.
Assignments will be posted on the web, and will be accessible from any
domain 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.
There will be a homework assignment assigned about every week, and due on the date on the assignment (typically 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 on a scale of 03 as follows:
| 0 | Little (or no) clue |
| 1 | OK, but leaves a lot to be desired |
| 2 | Good job! |
| 3 | Extra credit (few homeworks will get a 3) |
Your homework score will assume a maximum of 2 points per homework, so don't worry if you're not getting 3's.
Programming projects are an important component of this course. If all goes as planned, 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 quarter FreeBSD 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.
The programming assignments will be evaluated on several points:
Your grade for each project will be based on your documentation and design (40%) and your code (60%). Good design and documentation are crucial for this class because of the difficulty of the concepts. It's very hard to debug any code without a good design, and it's even harder to debug an operating system without a well thought out design.
You may work on your assignments on any computer you wish. The tools (simulator, cross-compiler, assembler) are installed on the CATS instructional cluster (Solaris machines). In addition, the source code for the tools is available for copying to a personal machine (most likely a Linux box). However, we can only provide limited assistance with installing the tools in your environment.
One thing to remember: your assignments must work in the environment on the CATS system. DLX source code should be readily portable, but please check your assignment on CATS before handing it in.
Assignments are due on the date and time specified in the assignment. Late homeworks will not be accepted. Late projects will be accepted, but will lose 20% for each 24 hours (or fraction) they are late, including weekends and holidays. Projects more than 72 hours late will receive no credit. However, 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. Projects handed in late may experience significant delays in grading.
Assignments must be turned electronically; see the project and homework information pages for details.
Operating systems is a tough subject, so there are several ways to get help with concepts covered in class, homework, and programming projects.
The discussion section for this class will be used to help students with programming projects. Attendance is not mandatory, but you'll probably miss important material on the programming assignments if you choose not to attendthis is where the programming assignments will be discussed in detail.
Office hours are optional, but highly recommended if you're having any difficulty understanding the material or getting your code to work. We're happy to help you understand difficult concepts or work on the design for a programming project. However, if you want help debugging your code, you'll need to have a (largely complete) design for the current assignmentwe can't debug a program without pseudo-code any better than you can.
There is a newsgroup for this course: ucsc.class.cmps111. I strongly encourage you to read the newgroup and post if you have general questions. Asking things like "how does this concept work" or "what does this code in DLXOS do" are fine. Questions such as "my code (whch follows) doesn't workwhy not?" are not acceptable. Please ask such questions during office hours (preferable) or via email to the professor or TA.
Email to the professor and TA will be answered if possible. The best kinds of questions to ask via email are those that require short answers. Questions like "why doesn't my program work?" and "please explain this concept to me" are much more difficult to answer via email, and are best asked and answered in person at office hours.
Class attendance is mandatory, though attendance won't be taken (except as needed for UCSC administration). Most of the course material, including assignments and lecture notes, will be posted on the class web pages. However, things may get said in class that aren't in the online notes. You're responsible for all material covered in class, whether or not it appeared on the Web site I suggest you ask either a fellow student, the TA, or the professor to fill in any material you may have missed.
Your grades will be determined as follows:
You must take both exams and turn in a reasonable attempt at all programming assignments in order to pass the class. You need not turn in every homework assignment, but homework is graded, and a missing homework counts as a zero (0).
Grades will be available online during the quarter. You will be emailed a password around the third week of classes that you may use to access your grades. This password is different from any other password you've received at UCSC, and may not be changed. However, it does allow us to post grades safelythe grades file is encrypted line-by-line with each student's password. Attempts to subvert this system will be considered computer breakin attempts and be dealt with appropriately.
This really should not be an issue, but recurring events have it necessary to discuss collaboration vs. cheating as well as the consequences of handing in work not your own.
You are encouraged to discuss the course material, concepts, and assignments with other students in the class. However, all material you turn in must be your work. If you are caught copying or otherwise turning in material that is not solely your work, 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 are expected to conduct yourself as a person of integrityyou are expected to adhere to the highest standards of academic integrity. This means that plagiarism1 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 discipline2.
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.
You may discuss programming projects with your friends, but you are expected to abide by the Gilligan's Island rule3the only thing you may bring to such a discussion is you, and no written notes may be taken away from the meeting. Looking at, modifying, or copying each other's files or solutions is forbidden. If you are unsure of what is and is not allowed by this policy, please talk to the professor before doing something that might be considered cheating.
1pla-gia-rize vt.
to steal and pass of as one's own (the ideas or words of another) to present
as one's own an idea or product derived from an existing source - pla-gia-riz-er
n. (source: Webster's New World Dictionary).
2The Association for Computing
Machinery is http://www.acm.org/,
the IEEE is http://www.ieee.org/,
and the IEEE Computer Society is http://www.computer.org/.
3The Gilligan's
Island rule states that following a discussion of the project, a break
must be taken for at least a half hour before coding. Watching something
inane like Gilligan's
Island on television satisfies this rule.