Contents

What is CS 341, Operating Systems Workshop?

CS 341 surveys the design and implementation of operating systems. The course focuses on key issues in single-computer operating systems as a lens for general system design principles.

Prerequisite: CS 240 or equivalent

Goals

After successfully completing CS 341, you should be able to:

  • Understand foundational concepts in operating system design and implementation and their impacts on applications.
  • Interpret technical literature, critique system designs and their implications, and communicate technical ideas clearly.
  • Reason about and experimentally measure system properties such as performance and reliability.
  • Apply principled systems programming techniques in large projects.
  • Approach further study or research in systems areas.
  • Apply the above skills independently, collaboratively, and confidently.

Topics

The plan is to cover these topics:

  • Basics: operating system (OS) purposes and organization; policy vs. mechanism; limited direct execution, kernel/user separation, system calls; systems programming; system values, reliability, security, performance.
  • Virtualization of computational resources: processes; CPU scheduling; virtual memory; protection and sharing; interprocess communication.
  • Implementation of concurrency: threads; shared memory; synchronization mechanisms; correctness, reliability, and performance concerns; other models.
  • IO and persistence: input/output devices, drivers; storage; file systems.

If time allows, we will increase depth in the above topics or introduce additional breadth with some of these topics

  • Tools for memory/thread safety and reliability; access control and security; hypervisors, virtual machines, containers; other systems topics of interest to students.

Logistics

Role Name, Email Pronouns
Student You + Classmates (ask)
Instructor Ben Wood
benjamin.wood@wellesley.edu
he/him/his

Instructor and Drop-in Hours

I am your instructor, Ben Wood. Please call me “Ben” (he/him/his). If “Professor …” is more comfortable for you, that’s fine too.

Drop-in hours are held by live video meeting with the option to sign up for a time slot in advance or just show up and see if I am free. The drop-in schedule, signups, and Zoom link are here.

Appointments outside regular hours are also available by request. To reach me privately (such as for accommodations or appointments), use email or a private message.

For course questions that may of interest to others or possibly could be answered by others, use the relevant discussion stream. You will likely get an answer faster than if you inquire directly with me. It may even be answered already. More importantly, you are probably not the only one with this question, so sharing it will help others.

Meeting Times

Class meets Monday, Tuesday, Wednesday, and Thursday 8:15pm - 9:30pm Wellesley time by live video.

Communication

Communication for this course will happen on these systems:

  1. Zulip: text announcements, questions, and discussion, organized into streams:

    1. #general: course announcements, logistics updates, any general course questions.
    2. #live: questions during class meetings/drop-ins (instead of Zoom chat).
    3. #readings: questions and discussion about readings.
    4. #projects: questions and discussion about projects.
    5. Private messages to any student or me.
    6. #random: all the rest.

    Zulip messages belong to a topic within a stream. Replying (hit r) to a message puts the reply in the same topic/stream. The 3-level organization allows flexible viewing:

    • Focus a specific topic to view only the messages within that topic.
    • View all messages from all topics in one stream.
    • Zoom out to see everything that’s happening chronologically with All Messages.

    Think of Zulip as partway between Slack (but with more structured and discoverable threading and better long-form messaging) and a forum (but with a more live, conversational feeling).

    Hygiene:

    • Reply (r) to keep your message on topic. You can move a message to a different topic if you put it in the wrong place.
    • Do not post code you have written for a programming project. (Don’t share your solutions.) Feel free to post error messages or other code examples.
    • Use Markdown or LaTeX to format posts for readability.

    This is an experiment. We will see how the stream/topic model works out for our use case.

  2. Zoom: live video meetings, including class time, drop-in hours, and appointments. There is one standing video meeting that is always available for students in the class to use, even outside scheduled activities.

  3. Git repository hosting (info forthcoming): project code, project management, bug reports/issues, code feedback.

Materials

All course materials are freely available online. Individual readings will be linked from relevant topics or projects listed on the calendar on the course website.

We will largely follow one primary textbook (and associated materials):

The most up-to-date version freely available online. We will always link directly to the relevant chapter PDFs. You are also welcome to acquire a physical copy if you prefer.

We will also reference other sources, including:

Feedback

This course is one big experiment in one unprecedented time, so I expect we will need occasional adjustments. I am always open to considering your comments, suggestions, or concerns about the course or how we can make it more welcoming, accessible, or feasible for you. Please get in touch! I would greatly appreciate the chance to hear your experience and work together to improve it.

Course Format and Components

Overall, expect this “Operating Systems Workshop” to be closer to a 6.5-week guided hackathon than a structured lecture-and-problem-set course. The course will place significant value on self-directed and independent learning. We will maintain a schedule of guided topics, with regularly scheduled interactive group exercises and discussion, and extensive team programming projects. Within that framework, you will get plenty of live face-time with me, but your learning will be driven largely by you and your peers. I will be your tour guide, but hopefully not the kind that drives you around town in a stuffy bus while reciting a too-polished routine over the loudspeaker and letting you out to take photos at pre-approved locations. Instead, I plan to hand you a map, compass, and guidebook, then send you off on a series of your own self-directed adventures. I will be around for advice (solicited and otherwise), questions, discussion, demos, and so on, but what you get out of the course will very much depend on what you want to get out of the course and what you put into it. That’s the goal, anyway. Let’s see where we end up!

The primary means of obtaining information in this course are (actually) reading and engaging with other students in discussion and exercises to practice and synthesize the new ideas you pull from readings. We will use class time for three main kinds of activities. A typical week might include:

  • 2-3 topic days that explore new OS ideas
  • 1 paper day for interpreting and discussing technical literature
  • 1-2 build days that focus on programming projects

Some days will mix two themes. Topic and paper days will require significant reading preparation; build days should be low- or no-prep and will either include structured activities to launch or review projects or simply drop-in hours when we are all available.

Goals and Self-Evaluation

While I have some areas and routes in mind and I will provide structure and expectations for the course, the success of your experience and your peers’ experiences in this course will depend on you taking charge of what you want from the course. To that end, during the first week, you will be asked to define a set of personal goals for yourself in the course. At the end of the course, you will self-evaluate your growth toward achieving your personal goals and the course goals. Your self-evaluation will determine a part of your course grade. Stay tuned.

Preparation Before Class Meetings

Before class meetings, you will do a mix of these activities:

  • Topic days: (Actually) read textbook material about new concepts
  • Paper days: Read and respond to a technical research paper.
  • Build days: Read project descriptions.
  • Post or upvote questions, constructive discussion, or answers about readings. Engaging in this pre-class conversation is a key part of preparation:
    • You are expected to engage respectfully and constructively, in a way that welcomes and elevates contributions from all of your classmates.
    • You are expected to make a substantive pre-class contribution (a question, answer, or other discussion) at least once per week.

The goal of these preparation activities is to encounter and begin to understand new ideas. Participation in these preparation steps factors into course grades. Class activities assume genuine engagement with the material ahead of time, but it is not assumed that you have an exhaustive and complete understanding before class.

Activities During Class Meetings

Class activities are designed assuming you have genuinely engaged with the preparation for the day. Many days may include some brief framing, examples, or demos by me, plus an open questions/answer session, focusing on selections from the questions posted before class. Most of the class time will be spent on:

  • Topic days: Small group exercises and discussion activities.
  • Paper days: Student-led discussion of technical research papers.
  • Build days: Group work or live code reviews on programming projects.

Note the absence of conventional lectures (or lecture videos) from this list. We might use these occasionally, but not regularly. The course is largely organized around giving you the opportunity to build independence in approaching technical material, so the modes of instruction are centered around action by you, interacting with your classmates and me, to acquire and synthesize knowledge and skills. Participation in and completion of class activities factors into course grades.

Programming Projects

Programming projects are the major synthesis component of the course. You will put concepts into practice in these projects. Expect to invest signficant effort. Overall expect these projects to be more open and less prescribed or guided than in intro or core courses. They will be less following instructions and more constructing your own largely unconstrained solutions to problems using whatever building blocks are available. As the term progresses, the projects will grow longer, less prescribed, and more open-ended, culminating in a final implementation project entirely of your own design.

Grades and Policies

Grades in the course are derived from these components:

Individual projects and other items will define their own grading criteria.

Update: Somehow none of us noticed during the term that this sums to 90%, not 100%, due to some last-minute adjustment in one part that was not balanced by others. To understand the grade breakdown as a percentage, multiply each of the percentages above by 10/9.

Late Work

Project work is where the majority of your CS 341 learning will occur. You are strongly advised to keep up with deadlines. The course will move quickly, especially on the Term calendar. Falling behind on projects can make the work more difficult.

Sometimes, however, prioritizing completion of a project by the deadline may not be the right personal choice for you. To encourage you to learn from the projects while also affording flexibility when it benefits your health and well-being, you may use either of the following mechanisms to submit late work without penalty:

  1. Self-serve 48-hour late pass: You may delay any project deadline by 48 hours by submitting this late pass notification form before the original deadline. There is no need for any other communication in this case.
    • The form requires a brief summary of progress (e.g., “foobaz working, but stuck debugging frobnicator” or “not started”) and whether you anticipate seeking support (drop-in hours/appointment) for the project (yes/no).
    • If the 48-hour extended deadline falls during a break or weekend, it is automatically moved to the final day of that break or weekend.
  2. Custom extension: If you need to extend an deadline more than 48 hours, or if you did not submit a late pass notification in time, you must contact the instructor with an initial timeline and plan for when and how you will complete the project and report on progress.
    • We will adjust the plan together to make sure it is reasonable. The instructor may ask you to prioritize current work first. If you need custom extensions on multiple projects, the instructor may ask you to check in with your class dean to make sure you are getting the support you need to manage your course load.
    • You are never required to discuss details of your personal circumstances with an instructor to receive an extension, although we are happy to lend an ear. If you choose to share, please note that reporting duties prevent instructors from holding strict confidentiality in all cases.

The above extension mechanisms are subject to the following limitations:

  1. No extension may surpass the last day of Reading Period unless your class dean supports it.
  2. Feedback and grading for work submitted under an extension will be completed as time allows. This may take arbitrarily long, possibly past the end of classes and exams.

Preparation and class activities are generally not subject to these policies, since their timeliness matters for making best use of the associated meeting. However, grading of these components is built with leeway for the assumption that you might occasionally miss out on preparation or class activities. If participation is regularly an issue, please get in touch about accommodations.

Honor Code

The Wellesley Honor Code applies to CS 341, including through CS 341-specific policies for acceptable resources (collaboration, assistance, and reference) in course work. The general spirit of these policies should not be surprising, but the details are key to boosting the quality of your learning and maintaining a fair and rigorous academic environment for you and your classmates. If in doubt about details, please ask for clarification ahead of time. Violations of these policies are handled through the appropriate Honor Code charge or resolution processes.

In summary, any submitted work must be your own (or that of your team). Each type of work has different definitions of acceptable resources to use:

  • Class exercises help you cement the basics and learn relevant tools, so they permit relatively broad resources.
  • Projects support deeper learning and independence, so they require that your submitted work be your own and restrict acceptable resources.

General Definitions

Team Policy

Each graded assignment follows one of two team policies.

  • The individual policy requires individual students to prepare and submit their own solutions.
  • The group policy allows multiple students (up to a given limit) to prepare and submit a single joint solution.
    • Individuals may opt to complete an individual submission on group assignments unless groups are explicitly required.
    • Team members choosing a group submission must contribute in similar measure.
    • If it becomes necessary to split a group, the partners must coordinate with the instructor to document what work was completed together.

Individual Paper Responses

  • You may discuss high-level ideas with other individuals, provided you cite them.
  • You may provide and use assistance or reference in accordance with the above policies without further restriction unless otherwise noted on the assignment.
  • You must prepare your own responses alone.

Group Class Exercises

  • You are expected to collaborate with your group to complete the class exercises.
  • You may discuss high-level ideas or strategies with other teams.
  • You may provide and use assistance or reference in accordance with the above policies without further restriction unless otherwise noted on the assignment.
  • You must complete a substantial part of the work in real-time pair-programming style.

Projects

  • All parts of the general graded assignment policy apply.
  • Collaboration:
    • You must not communicate detailed algorithms, implementations, code, formulae, or other detailed solution steps with other teams.
    • You must not, under any circumstances, view, share, prepare, or accept written solutions or assignment code outside your team.
    • You may discuss high-level ideas or strategies with other teams in small groups.
  • Assistance:
    • You may accept help from course staff to locate errors, interpret error messages, and correct errors of syntax.
    • You may accept help from other CS 341 Fall 2020 T2 students to interpret error messages, subject to the above policy on viewing code.
  • Reference, on all parts:
    • You may consult course material from CS 341 Fall 2020 T2 and external documentation of required tools.
    • You may consult external reference resources for general concepts and techniques, provided you cite them.
    • You must not consult solutions to this or any similar assignment.
    • Code reuse and adaptation:
      • You may reuse and adapt provided starter code in your solution without restriction.
      • You may reuse and adapt code from other course materials only with prior written approval from the instructor and explicit attribution of the source.
      • You must not reuse or adapt any other code.
  • Teamwork
    • Teams are permitted relative flexibility in how you share work, but all team members should be able explain the general workings of all parts of the submission.

After the course: Some students students may wish to include work from CS 341 in portfolios, resumes, etc. Please do not post code from standard assignments publicly (including on GitHub, GitLab, Bitbucket, your own website, etc.), but feel free to show your code privately to potential employers or others who are not students. (Do not make your code accessible or viewable by current or future CS 341 students or students of other courses that share these materials.) For your open final project, you are welcome to post publicly, provided it does not follow a standard project from another course.

Rules of thumb for collaborating outside your team

You are welcome to discuss high-level ideas and strategies with other teams, as allowed by the policy above. If taking notes on these discussions, keep your notes general (no verbatim copies, photographs, detailed descriptions).

  • Wait at least 30 minutes after discussions outside your team before writing your responses or solutions. This helps you know whether you actually understand the ideas (and their derivation) yourself.
  • If writing your response or solution is effectively making a verbatim copy of – or following a set of explicit directions in – your notes from discussion with others, then your notes or your discussion are too detailed.

Accommodations

Accessibility and Disability

If you have a disability or condition, either long-term or temporary, and need reasonable academic adjustments in this course, please contact Disability Services to get a letter outlining your accommodation needs, and submit that letter to me. You should request accommodations as early as possible during the course, or before the course begins, since some situations can require significant time for review and accommodation design. If you need immediate accommodations, please arrange an appointment with me as soon as possible. If you are unsure but suspect you may have an undocumented need for accommodations, you are encouraged to contact Disability Services. They can provide assistance including screening and referral for assessments. Disability Services can be reached at disabilityservices@wellesley.edu, at 781-283-2434, by scheduling an appointment online at their website https://www.wellesley.edu/disability.

Religious Observance

Students whose religious observances conflict with scheduled course events should contact the instructors in advance to discuss alternative arrangements. You may do this through the Wellesley College Religious Observance Notification system if you prefer.

2020 Circumstances

For many, 2020 has been a tougher and more unpredictable year than usual. Please be in touch if you are concerned about the impact of your circumstances on your ability to participate in CS 341 beyond the levels supported by the late policy. I will work with you to determine a reasonable approach for you and CS 341.

Policies on Discrimination, Harassment, and Sexual Misconduct

Wellesley College considers diversity essential to educational excellence, and we are committed to being a community in which each member thrives. The College does not allow discrimination or harassment based on race, color, sex, gender identity or expression, sexual orientation, ethnic or national origin or ancestry, physical or mental disability, pregnancy or any other protected status under applicable local, state or federal law.

If you or someone you know has experienced discrimination or harassment, support is available to you:

  • Confidential reporting: Students can report their experiences to Health Services (781.283.2810); Stone Center Counseling Service (781.283.2839); or Religious and Spiritual Life (781.283.2685). These offices are not required to report allegations of sexual misconduct to the College.

  • Non-confidential reporting:

    • You can let either of your CS 341 instructors know. As faculty members, we are obligated to report allegations of sex-based discrimination to the Nondiscrimination/Title IX Office.
    • You can report directly to the Nondiscrimination/Title IX Office (781.283.2451) to receive support, and to learn more about your options for a response by the College or about reporting to a different institution.
    • You can report to the Wellesley College Police Department (Emergency: 781.283.5555, Non-emergency: 781.283.2121) if you believe a crime has been committed, or if there is an immediate safety risk.