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 4-5pm, Malone 231 (or by appointment)
- Yigong Hu
- Email: firstname.lastname@example.org
- Office Hours: Tue 4:30-6pm, Thu 4-5:30pm, Malone 122 (ugrad lab)
- Parv Saxena
- Email: email@example.com
- Office Hours: Wed 1-2:30pm, Fri 4-5:30pm, Malone 122 (ugrad lab)
- Eric Feldman
- Email: firstname.lastname@example.org
- Office Hours: Mon 4-5:30pm, Wed 4-5:30pm, Malone 122 (ugrad lab)
- Andrew Rojas
- Email: email@example.com
- Office Hours: Mon 11am-12:30pm, Fri 11am-12:30pm, Malone 122 (ugrad lab)
- firstname.lastname@example.org (preferred email channel for the course staff)
||Tuesday/Thursday 01:30pm-02:45pm, Hodson Hall 213
||October 22, Tuesday 01:30pm-02:45pm, Hodson Hall 213
||December 18, Wednesday 9am-12pm, Hosdon Hall 213
Project Discussion Section:
- Lab 0 Overview — Sept 6, Friday 3-4pm, Malone G33/35
- Lab 1 Overview — Sept 18, Wednesday 3-4pm, Malone G33/35
- Lab 2 Overview — Oct 3, Thursday 3-4pm, Malone G33/35
- Lab 3 Overview — Oct 25, Friday 5-6pm, Malone G33/35
- Lab 4 Overview — TBD, Malone G33/35
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, lecture and project materials are heavily influenced 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).