General Information

Catalog description // Communication // Grading // Labs // Text books // Homework // Collaboration // Class meetings // Staff // Office hours Miscellaneous

HMC catalog description

Prereq./Coreq.: CS 105

Design and implementation of operating systems, including processes, memory management, synchronization, scheduling, protection, filesystems, and I/O. These concepts are used to illustrate wider concepts in the design of other large software systems, including simplicity; efficiency; event-driven programming; abstraction design; client-server architecture; mechanism vs. policy; orthogonality; naming and binding; static vs. dynamic, space vs. time, and other tradeoffs; optimization; caching; and managing large codebases. Group projects provide experience in working with and extending a real operating system.

Communication

We will distribute assignments on the course web site, and make all announcements through Piazza. The course web site has the schedule for the term. There is a Sakai site which will be used for gradebook, assessments, and Zoom links.

Organization

This class is organized as a flipped classroom. Lectures are prerecorded, and students watch them before the class meeting. Classroom time is used for in-class activities and for answering questions about the Lectures.

There is a large focus in this class on hands-on development of an operating system, organized into 9 separate labs. Our meetings on Wednesdays from 6-8 PM will be a time for me to work with you on your labs.

Note that there are two sections of this class. Each has separate classroom time, but both share a single lab time.

Learning Objectives

I've identified 21 Learning Objective bundles for this class (Learning Objectives). For each bundle, there is an assessment: a quiz that identifies whether you've met the learning objectives in the bundle. The assessment is closed-book, closed-note. You demonstrate mastery over the objective bundle by getting 100% on the assessment.

The assessments can be taken starting on Thursday of the week that the material is covered in the schedule. If you don't succeed in getting 100% on the assessment, you can retake the assessment starting on Thursday the following week. Note that you'll need to request to retake by filling out this retake request form. (NOTE: As of 9/9/20, no need to fill out the form.) The assessment questions are drawn from a random pool, so each attempt may be different.

Thus, you can retake an assessment as many times as you need (although at most once per week).

Please feel free to come to office hours or to ask questions on Piazza to prepare for an initial assessment, or a retake.

The three hours reserved for the final exam will be used as a final assessment opportunity. You can retake any assessments you'd like during that three-hour window.

Labs

A large part of the learning in this class occurs while working on the labs. Your understanding of an OS will deepen as you actually implement features like virtual memory, environments (processes), forking, file systems, device drivers, etc.

The labs take a small OS (called JOS) and, through nine different labs that build one upon the next, grow it to a fairly capable OS. (See the Labs tab in the toolbar at the top of this page.)

Labs are worked on in teams of up to 2. Teams are your choice, and your partner need not be in the same section of the class.

Labs are assessed in the following way: an autograder (which you can run on your own) assesses points for a various lab. Once the autograder shows that your solution has achieved all the available points, you may submit the code. The code submittal process is very similar to the process that's found in industry:

Thus, a lab is not finished until it is corect and complete.

Although you may begin coding the next lab while the previous lab is out for review, you may not submit the next lab for review until the previous lab has been approved. (I'll show you techniques for using Git to integrate changes made to the previous lab due to its code review into the next lab you've already started work on).

It's up to you how many labs you complete (which has a direct effect on your final grade).

We'll have a 2-hour scheduled lab from 6-8 PM on Wednesdays whose purpose is to help you with your labs. Each team will be in a Zoom breakout room and I'll visit room to room helping each team.

Labs are time-consuming (and, at times frustrating). However, I guarantee you'll learn a lot, and that many of you will get quite a bit of enjoyment and satisfaction from their completion.

It is important to me that each member of the team understand the entirety of the code that is submitted. Thus, for each submittal, I'll meet with the team and ask questions about the submittal to ensure each member of the team completely understands what has been submitted. If there's a lack of understanding, we'll schedule further meetings as needed.

There are no intermediate due dates for the labs There is a final due date: all code reviews will stop at 8AM, PDT, Monday, Nov. 30, so no labs will be approved after that time.

Although there are no explicit intermediate due dates, don't expect to be able to wait until late in the semester, and still be able to finish all the labs. One large constraint is the code review process. I'll get responses back to you within 48 business hours, but the number of cycles of review before the lab is accepted is potentially unbounded.

I'm available to answer questions about labs and look over your code during office hours. Please feel free to post questions (and answer other's questions) about the labs on Piazza. Although you can discuss code, don't provide solution code (in either your questions or in your answers). One-line code snippets are fine, as is discussion about any problems you are having. So, don't paste in your several lines of code that attempt to solve an exercise in the lab and ask what's wrong with the code. However, you may describe what your code is doing and ask questions about that.

Grading policy

Your course grade is determined by the quality and quantity of the work that you submit in the class that is judged to be of an acceptable level of quality. The following table shows what is required for each grade. Note that a grade requires all of the given requirements. For example, a B requires completing Labs 1-8 and 6 Lab challenge problems and18 completed learning targets.

Grade Lab RequirementLab Challenge problems
(no more than 2 per lab)
Number of satisfactorily
completed learning targets
A Labs 1-9 ≥8 ≥20
A- Labs 1-9 ≥6 ≥20
B+ Labs 1-8 ≥6 ≥19
B Labs 1-8 ≥6 ≥18
B- Labs 1-8 ≥4 ≥18
C+ Labs 1-7 ≥4 ≥17
C Labs 1-7 ≥4 ≥15
C- Labs 1-7 ≥2 ≥15
D+ Labs 1-5 ≥0 ≥14
D Labs 1-5 ≥0 ≥13

Textbooks

CS 134 relies on the following three books:

In addition, the class relies on tons of reference material on x86 instructions, PC hardware specs, etc. All that material is available on the reference page.

Collaboration

  1. All students enrolled in this course are bound by the HMC Honor Code. More information on the HMC Honor Code can be found in the HMC Student Handbook.
  2. It is your responsibility to determine whether your actions adhere to the HMC Honor Code. If this document does not clarify the legitimacy of a particular action, you should contact the course instructor and request clarification.
  3. Work you submit for individual assignments should be your own, and you should complete all assignments based on your own understanding of the underlying material. If you work with, or receive help from, another individual on an assignment, provide a written acknowledgement in complete sentences that includes the person's name and the nature of the help.
  4. When you submit a group lab, the group should complete the lab based on your group's understanding of the underlying material. If your group works with, or receives help from another individual or group on an lab, provide a written acknowledgement in complete sentences that includes the person's name and the nature of the help. The submitted lab should be based on joint work among all members of the group, and all group members should understand the entire lab and submittal. If one or more members of the group did not participate in a lab, provide an explanatory statement as part of the submission.
  5. This document is not meant to be an exhaustive list of every possible Honor Code violation. Infractions not explicitly mentioned here may still violate the Honor Code.
  6. Boundaries of Collaboration: verbal collaboration with other students on labs is encouraged. However, all submitted written work should be written by yourself individually, and not a collaborative effort or copied from a common source (e.g., a chalkboard).
  7. Use of Web Resources: the use of Internet resources to aid in course work is acceptable, as long it does not substitute for an understanding of the course material. Plagiarism and direct copying from online (or any other) sources is strictly prohibited. However, you may not look at source code for labs from the internet or from other students.
  8. Use of Your Own Work from Previous Semesters: if you have previously attempted this course, you may refer to your work from previous semesters, but may not resubmit it as this semester's coursework.
  9. Use of Other Course Resources from Previous Semesters: You may not reference assignments of this course from previous semesters or tests from previous semesters (other than those explicitly provided by the instructor as study aids).
  10. Retention of Course Resources: assignments and exams from this course may not be committed to dorm repositories or otherwise used to help future students.

    Do not post your lab solutions on publicly accessible web sites (such as a public repository on GitHub).

    Class meetings

    Class sessions will be held on Monday and Wednesday:

    • Section 1: 12:45pm to 2:00pm (PDT).
    • Section 1: 2:30pm to 3:45pm (PDT).
    Zoom links for class sessions can be found on the Sakai calendar. Please attend class with:
    • A laptop/computer/tablet from which you can SSH into knuth. We'll be doing quite a few programing exercises in class that require access to knuth.
    • Be prepared to share your screen, either with other students with whom you'll collaborate, or with me to provide assistance,.
    • A camera (with video on, if at all possible)
    • A microphone (off, to begin with)

    A lab is also scheduled for this class on Wednesdays from 6pm to 8pm (PDT). I'll be present during lab hours, available to answer lab questions. Zoom links for class sessions can be found on the Sakai calendar.

    • The first week of lab, we'll have a relatively short initial in-lab exercise to get started learning branches and git. For the rest of that week and all subsequent weeks, it'll all be about working on your labs.
    • We'll usually quickly break out into 1 team per breakout room.
    • Be prepared to share your screen. That's how you'll share your screen with your teammate, and how you'll share your screen with me.
    • If you have a question for me, add your breakout room number to the queue. I'll move through the breakout rooms answering questions to those in the queue. If the queue is empty, I'll join a random breakout room to see what a team is doing. (I'll be virtually walking through the lab looking over your shoulders).
      • I may just watch and listen
      • I may ask leading questions:)
      • I may give advice
      • I may just stick around for a a short while, and then move on to another breakout room.

    Staff

    Professor
    Neil Rhodes

    Piazza
    We'll use Piazza for questions. Use private posts to me only for specific code examples or personal issues—instead, prefer public posts so everyone can share in the question and answer, and so that other students can answer as well.

    Office hours

    Office hours will be used for:
    • Any questions you have about lectures, in-class assignments
    • Questions about Learning Objectives or Assessments
    • Questions/problems with your lab (be prepared to share your screen in order to show me code)
    • Oral Q&A discussing lab submissions with all team members
    • Anything else you wish to discuss with me
    I have several hours of Office Hours each week, broken up into 15-minute slots. You can reserve a 15-minute appointment in my Google Calendar appointment page. Notes:
    • If you can't make a time slot you've reserved, please cancel that time slot as soon as you can. That'll allow other students to use the spot.
    • The appointment contains the zoom link to use for the appointment.
    • If a team needs to meet, have one student book the slot and both join the zoom call
    • If you're in office hours, and the slot time ends, then if nobody has the next slot you can spill over into the next slot
    • If no more time slots are available in a week, please post a message to Piazza, and I'll see about opening up some more slots for that week.
  11. The zoom link is in the appointment.

    Misc

    If you need accommodations for a documented disability, please talk to me or contact Brandon Ice, the HMC Student Accommodation Advisor (bice@hmc.edu). You will find information about disability resources on the college website: https://www.hmc.edu/ability. Students from the other Claremont Colleges should contact their home college';s disability officer. If I learn of a potential violation of the college's gender-based misconduct policy (see https://www.hmc.edu/tix), I am required to report it to Leslie Hughes, the HMC Title IX Coordinator. If you want to speak to someone confidentially, the following resources are available on and off campus: the EmPOWER Center (909-607-2689), the Monsour Counseling Center (909-621-8202), and the McAlister Chaplains (909-621-8685).

    Accessibility

    HMC https://www.hmc.edu/website-accessibility/
    This is derivative work based on MIT 6.828 used under Creative Commons License.

    Creative Commons License Top // CS 134 home // Last updated Tue Sep 22 10:15:01 AM PDT 2020