This course will provide an introduction to operating system design and implementation. The operating system provides a well-known, convenient, and efficient interface between user programs and the bare hardware of the computer on which they run. The operating system is responsible for allowing resources (e.g., processors, memory, and disks) to be shared, providing common services needed by many different programs (e.g., filesystems, the ability to start or stop processes, and access to hardware devices), and protecting individual programs from one another. Particular emphasis will be given to three major OS subsystems: process management and synchronization, memory management, and file systems.
Primary course goals include:
CSCI 2330 (Foundations of Computer Systems / Introduction to Systems). Students should be comfortable working in a command-line Linux environment and coding in C, but do not need prior experience in C++.
Instructor: Sean Barker
Office: Searles 220
Office Hours: Tuesday/Wednesday/Friday 2-3:30, or by appointment.
Attendance and participation in class, completion of written homeworks and programming projects, and two exams (one midterm and a final). Evaluation will be as follows:
Programming projects will be in C++ and may be completed in groups of 2 (except for the first project). These projects will demand a substantial time commitment on your part, and past students have reported spending significantly more time on this course than others. Plan accordingly! While you will have roughly 2-3 weeks to complete each project, it is essential that you start the projects early; the code you will be writing is low-level and can be challenging to debug.
You will have 3 flex days to submit projects late without penalty during the semester, which may be allocated however you wish. Beyond the use of your flex days, late assignments will be penalized a letter grade per day.
We will use Piazza to facilitate discussion outside of class. In general, you should prefer posting to Piazza over sending me email, as it will allow your classmates to both see and answer your questions, possibly quicker than I alone can (though you can also post privately such that only I can see your question).
Here is the CSCI 3310 Piazza page.
We will use the following textbook, which is freely available online:
Remzi Arpaci-Dusseau and Andrew Arpaci-Dusseau. Operating Systems: Three Easy Pieces, currently at version 0.91.
Individual chapters of the book are downloadable as PDFs from the site above. If you would like a hard copy of the entire book to supplement the electronic version, one may be purchased (quite inexpensively!) via the same site.
Mondays and Wednesdays
11:30 AM - 12:55 PM
Use of laptops in-class is permitted for note-taking or other class-related purposes. Cell phones should be silenced and put away during class to avoid disruptions.
No electronic devices, including computers, phones, or calculators, are permitted during exams unless specifically indicated by the instructor.
Please review the Computer Science Collaboration Policy. You are responsible for reading, understanding, and adhering to this policy.
Note for version control system users (e.g., git): While you are welcome to use version control systems such as Git or Subversion to collaborate within your team (or to store your own code), you may not store or post any code in publicly-available repositories (such as public repositories on GitHub). If you would like to use a service like GitHub, you must use a private repository.