Latest Announcements

12/02: Practice homework released
11/30: Lecture 22 slides (preview) uploaded
11/17: Lecture 21 slides (preview) uploaded
11/15: Lecture 20 slides (preview) uploaded
11/10: Lecture 19 slides (preview) uploaded
11/08: Lecture 18 slides (preview) uploaded
11/08: Lab 3b released
11/03: Lecture 17 slides (preview) uploaded
11/01: Lecture 16 slides (preview) uploaded
10/28: Lecture 15 slides uploaded
10/20: Lecture 14 slides (preview) uploaded
10/18: Lecture 13 slides (preview) uploaded
10/18: Lab 3a released
10/13: Lecture 12 slides (preview) uploaded
10/11: Lecture 11 slides (preview) uploaded
10/07: Pintos VM notes slides uploaded
09/29: Lecture 10 slides (preview) uploaded
09/27: Lab 2 released
09/27: Lecture 9 slides (preview) uploaded
09/22: Lecture 8 slides (preview) uploaded
09/16: Lecture 7 slides (preview) uploaded
09/15: Lecture 6 slides (preview) uploaded
09/13: Lecture 5 slides (preview) uploaded
09/09: Lab 1 released
09/08: Lecture 4 slides (preview) uploaded
09/06: Lecture 3 slides (preview) uploaded
09/02: Lecture 2 slides uploaded
08/31: Lab 0 released
08/30: Lecture 1 slides (preview) uploaded
08/21: Course website is up

Course Overview

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.

Prerequisites
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.

Staff

Instructor

Ryan Huang
Email: huang ~AT~ cs ~DOT~ jhu ~DOT~ edu
Address: Malone 231
Phone: (410) 516-4522
Office Hours: Tue 9:30-10:30am, Thu 9:30-10:30am ET (or by appointment)

TA

Haoze Wu
Email: haoze ~AT~ jhu ~DOT~ edu
Office Hours: Thu 4-5pm, Fri 4-5pm ET

CAs

Yuzhuo Jing
Office Hours: Mon 3:15-4:15pm, Wed 3:15-4:15pm ET

Gongqi Huang
Office Hours: Tue 10:30-11:30am, Thu 10:30-11:30am ET

Staff list

cs318-staff@cs.jhu.edu (preferred email channel for the course staff)

All office hour meeting links will be posted in Blackboard and Campuswire.

Meetings

Lecture: Tuesday/Thursday 01:30pm-02:45pm, Hodson 210
Final Exam: 12/14 Tuesday 09am-12pm, Hodson 210

Project Discussion Section:

  • Lab 0 Overview — TBA

Textbooks

OSTEP

Operating Systems: Three Easy Pieces

by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, available online for free!

Other recommended textbooks:

Organization

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.

Lectures: Core material of the course.
Readings: 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.
Projects: 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.
Homework: Optional homework questions for exam preparation (not to be turned in)
Exams: Quizzes and a final exam

Grading

Your final grade for the course will be based on the following weights:

  • Projects: 60%
  • Quizzes: 15%
  • Final exam: 25%

For the programming assignments, there are no partial credits. You must turn in working code.

Ethics

The strength of the university depends on academic and personal integrity. In this course, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.

  1. Do not cheat. 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. If you witness any violations, please report them to the instructor. You may consult the associate dean of student conduct (or designee) by calling the Office of the Dean of Students at 410-516-8208 or via email at integrity@jhu.edu. You can find more information about university misconduct policies on the web at these sites:
  2. 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.
  3. The specific policies for the project assignments are as follows.
    • Never copy project code or text found on the Internet, e.g., GitHub.
    • Never share code or text on the project. That also means do not make your solutions public on the Internet.
    • Never use other group's code or text in your solutions. This includes code/text from prior years or other institutions.
    • You may read but not copy Linux or BSD source code. You must cite any document or code that inspired your code. As long as you cite what you used, it's not cheating. In the worst case, we deduct points if it undermines the assignment.
    On the other hand, we encourage collaboration in the following form:
    • Explain a concept to another student, or asking another student to explain a concept to you.
    • Discuss algorithms or approaches for an exercise. But you should not exchange, look at, or copy each other's code.
    • Discuss testing strategies and approaches
    • Help someone else debug if they've got stuck. But you should not give that student code solutions.
    The course staff will actively detect possible ethics violations. For each project submission, we will run automated cheating detection tools to check your submission against a comprehensive database of solutions including past and present submissions.

Personal Wellbeing

  • If you are sick please notify me by email so that we can make appropriate accommodations should this affect your ability to attend class, complete assignments, or participate in assessments. The Student Health and Wellness Center is open and operational for primary care needs. If you would like to speak with a medical provider, please call 410-516-8270, and staff will determine an appropriate course of action based on your geographic location, presenting symptoms, and insurance needs. Telemedicine visits are available only to people currently in Maryland. See also https://studentaffairs.jhu.edu/student-life/student-outreach-support/absences-from-class/illness-note-policy

  • The Johns Hopkins COVID-19 Call Center (JHCCC), which can be reached at 833-546-7546 seven days a week from 7 a.m. to 7 p.m., supports all JHU students, faculty, and staff experiencing COVID-19 symptoms. Primarily intended for those currently within driving distance of Baltimore, the JHCCC will evaluate your symptoms, order testing if needed, and conduct contact investigation for those affiliates who test positive. More information on the JHCCC and testing is on the coronavirus information website.

  • All students with disabilities who require accommodations for this course should contact me at their earliest convenience to discuss their specific needs. If you have a documented disability, you must be registered with the JHU Office for Student Disability Services (385 Garland Hall; 410-516-4720; http://web.jhu.edu/disabilities/) to receive accommodations.

  • Students who are struggling with anxiety, stress, depression or other mental health related concerns, please consider connecting with resources through the JHU Counseling Center. The Counseling Center will be providing services remotely to protect the health of students, staff, and communities. Please reach out to get connected and learn about service options based on where you are living this fall at 410-516-8278 and online at http://studentaffairs.jhu.edu/counselingcenter/.

  • Student Outreach & Support will be fully operational (virtually) to help support students. Students can self-refer or refer a friend who may need extra support or help getting connected to resources. To connect with SOS, please email deanofstudents@jhu.edu, call 410-516-7857, or students can schedule to meet with a Case Manager by visiting the Student Outreach & Support website and follow “Schedule an Appointment”.

Classroom Climate

As your instructor, I am committed to creating a classroom environment that values the diversity of experiences and perspectives that all students bring. Everyone here has the right to be treated with dignity and respect. I believe fostering an inclusive climate is important because research and my experience show that students who interact with peers who are different from themselves learn new things and experience tangible educational outcomes. Please join me in creating a welcoming and vibrant classroom climate. Note that you should expect to be challenged intellectually by me, the TAs, and your peers, and at times this may feel uncomfortable. Indeed, it can be helpful to be pushed sometimes in order to learn and grow. But at no time in this learning process should someone be singled out or treated unequally on the basis of any seen or unseen part of their identity.

If you ever have concerns in this course about harassment, discrimination, or any unequal treatment, or if you seek accommodations or resources, I invite you to share directly with me or the TAs. I promise that we will take your communication seriously and to seek mutually acceptable resolutions and accommodations. Reporting will never impact your course grade. You may also share concerns with the department chair (Randal Burns, randal@cs.jhu.edu, the Director of Undergraduate Studies (Joanne Selinski, joanne@cs.jhu.edu), the Assistant Dean for Diversity and Inclusion (Darlene Saporu, dsaporu@jhu.edu), or the Office of Institutional Equity (oie@jhu.edu). In handling reports, people will protect your privacy as much as possible, but faculty and staff are required to officially report information for some cases (e.g. sexual harassment).

Family Accommodations Policy

You are welcome to bring a family member to class on occasional days when your responsibilities require it (for example, if emergency child care is unavailable, or for health needs of a relative). Please be sensitive to the classroom environment, and if your family member becomes uncomfortably disruptive, you may leave the classroom and return as needed.

Acknowledgments

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).