810:143, Fall 2001

Operating Systems

 

General Information

Class Info

3 Credits

Time and Place: MWF 2:00-2:50, Wright 5 
Class Directory: http://www.cs.uni.edu/~schafer/courses/F2001/os/   Check here for lecture notes, announcements and supplemental class materials
Texts:

Applied Operating System Concepts, Silberschatz, Galvin and Gagne (ISBN 0-201-59113-8)

Kernel Projects for Linux, Nutt (0-201-61243-7)

Instructor

Ben Schafer

Email: schafer@cs.uni.edu

Office: Wright Hall 325, phone 273-2187

Hours:  MTWThF 10-11, anytime my door is open, and by appointment.

   

Course Description

This course is intended to be a general survey of operating system concepts. Topics are likely to include process synchronization, interprocess communication, deadlock, multiprogramming and multiprocessing, processor scheduling and resource management, memory management, virtual memory, file systems, device allocation, I/O processor scheduling, process and resource protection.

 

Why this class is important

There are two principal reasons why a course on operating systems is practical to take (as opposed to just interesting), even if you never expect to be involved in the development of an operating system (which most of you won't):

·         Operating systems provide the classic application domain for certain techniques that are useful in other contexts. For example, resource allocation, security, and fault tolerance are all topics that are traditionally thought of as “operating system” topics that now have broad applicability.

·         Although most of you won't write operating systems, you'll interface with them. You may write applications programs that make use of the operating system's facilities, or contribute to the design of hardware on which the operating system runs, or find yourself educating an operating system developer about the features that would allow your web server or database system to run most efficiently. You may be a system administrator who has to configure and tune an operating system. An understanding of what goes on inside an operating system will allow you to be more effective in roles like these. You may even find yourself tacking a new feature on in some small corner of an operating system other people wrote.

 

Its role in the curriculum

This course is considered to be a one of the upper level core courses required for a computer science degree.  Prior to taking this course you should have successfully completed a Computer Architecture course (810:142 or equivalent) and be able to program in a high-level language (C++, C, Ada, Pascal, etc).

 

Class Policies

Evaluation:

Homework (~4) – Homework will consist of written activities.  They are always to be completed as an individual (see section on scholastic conduct).  Homework will be collected several times throughout the semester and must be received at the start of the class in which it is due in order to receive credit.  While it is not required, you are strongly encouraged to type your assignments.  Unreadable answers will receive no credit.  Homework problems will be announced in class and posted to the website no less than one week prior to the due date.

Programming Assignments (~3) – Programming assignments will be devoted to hands-on programming and related activities. Unless explicitly noted otherwise, these are to be completed as an individual (see section on scholastic conduct). 

Group Work – Group work actually encompasses two sets of issues.  First, at several points throughout the semester we will perform in-class activities in which you are asked to work with a group of your classmates.  Points will be assigned based on how well you participate/cooperate with your group, and how well your group works together.  Second, the last 3-4 weeks of this course have been set aside for a group project to be determined at a later date.  Specifics on how this project will be evaluated will be announced prior to the commencement of the activity.

Exams – There will be a minimum of three exams.  Two will be mid-term exams, while the other will be the scheduled final exam for the course.  The exams are closed book exams. Tentative dates for the mid-term exams are listed in the schedule.  The actual date of each exam will be announced no less than one week prior to the exam.  There are no scheduled make-up exam dates.  If you are aware of conflicts prior to the exam, please make me aware of these as early as possible.

 

Grading

Grading for this course is on an absolute scale.  Thus, the performance of others in the class will not negatively affect your grade.  Assignments/exams will be tentatively weighted as follows (the final weighting will be based on the actual distribution of programming and group work).

10% Homework
30% Programming Assignments
10% Group Work
30% Midterm Exams (closed book, during lecture--see attached schedule)
20% Final Exam (closed book, in final exam week--see attached schedule)

Final grades will be assigned based on a scale with cutoff points no “higher” than:

No less than .... Guarantees you a
93% A
90% A-
87% B+
83% B
80% B-
77% C+
73% C
70% C-
65% D+
60% D

The one exception to this – I reserve the right to assign a failing grade to any student who does not pass the final exam.

Incompletes

Incompletes are awarded only in very rare instances when an unforeseeable event causes a student who has completed all the coursework to date to be unable to complete a small portion of the work (typically the final project or exam). Incompletes will not be awarded for foreseeable events including a heavy course load or a poorer-than-expected performance. Verifiable documentation must be provided for the incomplete to be granted, and arrangements for the incomplete should be made as soon as such an unforeseeable event is apparent.

 

Scholastic Conduct

You are responsible for being familiar with the University’s Academic Ethics Policies (http://www.uni.edu/pres/policies/301.html).

Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to assignments should be individual, original work unless otherwise specified. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding, as well as to be intolerably dishonorable.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.  The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be properly cited.

In addition to the activities we can all agree are cheating (plagiarism, bringing notes to a closed book exam, etc), assisting or collaborating on cheating is cheating.  Cheating can result in failing the course and/or more severe disciplinary actions.

 

Accessibility

The Americans with Disabilities Act of 1990 (ADA) provides protection from discrimination for qualified individuals with disabilities. Students with a disability, who require assistance, will need to contact the Office of Disability Services (ODS) for coordination of academic accommodations. The ODS is located at 213 Student Services Center. Their phone number is 319/273-2676.  Additionally, please contact me immediately if you have a learning or physical disability requiring accommodation

 

Guidelines for Success in this Course

Once you have allocated the necessary time for this course, the following suggestions, should help you plan your time use and prepare for the projects and exams:

¨       Make use of the office hours early! Don't wait until late in the term to seek help.

¨       Be specific in your questions when possible. Rather than asking for an explanation of a large or general topic, be prepared with specific questions or specific examples that raised your questions.

¨       Do some problems from the exercises in the book to get a feel for your level of comfort with newer concepts as you learn them.

¨       Prepare for lecture! Read the text selections before the start of lecture.

¨       Be on time! I will start promptly at 2 PM and will often begin with important announcements.

Tentative Schedule

Check the class website frequently for changes and announcements.

Week starting…

Topics

Known deadlines

August 27

Course Introduction, Programming in C

 

September 3

Chapters 2 and 3, Programming in Java

 

September 10

Chapters 4-6

P.A. #1 due Friday

September 17

Chapter 7

 

September 24

Chapters 7 and 8

 

October 1

Chapter 8

P.A. #2 due Friday

October 8

Midterm Exam 1

 

October 15

Chapters 9 and 10

 

October 22

Chapter 11

P.A. #3 due Friday

October 29

Chapters 11 and 12

 

November 5

Chapter 13

 

November 12

Midterm Exam 2

 

November 19

Projects and Topics

 

November 26

Projects and Topics

 

December 3

Projects and Topics

 

December 10

Projects and Topics

 

December 17

Finals Week

Final – 3-4:50 p.m., Monday