| Home | Syllabus | Schedule | Piazza |
CSE 506 Operating Systems, Fall 2019
Course Overview
This course will be an in-depth study of important concepts and techniques found in modern computer operating systems. It will not attempt to provide a comprehensive introduction to operating systems. Some previous exposure to the basics of multi-programmed operating systems will be assumed. This will permit a detailed examination of some of the more important areas, including file systems, storage, virtual memory, networking, and security, with an eye to recent directions in these areas. Textbook readings will be supplemented where appropriate by papers from the research literature.
An important part of the course will be the case study of an actual operating system. We will primarily use Linux 4.x in this class. Students will study the source code for this operating system, and will do programming exercises and projects that involve modifying the operating system and measuring its behavior and performance.
If you follow the course readings and homeworks, you will come out of this course with a basic understanding of a modern operating system. You will be able to read major parts of source code for Linux and generally understand what they do. You will even be able to write simple kernel modules from scratch, or modify existing complex ones.
Prerequisites
The officially published prerequisites for this class are CSE-306, the undergraduate level operating systems course. It is necessary. If you've taken an equivalent course elsewhere, and it includes actual programming experience in any Unix kernel, please speak to me first to get an approval to take this class. If you've never taken an introductory operating systems course before, you may not take this class; in some cases, having industry experience in the same field is enough.
You should already know the C programming language and be proficient with it. You should know, for example, how to debug pointer problems and other memory "trashing" bugs that often come up in C programs. This course will not teach you C or basic debugging techniques (though we will discuss how to debug the Linux kernel).
You should already have basic exposure to Unix commands. You should know what ssh, cc, gcc, make, ar, as, nm, ln, ld, cpp, vi/emacs, gdb, and other such commands do. We will not teach you how to use Unix (we'd like to spend the time teaching you about operating systems instead).
Textbooks
- Linux Kernel Development, 3rd Edition, by Love, Addison-Wesley Professional
- (optional) The Design and Implementation of the FreeBSD Operating System, 2nd Edition, by McKusick and Neville-Neil, Addison-Wesley Professional
- (optional) Understanding the Linux Kernel, 3rd Edition, by Bovet and Cesati, O'Reilly Media
Grading
The final grade will be determined as follows: The raw scores obtained by all students on each assignment and exam will be standardized for that particular assignment or exam either (at my discretion) by converting them to percentile scores, or else by applying a linear transformation to map the scores to a standard [0, 100] scale. A weighted sum of the resulting standardized scores will then be formed (with weights as shown below) to obtain a composite score for each student.
- Midterm exam (30%)
- Project 1 (10%)
- Project 2 (30%)
- Project 3 (30%)
- (No Final exam)
Finally, the composite scores will be ranked, and I will apply a subjective method of my choice to determine the cutoffs for each grade category. Absolute performance standards, the distribution of composite scores, information derived from late homeworks, and class participation are factors likely to contribute to this decision.
Policies
All programming projects are individual assignments. You may discuss the assignment details, designs, debugging techniques, or anything else with anyone you like in general terms, but you may not provide, receive, or take code to or from anyone. The code you submit must be your own work and only your own work. Any evidence that source code has been copied, shared, or transmitted in any way will be regarded as evidence of academic dishonesty.
Late submission penalty: There will be a deduction equal to 25% of the assignment's maximum score per day.
The midterm exam will be in-class, closed-book exam.
There will be no final exam. Programming projects 2 and 3 will be considered as a final exam.
Communication
-
- Syllabus, lecture slides, schedule, notes, etc.
- Primary way materials are distributed.
-
- Project submission
- Grades posted
-
- Use it to ask and answer questions
- This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email team@piazza.com.
Student Accessibility Support Center
If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Student Accessibility Support Center, ECC (Educational Communications Center) Building, room 128, (631) 632-6748. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation is confidential.
Academic Integrity
Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person’s work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the Academic Integrity website.
Critical Incident Management
Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of Judicial Affairs any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students’ ability to learn.
Acknowledgement
This course reuses some of the material from SBU's CSE 506 by Drs. Zadok, and Ferdman, VT's ECE 5984, GT's CS 3210, UW's CSE 451, OSPP, and MIT's 6.828.