Latest Announcements

12/08: Lecture 22 is uploaded
12/02: Lecture 21 is uploaded; homework 4 and 5 are posted
12/01: Our alumna Suyi Liu (@Netflix) will give a guest lecture
11/19: Lecture 19 is uploaded
11/17: Lecture 18 is uploaded
11/10: Lecture 17 is uploaded
11/03: Lecture 16 is uploaded
10/29: Lecture 15 is uploaded
10/20: Lecture 14 is uploaded
10/15: Lecture 13 is uploaded
10/13: Lecture 12 is uploaded
10/05: Lecture 11 is uploaded
10/01: Lecture 10 is uploaded
09/29: Lecture 9 is uploaded, Homework 3 is posted
09/24: Lecture 8 is uploaded
09/22: Lecture 7 is uploaded, Homework 2 is posted
09/20: Homework 1 is posted
09/17: Lecture 6 is uploaded
09/15: Lecture 5 is uploaded
09/10: Lecture 4 is uploaded
09/08: Lecture 3 is uploaded
09/03: Lecture 2 is uploaded
09/01: Lecture 1 is 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 4-5pm ET (or by appointment), Zoom

TA

Yuzhuo Jing
Email: yzjing ~AT~ jhu ~DOT~ edu
Office Hours: Mon 10-11am, Wed 9-10pm ET, Zoom

CAs

Haoze Wu
Email: haoze ~AT~ jhu ~DOT~ edu
Office Hours: Wed 2-3pm, Fri 2-3pm ET, Zoom

Gongqi Huang
Email: ghuang22 ~AT~ jhu ~DOT~ edu
Office Hours: Tue 10:30-11:30am, Thu 10:30-11:30am ET, Zoom


Stephen Kyranakis
Email: skyrana1 ~AT~ jhu ~DOT~ edu
Office Hours: Mon 9-10am, Thu 9-10am ET, Zoom

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

Meetings

  Note
This year the lectures will be online over Zoom meetings. You can find the meeting link in course's Blackboard → Syllabus section. We suggest you to bookmark that link or put it on your calendar event.
Lecture: Tuesday/Thursday 01:30pm-02:45pm, Zoom meeting
Midterm Exam: October 27, Tuesday 01:30pm-02:45pm
Final Exam: TBD

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: Midterm examination and a final exam

Grading

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

  • Projects: 60%
  • Midterm: 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.

University Policy on Incompletes

The university recognizes that the Fall 2020 semester is surrounded with uncertainty and many students may find themselves in unexpected situations where study is difficult if not impossible. Students who are confronted with extraordinary circumstances that interfere with their ability perform their academic work may request an incomplete grade from the instructor. While approval of such a request is not automatic, it is expected that faculty will make every effort to accommodate students dealing with illness in the family and other pandemic-related hardships. The instructor and student must establish a timetable for submitting the unfinished work with a final deadline no later than the end of the third week of the Spring 2021 semester (February 12, 2021). Exceptions to this deadline require a petition from the instructor to the student’s academic advising office by February 12, 2021. When entering an Incomplete grade in SIS, faculty must include a reversion grade which represents the grade the student will receive if s/he does not complete the missing work by the agreed-upon deadline.

Deadlines for Adding, Dropping and Withdrawing from Courses

Students may add a course up to September 11, 2020. They may drop courses up to October 12, 2020 provided they remain registered for a minimum of 12 credits. Between October 12 and November 13, 2020, a student may withdraw from a course with a W on their academic record. A record of the course will remain on the academic record with a W appearing in the grade column to indicate that the student registered and then withdrew from the course.

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