CS 473/673: Operating Systems (Winter 1998)

Course Overview

This course will cover the key concepts in modern operating systems. Specifc topics include:

Lectures: MWF 11:05- 11:55, Hardmann 101

Final Exam: Thursday, March 19, 3:30-6:30pm

Instructor: David Lowenthal

Office: GSRC 219D, 542-9269

Email: dkl@cs.uga.edu

CS 473/673 email: csx73@pollux

CS 473/673 newsgroup: uga.cs.x73

I am a faculty member in the Computer Science Department at the University of Georgia. My main area of research is parallel and distributed computing.

Office Hours: M 9-10, WF 9:45 - 10:45, and by appointment

Office hours are for you. Please do not hesitate to come to my office. I will also be available by appointment; please send me email to set one up. Office hours will usually be very busy right before an assignment is due; if you start the assignments early and come to my office well before they are due, you have a better chance of avoiding the rush. Please note that I will not be able to accept all requests for appointments, especially around program due dates. If you do wish to see me outside of office hours, you need to make an appointment. Finally, please keep in mind that office hours are not a substitute for missed lectures.

There is one additional rule with regard to office hours: I will not help any student or team that is not using some kind of debugger.

TA: Michael James (Office Hours: 3-4pm, Monday, GSRC 307)

Email: james@cs.uga.edu

Prerequisites: CS 303 (Data Structures) and CS 371 (Introductory Computer Laboratory)

Reading Materials

The required textbook for the course is Modern Operating Systems by Tanenbaum. You will be expected to read any assigned material. We will not be able to cover all assigned reading in lecture. Please note, however, that you are responsible for any assigned material. Specifically, exam questions covering reading material are fair game.

Lectures

Attendance at lectures is optional. You are, however, responsible for all material covered in lectures. We will often be discussing material different from the textbook. I feel that the lectures are the course; I will do my best to make them interesting. I believe that you won't just be able to read the notes and succeed.

You should come to lecture prepared. Ideally this means you have read the assigned material in advance. I am aware that this will not always be possible -- at least review the previous lecture.

"Lecture" is really a misnomer. Ideally, we will have a discussion as opposed to me talking for 50 minutes. Please do not hesitate to ask questions; you might think your question is dumb, but more likely, many people are wondering about the same thing.

Grading

Grades will be assigned on the usual A-F basis. Grading will be absolute; there will be no "curve". Achieving a 90% will guarantee an "A", 80% a "B", and so on. However, when the final grades are given, it could be the case, for example, that an 85% gets an "A". Do not confuse this with a curve, however. If everyone does A work (as I hope), everyone will get an A. If everyone does C work, everyone will get a C. So that you know your grade at all times, four fictitious students will be given grades for each assignment and exam. These students will be named "Min A", "Min B", etc., indicating the minimum score for each grade. Graduate students will be graded on a different scale than undergraduate students.

There will be three to four homework assignments, three programming assignments, a midterm, and a final. Their approximate weights will be as follows:

Please note that these are tentative. Relative weights of assignments can change upon the whim of the instructor. Also, if you fail both exams, you will fail the course.

Class Schedule

The class schedule will be updated quite often; you should reload this page often. Please note that due dates can change up on the whim of the instructor.

Reading Assignments

It's a good idea to read the assigned material before lectures. You can find the material that will be covered in each lecture on the Class Schedule page

Written Assignments

Written assignments will cover the material in the book and in lecture. These assignments are to be done individually. You may not discuss the assignments with any other classmates.

Over the course of the quarter, graduate students will be assigned literature papers covering current operating systems innovations. For each paper, I expect the graduate student to read the paper and write a summary. In addition, I may ask you a few questions about the paper. In the summary you should indicate two good points of the paper and one bad point. These will count as part of the homework assignments for the graduate students. A link is provided to the assigned papers.

Programming Assignments

The programming assignments will each be involved with the implementation of operating system features. We will use the Nachos instructional operating system, which was designed and implemented at the University of California, Berkeley. Nachos is a skeletal operating system (that works). It includes kernel threads, linear paging, a stub file system, and interrupt handlers; it is coded in C++. It includes a MIPS simulator that will run user programs and invoke the Nachos kernel when necessary. Over the course of the quarter, you will add semaphores and condition variables to the kernel, implement several system calls, and implement virtual memory.

You will work in teams of three on the project. It is expected that each team member will carry his or her weight; if members do not participate to an equal extent, assigned grades will be different for people on the same team. Graduate students should work with other graduate students only.

Part of each assignment will be understanding the Nachos code that is already there. This is not necessarily a simple task. To assist you, I will keep a home page with Information on Nachos. Look at that page to see how to get a copy of Nachos. Also, Thomas Narten of Duke University has written a Nachos roadmap which may be of use to you.

For the first two assignments there will be a review session outside of class time. The review will be scheduled so that at least one member from each group can attend. Previous classes have found this very useful.

Please note that each assignment in this class builds on the previous ones. This means that it is vital that you correctly implement each assignment. You will not be excused from assignment N just because you did not get assignment N-1 to work correctly.

Your projects will be tested by the TA or me. Test cases are generally pass (full credit) or fail (no credit). This means that if you fail every test case, you will get a zero on the assignment (it is possible that a few points will be given for programming style, etc., but your score will be poor nonetheless). You are responsible for testing your programs to ensure their correctness.

It is sometimes the case that one small bug caused a disproportionally large number of test cases to fail. In such a case, you may be eligible to correct your mistake and get some of the points back. See me if you believe you have such a case.

Graduate students will have harder programming assignments than undergrads.

Late Assignments

All assignments are due at the start of class. Over the course of the semester, each group will receive 3 late days. These can be used in any combination on the programming assignments and should allow you to schedule around deadlines in other classes you are taking. Note that a weekend counts just as regular days do; in other words, if an assignment is due Friday and is turned in Monday, it is 3 days late. Late days cannot be used on the written assignments; furthermore, I will not accept any homeworks that are more than 3 days late..When you have no late days left, you will lose 10% per day, without exception. If an assignment is more than 3 days late, you will receive a zero on the assignment. Late days cannot be used after classes have ended.

Please start early on programming assignments. I will warn everyone of this several times, but surely people will ignore these warnings (computer scientists, by nature, are procrastinators). However, the fact remains that in the real world, there is a penalty for lateness, unless you happen to be working for Microsoft.

If you are sick and have appropriate documentation, always let me know as soon as you get sick. It will be to your disadvantage to tell me after the fact that you were sick; you may not be excused from the regular due date.

Note that scheduled downtimes are not an excuse for late work.

Exams

There will be one midterm and a final. The exams will be open book and open notes; however, you may not bring in any other books besides the course text. The exams will not be simple regurgitation of the material covered in class; rather, they will be designed to see if you understand the material.

Without prior arrangement, any missed exam will result in a grade of zero.

Cheating

Cheating will not be tolerated in this class. You are allowed, and in fact encouraged, to discuss the programming assignments with other students. However, these must be general discussions. For example, discussing the need for locking address spaces is perfectly fine; however, telling one exactly how that is done is not. If you have any doubts about what you are doing, ask me. If you are caught cheating you will be penalized appropriately according to University guidelines. You will certainly fail the assignment and possibly the course. So, simply put, don't do it.

Note that copying materials from the Web is a violation of academic honesty. There are many other schools that use Nachos; copying any kind of solution from their Web sites is forbidden.

Withdrawals and Incompletes

You may drop the class during the first three days without an annotation ending up on your transcript. Thereafter until the drop day, you may drop the class with an annotation. An incomplete will only be considered in a case where there is a documented medical evidence and you are making satisfactory progress in the course. If you have a medical emergency and are not making satisfactory progress after the drop date, you may be offered a late withdrawal; this is up to the instructor.

Warnings

First, you are responsible for reading and understanding this entire syllabus. I will hold you to the rules set forth within this document. Second, any computer science programming course involves a significant amount of work. This class will have more work than most computer science courses. If you do not feel you have the time to spend, you may want to think about taking a different course. Ask previous students about the workload in this class. I expect you to treat this class professionally.

Dissemination of Information

I will be using the Web as much as possible for this course. Handouts will be rare. All lecture notes will be on the Web. In addition, you are encouraged to use the CS 473/673 newsgroup, uga.cs.x73. The TA and I will read this group, which is the place to post questions of general interest. Please note that the newsgroup is not to be used for trying to get answers to homework assignments. (Remember, I will be reading it.) It is a place to ask how Nachos code works, report bugs, etc.

Class announcements, such as due date and assignment changes, will be made in the newsgroup and/or on the Web. You are therefore responsible for checking these two places. If you make an error because you did not check the Web and the newsgroup, I will hold you fully responsible.