Syllabus

CS 326 Operating Systems

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

Lecture: LS 307 TR 2:40-4:25pm
Lab: LS 307 W 5:30pm-7:00pm
Final: Thursday, December 14, 3:00pm-5:00pm

Staff

Instructor: Greg Benson
Phone: 415.422.5066
Office: Harney 533

Teaching Assistants

Siwadon Saosoong, ssaosoong@dons.usfca.edu
Yiding Liu, yliu224@dons.usfca.edu

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 modifying components of an operating system, including the system call interface, user processes, virtual memory, and file systems. We are going to study and modify a small scale version of UNIX called xv6 developed at MIT.

Learning Outcomes

On completion of this course the student should be able to accomplish the following:
  • Configure a Linux-based operating system and work from the shell.
  • Understand and evaluate operating system implementations.
  • Understand the implementation of fundamental OS structures, including
    • Threads, processes, synchronization, 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 git.

Prerequisites

  • CS 220 C and Parallel Programming with a grade of C or better.
  • CS 221 C and Systems 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

You will need to purchase a Raspberry Pi 3 Model B in order to do many of the projects. You will also need a few accessories.

We have a required textbook:

Operating Systems: Principles and Practice, 2nd Edition
Thomas Anderson and Michael Dahlin
Recursive Books
ISBN-10: 0985673524
ISBN-13: 978-0985673529

You should also already have the K&R book from CS 220 or CS 221:

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

I will provide additional material on the class website.

Assignments and Exams

Tentatively, there will 5 programming projects.  For the projects you will need to submit you solutions to GitHub repositories for each project. 

We will have regular in-class quizzes based on the assigned reading and lecture material. The quizzes will be short answers and you will be submitted your answers online via Canvas. Generally the quizzes will be at the beginning of class. We may not have quizzes some weeks.

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, in the assignments, and from the book. The material covered on the exams will be based on the assigned reading, information presented in lecture, and what you learn by doing the projects. The exams will be closed book, but you will be allowed to bring one page of notes (front and back).

Grading

Breakdown

 Quizes 10%
 Projects 50%
 Midterm 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-. For some assignments and exams I may adjust your raw score depending on the level of difficulty. Such adjustments will only raise your score, not lower it. 

Conciseness and neatness of your solutions are considered in the grading of assignments and exams. While being neat won't necessarily improve your score, being messy will certainly lower your score.

Only turn in what you intend to have graded.

Exam grade policy: If you score less than Min C- value on your aggregate exam scores (midterm + final) you will receive no higher than a C- in the course. That is, even if your accumulative score is a C or higher, you could end up with a C- or lower depending on your total exam scores.

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.

Regrades

In general, assignments to be considered for regrades must be turned in no later than one week after the graded papers were made available. However, at the end of the semester, assignments to be considered for regrades must be turned in earlier, as will be announced. Similarly, any mis-recorded grades must be reported within a week of their posting, except as will be announced at the end of the semester. 

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 on the assignments and exams.  It is fine to talk with others about general approaches used to solve the assignments or simply to understand the problem statement, but each student is to develop his or her own solution; collaborative efforts are not allowed.

In addition, using solutions from any other source is forbidden.  In particular, using solutions (either instructors' or other students') from previous offerings of this course is not allowed.  To summarize: all assignments and labs are to be individual and original efforts. You must never represent another person’s work as your own.

If you are caught cheating or plagiarizing (e.g., collaboration, copying on exams, cutting and pasting text) you will be given an F for the course and you will be reported to the Dean.

All students are expected to know and adhere to the University of San Francisco's Academic Honor Code. Go to http://myusf.usfca.edu/academic-integrity/honor-code for details.

Copying answers or code from other students or sources during a quiz, exam, or for a project or homework assignment is a violation of the university’s honor code. This includes copying code or other material from the web, and having anyone other than yourself complete your assignments. It also includes working too closely with another student. Collaboration or discussion that results in the same or very similar code indicates that you have not placed enough independent work into your solution and is a violation of the honor code.

Examples of honor code violations include but are not limited to:
  • Giving your code to another student.
  • Submitting code written by anyone other than yourself as your own.
  • Copying text from the web.
  • Discussing implementation details of a solution with another student.
  • Discussing code-specific details of a solution with another student.

Email

In general, you should post all questions to the Piazza group for this class. You can also use Piazza to send private message to the instructor and TA. If you do need to email the instructor or TA, be sure to email from an account to which we can directly reply. We expect that you read your USF dons email.

Class Website

Clarifications, changes, etc. regarding the class and assignments will be posted to the class website and/or Piazza.  Also check your email and the class website frequently.
Comments