CSE 30341 - Operating Systems Principles - Spring 2009

MWF 10:40-11:30 AM
117 Debartolo Hall

Instructor: Prof. Douglas Thain
Email: dthain at cse dot nd dot edu
Office: 382 Fitzpatrick Hall

Teaching Assistants:
Hoang Bui, hbui at nd dot edu
Santanu Chatterjee, hbui at nd dot edu

Overview

An operating system is a layer of software that manages hardware resources and that provides user programs with a simple and consistent interface to the machine. In this course, we will examine services and abstractions commonly provided by operating systems, and we will study the underlying mechanisms used to implement them. Topics may include processes and threads, synchronization, cpu scheduling, deadlocks, memory management, segmentation and paging systems, storage and file systems, security, and virtualization.

The concepts presented in class will be explored through a series of six intensive programming assignments. The assignments will make use of the C programming language, which the universal language for implementing and accessing operating systems at the lowest level. The projects will give students ample practice in manipulating pointers, managing memory, invoking system services, and dealing with error conditions. Although the course will offer some technical guidance on these matters, students should expect to spend significant time debugging, consulting reference materials, and revising the projects until they work properly.

The goals for each student in this course are:

  1. To understand the abstractions and services provided by an operating system.
  2. To understand the mechanisms and algorithms used to implement these services
  3. To get practical experience using and implementing operating system services.

The course materials will test each student's achievement of these goals at several levels. For each topic in the course, students must be able to:

  1. Describe traditional operating system structures and algorithms.
  2. Demonstrate in detail how they apply to various programs and data.
  3. Evaluate the strengths and weaknesses of related structures and algorithms.
  4. Propose and evaluate a variety of improvements upon traditional methods.
  5. Implement basic methods in a working computing system.

Required Textbooks

  • Silberschatz, Galvin, and Gagne, Operating System Concepts, John Wiley, 7th or 8th edition.
  • Kernighan and Ritchie, The C Programming Language, Prentice-Hall, 1988.
  • Course Communications

    http://www.cse.nd.edu/~dthain/courses/cse30341/spring2009
    Assignments, announcements, and other critical information will be posted to the course web page. Students are responsible for checking the page periodically for new material. Important email messages will be sent to your University email address, so make sure to check it regularly.

    Grading and Attendance

    The course grade will be based on six programming projects, two exams, and a final exam. For each assignment, a numeric grade will be assigned. Periodically, students will be advised of their numeric grades and the class average. At the end of the semester, number grades will be converted to letter grades.

    All assignments must be submitted by the day and time indicated. Late assignments will receive no credit. Programming assignments will generally be submitted electronically by simply copying your work into specified directory. Note that electronic submissions may be closed automatically by the clock. You may update your submission as many times as you like before the deadline, so I recommended that you submit something as soon as it is working, and update your submission regularly. Thus, there is no excuse for failing to submit an assignment. Exceptions will be made only for grave emergencies outlined in the duLac student handbook.

    If a student believes that an error has been made in grading an item, it must be brought to the attention of the appropriate TA within seven days after the item has been returned. Factual and clerical errors will be cheerfully corrected. Matters of judgement are left to the TA's discretion. The student may appeal any decision to the instructor, but it is very unlikely for the instructor to over-rule the TA's decision.

    Students are expected to attend all class meetings. The lectures will be based upon the course textbook, but will often include additional material that may be necessary to complete the projects or the exams. If you are absent from class, please obtain the day's notes from a classmate.

    Assignment Weight
    Projects 60%
    Exam I 10%
    Exam II 10%
    Final Exam 20%

    Collaboration

    The programming projects are to be done individually, unless otherwise noted. You must be the sole author of all code and other written material that you submit for grading. You may not read, re-use, or submit code created by others. However, you may discuss general ideas, algorithms, and problems with your classmates. Any activity that falls into the gray area between "authorship" and "discussion" should be assumed off-limits unless explicitly approved by the instructor.

    The midterm and final exams are to be taken alone.

    You must read, understand, and abide by the Department Honor Policy and the University Academic Code of Honor, both available on the web. At key points during the semester, the matter of appropriate collaboration will be discussed in class.

    Any violation of these rules will be considered a very serious matter and will result in a referral to the University honor committee and the appropriate rector and academic advisor. Penalties may include failure of the class and suspension or expulsion from the University.