This course gives an introduction to the basic concepts and core principles
used to structure modern computer operating systems. The goal of the class is to
explain those concepts and principles that are likely to survive for many years
to come. The course is a departure point for research in operating and distributed
systems. Specifically, the course introduces the concepts of processes, concurrency,
synchronization, scheduling, multiprogramming, memory management, and file systems.
- 600.120 (Intermediate Programming), 600.211 (Unix Systems Programming),
600.226 (Data Structures), 600.233 (Computer Systems Fundamentals). This course
involves significant kernel programming tasks. You should: 1). be comfortable and
fluent in programming in low-level languages (C and x86 assembly in particular);
2). have experiences of developing in UNIX environment.
- Ryan Huang
- Email: email@example.com
- Address: Malone 231
- Phone: (410) 516-4522
- Office Hours: Tue 4-5pm, Thu 11am-12pm, Malone 231 (or by appointment)
- Guoye Zhang
- Email: firstname.lastname@example.org
- Office Hours: Mon, Wed 4:30-6pm, Malone 122 (ugrad lab)
- Dewank Pant
- Email: email@example.com
- Office Hours: Tue 12-1:30pm, Thu 1-2pm Malone 239
- Discussion Section: Thu 12-1pm, Malone 228
- Ying Liu
- Email: firstname.lastname@example.org
- Office Hours: Wed, Fri 9:30–11:00am, Malone 239
Ames Hall 234
||Thursday 12-1pm Malone 228
||Tuesday Oct. 17th, time location TBD
Operating Systems: Three Easy Pieces
by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, available online for free!
Other recommended textbooks:
- Operating Systems: Principles and Practice, 2nd Edition (2014), by Anderson and Dahlin, Recursive Books, ISBN 978-0985673529
- Operating System Concepts, 8th Edition (2008), by Silberschatz, Galvin and Gagne, Wiley, ISBN 978-0470128725
- Understanding the Linux Kernel, 3rd Edition (2008), by Bovet, O’Reilly, ISBN 978-0596005658, (good for projects)
- Modern Operating Systems, 4th Edition (2014), by Tanenbaum and Bos, Pearson, ISBN 978-0133591620
This course is organized as a series of lectures taught by the instructors, assigned readings, discussion sections, homework,
projects, and exams. They are complementary to each other, helping you reinforce learning on the core concepts in operating systems.
Questions on examinations will be based on material covered in class, assigned readings, and projects.
||Core material of the course.
||The textbook and supplementary readings provide references to lectures, and are good preparations before class. But they are not a substitute for the lectures. In other words, you should come to class.
||Five programming assignments, each completed individually or in groups (of no more than 3). They are essential for you to turn the theories you learned into practices.
||Optional homework questions for exam preparation (not to be turned in)
||Midterm examination and a final exam
Your final grade for the course will be based on the following weights:
- Projects: 50%
- Midterm: 15%
- Final exam: 35%
For the programming assignments, there are no partial credits. You must turn in working code.
- Unless otherwise noted, all work must be completed individually.
Homework assignments (if any) may be discussed, but solutions must
be completed individually. Projects may be completed in established
groups, and implementation approaches may be discussed across groups,
but programming code cannot be shared across groups.
- Don’t do it. All students are required to know and adhere to the
JHU CS Department Academic Integrity Code and
university policies. Failure to do so will result in serious consequences outlined in the policy.
Simply stated, do no cheat. The consequences are very high for the time/effort saved.
The course syllabus and materials are inspired by UCSD CSE 120 and Stanford CS 140
class. Credits are particularly due to Geoff Voelker (UCSD), Yuanyuan Zhou (UCSD),
and David Mazières (Stanford).