Course Website: http://cs326.cs.usfca.edu
Lecture: LS 307 TR 2:40-4:25pm
Lab: LS 307 W 1:00pm-2:25pm
Final: Thursday, December 15, 3:00pm-5:00pm
Instructor: Greg Benson
Office: Harney 533
Austin Bushree, firstname.lastname@example.org
Cole Howard, email@example.com
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 file systems. We are going to study a small scale version of UNIX called xv6 developed at MIT and we will write kernel code from scratch for the Raspberry Pi.
On completion of this course the student should be able to accomplish the following:
Operating Systems: Principles and Practice, 2nd Edition
Thomas Anderson and Michael Dahlin
You should also already have the K&R book from CS 220:
The C Programming Language, 2nd Edition
Brian W. Kernighan and Dennis M. Ritchie
I will provide additional material on the class website.
Tentatively, there will 5 programming projects. For the projects you will need to submit you solutions to git 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 assignments. The exams will be closed book and closed notes.
If you score 90% or higher will be guaranteed an A-.
Exam grade policy: If you score less than the aggregate 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 Min C or higher, you could end up with a C- or lower depending on your total exam scores.
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 strictly required, but you must be present in class to take the quizzes, you cannot take the quizzes outside of class. You are responsible for all material presented and discussed in class, including and code examples worked out in class. Please show up on time to class.
http://myusf.usfca.edu/academic-integrity/honor-code for details.
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.
You must never represent another person’s work as your own.
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.
Flagrant or repeat violations of the honor code will result in an F in the course, a report to the University Academic Integrity Committee, and a report to the Dean.
Examples of honor code violations include but are not limited to:
When you email the instructor, TA, or the mailing list, be sure to email from an account to which we can directly reply.