UCSCBaskin School of Engineering  
General Information Events, News & Organizations Degrees & Departments Research Classes Admissions & Advising People & Jobs Administration
CMPS 111 - Spring 2004

                       

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 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.

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.

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 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. 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: 20%
  • Final: 30%

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.  However, 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 are 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 or TA during office hours
  • Email the professor and/or TA

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 "Gilligan's Island rule": You should do something fairly brainless between discussing the material with other students and working on your own assignment; watching Gilligan's Island is an acceptable way to meet this requirement.

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 integrity—you'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.


General info · News · Events · Degree Programs · Research · Classes · Admissions · Advising · People · Jobs · Administration
SOE Webmail · SOE SSH · SOE Wiki · Search · Sitemap · Contact us · Driving directions · Privacy · UCSC
© Baskin School of Engineering, University of California, Santa Cruz
1156 High St., Santa Cruz, CA 95064 · (831) 459-2158 · webmaster@soe.ucsc.edu