Syllabus

CS 636 Operating Systems

Lecture: Tue and Thu 9:55am-11:40am, ED 310

Final: Tuesday, May 14th at 10:00am-12:00pm

Staff

Instructor: Greg Benson
Email: benson@usfca.edu
Phone: 415.422.5066
Office: Harney 533
Office Hours: Tue/Thu 3:00pm-4:30pm, Wed 2:00pm-4:00pm, and by appointment

Course Objectives and Topics

In this course we will investigate the design and implementation of scalable storage systems and scalable run-time execution environments.  Examples of such systems include the Google File System, Amazon's Dynamo, Cassandra, Riak, MongoDB, Google's MapReduce, AppEngine and Hadoop.  Many of these systems are the foundations for what is called Cloud Computing.  While we will look at programming some of these systems our main goal will be to understand how such systems are built and look for opportunities to improve the state of the art.  This is a seminar style course in which we will read many academic research papers that describe and evaluation different scalable system designs.  In addition, you will work on projects related building scalable systems and applications.  You final project will be an independent research project that will include an implementation, experimentation, report, and final presentation. 

This is a demanding class and probably unlike some of the other graduate courses you have taken at USF.  I expect you have taken a rigorous undergraduate operating systems course and that you are comfortable with programming in C, Java, and Python.  Initially, reading the technical papers will be time consuming, but you will get better as you gain more experience.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:
  • Understand the fundamental need for scalable systems.
  • Understand the restrictions found in the underlying hardware and software using for building scalable systems.
  • Explain the current state of the art in building scalable systems.
  • Design and develop scalable storage and computation systems.
  • Read and evaluate operating systems research papers.
  • Communicate effectively in a technical group discussion.
  • Carry out a systems research experiment and write up a technical report that summarizes the results.

Prerequisites

As mentioned above, you should have taken an undergraduate operating systems course that required you to build and understand the major components of an operating systems kernel.
  • CS 326 Operating Systems or equivalent.
  • Useful classes: assembly, data structures and algorithms, and networks.
  • Experience with C, Java, and Python.
  • Experience with using UNIX/Linux via the shell.
I will review some foundational OS material, but you are unfamiliar or need a refresher on certain topics, you should consult a good OS text book.  The book we use in CS 326 is:

Operating Systems Concepts, 8th Edition
Silberschatz, Galvin, and Gagne
John Wiley & Sons., Inc.
ISBN: 978-0-470-12872-5

Course Materials


There are no required textbooks for this course.  I will make available research papers for you to read and we will be using online documentation for Android.  There are many references for C, Java, and Python and some good online resources.

Grading

Breakdown

 Paper evaluations
 20% 
 Participation 10%
 Midterms (2) 20%
 Projects 50%

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-.

For each evaluation and each class discussion you will be given a Check-, Check, or Check+.  These are equivalent to:

 Check+
 100
 Check 80
 Check- 70
 N/A 0

In some cases I may assign an in-between grade or a Check-- for very poor performance.

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.

Because 10% of your grade comes from class participation, class attendance is required.

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.

Course Mailing List and Website

We have a class mailing list: cs636@cs.usfca.edu

Course Website: http://cs636.cs.usfca.edu
Comments