CSE422/512 - Advanced Operating System Programming

Summer 2014


Instructor: Ken Smith
Time: Mon/Wed 10:00am-12:15pm Baldy 110
Office: 353 Davis Hall
Phone: 645-4763
Email: kensmith@dcsl.buffalo.edu
Office Hours: Monday through Friday 8am-4pm excluding class time
Lab Web Page: http://www.dcsl.buffalo.edu/
Course Web Page: http://www.dcsl.buffalo.edu/~kensmith/


This course is designed to be a second semester Operating Systems course. It covers what happens in the "kernel side" of modern-day multi-user operating systems. I assume you know the material covered in CSE421/521. Among the material covered is:

There is a strong lab component to the course in which you will be provided the source code of a UNIX Operating System (FreeBSD 9.2) and the projects will involve modifications to that operating system. You will need to know the C programming language as well as UNIX editors (vi or emacs) and programming utilities like "make".


Grades will be straight letter grades (no +/- grades) based on:

Graduate Students taking CSE512 will have more difficult projects than the Undergraduate Students taking CSE422. Homework assignments and the projects will be sent via email to your @buffalo.edu address.

The Exams will be open lecture notes (as provided by Makin' Copies only). The text book will not be allowed during exams so you may purchase an electronic version (e.g. a Kindle version) if you like.

The date for the Midterm Exam will be Monday July 7th, 2014. The date for the Final Exam will be Wednesday August 13th, 2014.

The CSE Department has a very strict policy on cheating. Anyone caught cheating will fail the course, and any Departmental Financial Aid will be withdrawn. All work for this course is to be an INDIVIDUAL effort. You must do all the work on your own with no help from classmates or other students.


There will be a lab of servers and "crash machines" on which to do the homework assignments and projects. There will be around six "crash machines" which, the day before a homework or project is due, will not seem like enough. You will really need to try and get assignments done before the last minute. To help stagger the load a bit assignment due dates may be different for the Undergrads taking CSE422 and the Grads taking CSE512. A "Lab Manual" will be provided that describes exactly how to set up the source code tree in your home directory, where you will be able to compile things, how to use the "crash machines" as well as other background information you will need to do the course assignments. You will need to read the entire manual very carefully. Some of the information in the manual will effect your grade on the assignments. Most of the material in the Lab Manual will not be covered in the lectures.

The lab servers and crash machines for this semester will be running FreeBSD 9.0, which was released recently. If you set up a home machine to work on be sure that is the system you load so your source code is in sync with the lab machines.

If you choose to try and set up a FreeBSD machine of your own to do the assignments on that would help with the contention for crash machines quite a bit. However you MUST have the assignment ready for grading on the lab machines, we cannot do the grading on your personal machine. If you follow the guidelines provided in the Lab Manual working on your own machine and then moving the results to the lab server should be easy. The Lab Manual has the start of a section to help with setting up a machine of your own but that section of the manual will certainly not be "complete" this year.

Access to the lab room itself, Bonner 113, is by a UB-Card reader. The vast majority of the work for this course can be done remotely, you will not need to be in the lab itself much if at all. However while working on the crash machines please at least be near Bonner 113 so you can rescue the crash machine if your kernel is particularly buggy. Rescuing a crash machine may require being at its console to boot a kernel from a non-standard location.


There is one textbook:

In addition to that if you need help with some of the background material this course assumes you know already you may find the following books helpful:

Most of the lab work will be with an operating system that is best described by the required textbook combined with web-based documentation available on the FreeBSD web site. A local mirror of that site is here. The lecture material will be a combination of material from the textbook plus extra things learned from 'hands-on experience'.