Syllabus

Course Overview

In this course you will explore the following fundamental concepts underlying modern operating systems:

  • Processes, Threads, and Context Switching
  • System Calls, Interrupts, and Exceptions
  • Kernel and User Modes
  • Scheduling
  • IPC
  • Address spaces, virtual memory and memory management
  • I/O and device management
  • File systems
  • Concurrency

You will refine your understanding of the services provided and the resources managed by an operating system. To solidify your knowledge, you will study the source code for an existing operating system, and experiment with simulators for various operating system components.

Prerequisites

To be successful in this course you should have substantial programming experience in a high level language (C is ideal) with direct access to the underlying operating system’s system call interface. You should be, at minimum, adept at making use of the language’s facilities for process control, memory management, I/O, file management, and IPC. Experience with some form of assembly language is also required.If you are working your way through IIT’s undergraduate curriculum, CS 350 and CS 351 are prerequisite courses. CS 401 and CS 402 are the graduate equivalents.

Textbooks

The following textbooks are required for this course:

  • Silberschatz, Adam, Peter Galvin, and Greg Gagne. “Operating System Concepts, 7th Edition.” John Wiley & Sons, 2004.
  • Lions, John. “Lions’ Commentary on UNIX, 6th Edition.” Annabooks, 1996.

The following text is recommended for those new to the C language:

  • Kernighan, Brian W., and Dennis M. Ritchie. “The C Programming Language”, 2nd Edition. Prentice Hall, 1988.

Reading will be assigned in advance of most lectures — you should take care to read the assigned material before arriving to class, as it will be sure to help you get more out of lecture.

Grading

Your grade will be based on the following components and weights:

  • 35% Assignments
  • 15% Participation
  • 25% Midterm exam
  • 25% Final exam

The grade scale is as follows:

  • A: 90%-100%
  • B: 80-89%
  • C: 70-79%
  • D: 60-69%
  • E: 0-59%

Grades are never curved, but exam scores will be adjusted so that the class average is at least 70%. Note that you must score at least 50% on both exams (after normalization) in order to pass the class.

Assignments

Problem sets and machine problems will occasionally be assigned as homework.  Some assignments may involve a significant amount of coding and computer simulation.  Your submissions must be typed (handwritten assignments will not be accepted) and submitted in person at the beginning of lecture on the posted due date. All submissions should contain a header stating the student’s name, section number, and campus ID.

Exams

The midterm exam is scheduled for March 13, and will take the place of lecture. There will be no make-up exams unless they are cleared with me at least a week beforehand. The final, comprehensive, exam will occur at the time and place set by the official IIT final exam schedule. Both exams will be closed-book, closed-notes, calculators-permitted.

Late Policy

An assignment is late if it is not turned in by 11:59PM of the due date. Late assignments, unless cleared in advance with the instructor, are subject to a 10% reduction in points for each day late. After 1 week (7 days), an assignment will not receive any points at all, but may be submitted for feedback.

Academic Integrity

You are welcome to discuss assignments and labs with classmates, but all final work must be your own. You should take care to attribute any ideas incorporated into your work to their original source, if that source is not yourself.

The IIT code of Academic Honesty may be found in the undergraduate handbook, and online at http://www.iit.edu/~osa/Handbook. Any violation of this policy may result in the student receiving a failing grade for the course, and being reported to the dean of the college.

Leave a comment

You must be logged in to post a comment.