Syllabus

CS 326 Operating Systems

Course Website: http://cs326.cs.usfca.edu

We have a class mailing list: cs326
Send messages to: cs326@cs.usfca.edu

Lecture: CSI G12 9:55am-11:40am
Lab: CSI 307 W 2:15pm-3:30pm

Final: Thursday, December 12th at 10:00am-12:00pm

Staff

Instructor: Greg Benson
Phone: 415.422.5066
Office: Harney 533

Teaching Assistant: Eric Fulton

Course Objectives and Topics

Operating systems are essential to most modern computer systems, from very small computing devices such as mobile phones and tablets to larger computers such as laptops, desktop computers, workstations, clusters, and supercomputers.  An operating system has two fundamental tasks: to manage a computer's resources (i.e., CPU cycles, memory, disk, network interface, etc.) and to provide applications with an abstract interface to these resources so that they are (relatively) easy to use.

In this course you will learn the fundamental principles of operating system design and implementation.  You will learn how the principles are used in practice by writing system software and complete components of an operating system, including the system call interface, user processes, virtual memory, and a file system.  We use the Pintos teaching operating system developed at Stanford University.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:
  • Understand and evaluate operating system implementations.
  • Understand the implementation of fundamental OS structures, including
    • Processes, system calls, scheduling, virtual memory, and file systems
  • Develop UNIX system software.
  • Write and debug concurrent programs.
  • Debug complex systems and low-level software.
  • Work with UNIX tools such as make and subversion.

Prerequisites

  • CS 220 C and Parallel Programming with a grade of C or better.
  • CS 245 Data Structures and Algorithms with a grade of C or better.
  • An understanding of basic data structures such as linked lists, queues, trees, and hash tables.
  • Good C programming skills.

Course Materials

I will be providing required course materials, however here are two optional books that might be helpful:

Operating Systems Concepts, 9th Edition (8th Edition and 7th Editions are okay too)
Silberschatz, Galvin, and Gagne
John Wiley & Sons., Inc.
ISBN-10: 1118063333

The C Programming Language, 2nd Edition
Brian W. Kernighan and Dennis M. Ritchie
Prentice-Hall
ISBN-10: 0131103628

Assignments and Exams

Tentatively, there will 5 programming projects.  For the projects you will need to submit you solutions to your a git repository.  Please create a project directory called cs326.  You should name project submission as follows: prj0, pr1, etc.

There will be one midterm and a final.  The purpose of the exams will be to assess your understanding of the topics covered in class and in the assignments.  The material covered on the exams will be based on the assigned reading, information presented in lecture, and what you learn by doing the assignments.  The exams will be open book and open notes.  Sharing of materials with your neighbor will not be permitted.  Be sure to come prepared to the exams with your book and notes.

Grading

Breakdown

 Projects (5) 60%
 Midterms (1) 10%
 Final 30%

Policies

All assignments will be worth 100 points.  Grading will be done on an absolute scale:

 Min A-
 90%
 Min B-
 80%
 Min C-
 70%
 Min D-
 60%

If you score 90% or higher will be guaranteed an A-.

Due Dates and Attendance

Assignments must be turned in on time to receive credit.  Except in the most extreme situations, late assignments will not be accepted.  If you cannot complete an assignment by the due date, hand in whatever you have done in order to receive partial credit.

Class attendance is not required, but it is highly recommended.  Please show up on time to class.

Missed Exams

Make-up or early exams will not be given except in the most extreme situations.  If you must miss an exam due to extreme illness, etc. contact the instructor (email is fine) or leave a message with the Department of Computer Science office (415.422.6530) before the exam.

Laptop Usage in Class

You may use your laptop during class as long as you are using it in order to take notes or to look up information regarding the lecture content.  Please do not user your laptop for any other activity such as to read or compose email, to use instant messaging software, or to play games.  This is very disruptive to me and the other students in the class, not to mention that it will distract you from learning the material.  If I have reason to believe you are not using your laptop in a productive way I will ask you not to use it in class.

Cheating and Plagiarism

Each student is to do his or her own work for the paper evaluations and projects.  Group projects are an exception.  For the paper evaluations you will need to write original documents.  Do not try to obtain text from the Internet or other sources.  It is easy to spot and easy to find with modern search engines.  If you are caught cheating or plagiarizing (e.g., collaboration, copying on exams, cutting and pasting text) I will assign you a F for the course and you will be reported to the Dean.

Email

When you email the instructor, TA, or the mailing list, be sure to email from an account to which we can directly reply.

Clarifications, changes, etc. regarding the class and assignments will be posted to the cs326 mailing list.  Also check the class website frequently.

Comments