Course Website: http://cs326.cs.usfca.edu
We have a class mailing list: cs326
Send messages to: firstname.lastname@example.org
Lecture: CSI G12 9:55am-11:40am
Lab: CSI 307 W 2:15pm-3:30pm
Final: Thursday, December 12th at 10:00am-12:00pm
Office: Harney 533
Teaching Assistant: Eric Fulton
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.
On completion of this course the student should be able to accomplish the following:
The C Programming Language, 2nd Edition
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.
If you score 90% or higher will be guaranteed an A-.
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.
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.
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.
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.
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.