CSE 34341 Operating Systems Principles

Silicon Valley Section, Spring 2018

Instructor: Prof. Douglas Thain, dthain@nd.edu
TA: Madeline Kusters, mkusters@nd.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 the services and abstractions commonly provided by operating systems, and we will study the underlying mechanisms used to implement them. Topics include processes and threads, synchronization, cpu scheduling, deadlocks, memory management, segmentation and paging systems, storage and file systems, distributed systems, 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 we 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.

Course Communications

The course web page contains the schedule, assignments, and other critical information:
http://www.nd.edu/~dthain/courses/cse30341/spring2018

Sakai will be used only to record and distribute grades:
http://sakai.nd.edu

Piazza will be used for general Q&A about assignments. You are welcome to post or answer questions at any time; the instructors will generally answer questions on weekday afternoons: https://piazza.com/class/jcgiqrpkb9q5d2

Office hours will be noted on the course web page. To attend, dial into this Zoom meeting with your laptop, either voice or video as you prefer: https://notredame.zoom.us/my/dthain

Office hours will likely have multiple participants dialed in at once. If you would like to discuss grades or other matters privately, please contact Prof. Thain by email to make an appointment.

Textbooks

  • Required: Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, Operating Systems in Three Easy Pieces, Arpaci-Dusseau Books, March 2015.
  • Suggested Reference: Kernighan and Ritchie, The C Programming Language, Prentice-Hall, 1988.
  • Reading Assignments

    Please read the assigned chapters the weekend preceding the corresponding lecture. To encourage you to read carefully, you must turn in summary notes on the readings on each Monday, no later than 11:59PM PST. Send an email to dthain+notes@nd.edu with your notes attached. If you like to take notes on paper, then just snap a photo or two of your notebook. If you type them out, then send a PDF instead.

    Your notes can be organized in whatever way is appropriate to that chapter and is useful for you. Good things to include may be an outline of the chapter, definition of key terms, a sketch of the systems or data structures being discussed, that sort of thing. The one absolute requirement is that it must contain a clearly highlighted question you would like to discuss during the next class period.

    Grading on notes will be very simple: either one, one-half, or zero points. There will be twelve opportunities to earn a total of ten points, so you may miss up to two without penalty.

    Attendance

    To succeed in this class, you should attend and actively participate in all the scheduled lectures, since there is no provision for "making up" lectures. If you have to be out of town for some reason, you are welcome to attend by dialing into Zoom.

    Grading

    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. Grades will be made available in Sakai. projects are 60% of the course grade, chapter notes are 10%, and the midtem and final exam are together 30%. At the end of the semester, number grades will be converted to letter grades: 90/80/70 are the usual cutoffs for A/B/C grades, respectively. The instructor may exercise discretion for borderline grades, or to account for a trend of increasing/decreasing grades throughout the semester.

    Late assignments will receive no credit. You are free to turn in programming assignments multiple times before the deadline expires. It would be a good habit to turn in an incomplete but working assignment on a daily basis. Thus, there is no excuse for failing to turn in an assignment: everyone should turn in something long before the deadline.

    Exceptions will only be made for the grave circumstances outlined in the duLac student life handbook, or for participation in a sponsored University activity. In the latter case, students must confer with the instructor at the earliest possible date to make alternate arrangements.

    If you believe an error has been made in grading an item, please bring it to the attention of the TA who graded it within seven days of receiving it. (The TA who graded it knows the details best, and so can give you the best explanation.) Factual and clerical errors will of course be cheerfully corrected. If you are unsatisfied with the TA's explanation, you may appeal to the instructor. After seven days, graded items are final and will not be revisited.

    Honor Code

    All exams, homeworks, and programming assignments are to be completed individually, unless otherwise indicated.

    Students in this course are expected to abide by the Academic Code of Honor Pledge: “As a member of the Notre Dame community, I will not participate in or tolerate academic dishonesty.”

    For programming assignments, the following table summarizes how you may work with other students and use print/online sources:

    Resources Solutions
    Consulting allowed not allowed
    Copying cite not allowed

    See the CSE Guide to the Honor Code for definitions of the above terms.

    If the instructor sees behavior that approaches the border of academically dishonest behavior, and believes that further clarification is needed, he/she will give a warning. If an instructor sees behavior that is, in his/her judgement, academically dishonest, he/she is required to file either an Honor Code Violation Report or a formal report to the College of Engineering Honesty Committee.