Computer Science Dept. | School of Engineering | UC Santa Cruz
Home | Syllabus | Schedule | Grades | Feedback
Homework: 1 2 3 4 5 | Projects:
1 2 3 4  

CMPS 111: Introduction to Operating Systems (Winter 2003)

Computer Science Department
University of California, Santa Cruz

Syllabus

Time: Tuesday & Thursday 10:00–11:45 AM
Location: Stevenson 175
Discussion section: Thu 5:00–7:00 PM, Crown Computer Lab
Reserved lab hours: Mon 6:30–8:30 PM, Crown Computer Lab
Instructor: Professor Ethan Miller
Office & hours: 229 Baskin: Tue 2–3 PM, Thu 12:30–1:30 PM
TA: Tim Bisson
TA office & hours: 352 Baskin: Mon & Wed 10:00–11:30 AM
Tutor: Justin Burke
Tutor office & hours: Crown Computer Lab: Mon 6:30–8:30 PM
JBE whiteboards: Wed 5:00–7:00 PM
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.cs.ucsc.edu/~elm/Classes/111/w03/

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

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.

Texts

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 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 that—optional. 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.

Web pages

Much of the information for the class will be distributed via the Internet. The class home page is at http://www.cs.ucsc.edu/~elm/Classes/111/w03/, and is the starting point for lots of information about the class including assignments and announcements.

Access to some of the class web pages, particularly those containing solutions, may require a password that will be distributed in class. Redistributing these pages will constitute cheating and will be treated accordingly. Pages not password-protected may be redistributed, though I ask that you distribute a URL rather than the page itself so that others will get the most recent pages.

Assignments

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.

Homework

There will be a homework assignment assigned about every week and a half, 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 0–3 as follows:

0 Not handed in
1 Little (or no) clue
2 OK, but not great
3 Good job!
4 Extra credit (few will get this)

Your homework score will assume a maximum of 3 points per homework, so don't worry if you're not getting 4's.

Programming projects

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:

  • Documentation: your code must be well-documented, including a basic design document describing your code.
  • Correctness: your code must do what it is supposed to do.
  • Structure: your code should be broken into natural functions and modules.
  • Style: your code should be easy to read, well-indented, well-commented, and use clear, self-explanatory variable and function names.

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 running Linux or Mac OS X). 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.

Timeliness

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 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. Projects handed in late may experience significant delays in grading.

Turning in assignments

Assignments must be turned electronically; see the project and homework information pages for details.

Getting help

Operating systems is a tough subject, so there are several ways to get help with concepts covered in class, homework, and programming projects.

Discussion section

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 attend—this is where the programming assignments will be discussed in detail.

Office hours

Office hours are optional, but highly recommended if you're having any difficulty understanding the material or getting your code to work. All course staff (professor, TA, tutors) have office hours, during which we'd be 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 assignment—we can't debug a program without pseudo-code any better than you can. We can also give you help with your pseudo-code if you want.

You're welcome to use the course newsgroup and send email whenever you want, but please respect the course staff's time by arranging any meetings outside of office hours in advance.

Course newsgroup

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 (which follows) doesn't work—why not?" are not acceptable. Please ask such questions during office hours (preferable) or via email to the course staff.

Email

Email to the course staff 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.

If you have a question that must be answered by a specific person, please send it directly to that person's email address. However, questions that can be answered by anyone should be sent to the course staff mailing address; sending them to a particular person may mean a delay in getting an answer.

Attendance

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.

Grades

Your grades will be determined as follows:

  • Programming assignments: 40% (all assignments weighted equally)
  • Homework: 10% (all assignments weighted equally)
  • Exams: 48% (18% midterm, 30% final)
  • Class participation: 2%

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). Your project average and exam average must each be at least 50% in order to pass the class.

Grades will be available online during the quarter. You'll need your name, student ID number, and password (which will be emailed to you) to access your grades. Attempts to subvert this system will be considered computer breakin attempts and be dealt with appropriately.

Academic Honesty: Collaboration vs. Cheating

This really should not be an issue, but recurring events have it necessary to discuss collaboration versus cheating as well as the consequences of handing in work not your own. If you are caught cheating, there will be very serious consequences.

In brief, you are expected to conduct yourself as a person of integrity—you are 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 (zero) score. In the case of programs, reordering routines, renaming files, and simply renaming variables does not make two programs different. Remember—a zero score on either exam or any programming project is grounds for failing the course.

Those caught cheating will, in addition to a zero score on the assignment or exam, have a letter sent to their department, the School of Engineering, and their college provost and academic preceptor. I reserve the right to stronger action (such as assigning a class grade of F) should the situation warrant it.

You may discuss programming projects with your friends, but you are expected to abide by the Gilligan's Island rule—the only thing you may bring to such a discussion is you, and no written notes may be taken away from the meeting. You may discuss the concepts used in the programming assignments, but you may not discuss implementation details of the assignments. Looking at, modifying, or copying each other's files or solutions is strictly forbidden. If you are unsure of what is and is not allowed by this policy, please talk to me before doing something that might be considered cheating.

The Gilligan's Island rule states that following any discussion of the project, a break must be taken for at least a half hour before doing further class work. Watching something inane like Gilligan's Island on television satisfies this rule. Reading something (inane or otherwise) unrelated to CMPS 111 also qualifies. See me if you'd like some suggestions for non-computer science reading material.

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 Sunday, 08-May-2005 22:46:17 PDT by Ethan L. Miller (elm at cs xxx ucsc xxx edu [replace xxx with ".")