Syllabus

Operating systems is a large area with a long history, so we have a lot of ground to cover in a single semester. Keeping up with the course material will likely require that you spend at least twelve hours a week on course work. Six of those hours will be spent in class, but you should reserve at least six additional hours to read, review, and complete work for the course.

Attendance

Attendance in class is not required, but I encourage you to limit your absences from class as much as possible. If you are sick, please do not attend class. Other absences (academic or professional travel, job interviews, etc.) are also acceptable, but I always appreciate it if you can give me advance notice, especially if you will miss a scheduled lab day.

When you miss class you are responsible for making up any missed topics and in-class work. Notes from class discussions will be posted on the course website, so please complete the assigned reading and review the posted notes after each missed day. If you still have questions after reviewing those materials I would be happy to help during office hours.

If you miss class on a day with an in-class exercise you should complete that exercise on your own. These exercises are not graded, but completing them should help prepare you for an upcoming class topic, assignment, quiz, or lab. If you miss a lab day, please send me an email after the class period and I will assign you to a group to complete the lab; I generally do not group students who miss labs with groups that started during class time, so you will end up working individually or with other students who missed the lab. Work is due at the originally-scheduled time unless we have made alternate arrangements for deadlines.

Readings

Our primary textbook is Operating Systems: Three Easy Pieces, by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. This textbook is available for free online. The textbook page includes information on how to order a printed copy of the book, but this is not required. There will be some supplementary readings, including a few important research papers in systems. All of these readings are linked on the course schedule, and should be available for free. Some readings may require you to log in with your Grinnell account when you are off campus.

If you find additional readings that help you to prepare for class, please share them with me! I will incorporate these into a future offering of the class. I also encourage you to share additional resources with your classmates on Teams.

Participation

Your participation in this course will account for 5% of your final grade. To participate fully in this class, you must:

  • ask and answer questions in a way that furthers the discussion of class topics
  • work collaboriatively with group members during exercises, labs, and the class project

Please remember that collaborative work on labs is part of your grade in this course. One of the skills I expect you to develop in this course is to work well with others on challenging technical problems. Preparing for the technical aspects of this course work is critically important, but engaging respectfully with your fellow students is equally important.

A student who consistently engages with course topics and works well with their groups should expect to receive a 90% on participation. I reserve 100% for students who make exceptional contributions to the class discourse through frequent insightful additions to class discussion, exemplary work as a supportive group member, and other means that are hard to anticipate but go beyond my baseline expectation for students in class. Students who participate in counterproductive ways will earn a lower participation score.

Quizzes

Quizzes will account for 5% of your overall grade in this course. We will have quizzes on most Fridays for the first two thirds of the semester. Quizzes will check your engagement with material from assigned readings and class discussions. A student who keeps up with assigned readings and remains engaged in class discussions should be able to earn an A on quizzes, even if they find labs and assignments challenging.

If you must miss class due to illness, religious observance, academic travel, an athletic event, or any health-related reason you may make up a missed quiz as long as you notify me of your absence before the start of class. Make-up quizzes must be completed within one week of the scheduled quiz date. It may be possible for you to take a quiz before the scheduled day as long as you notify me in advance.

Assignments

Individual assignments will make up 15% of your total grade. These assignments fall into two categories: programming assignments and reading journals. All assignments will be weighted equally, though not all are equally challenging. These assignments are meant to help you prepare for labs and class discussions. Every assignment is listed with a due date and time on the course schedule. You are responsible for submitting each assignment to gradescope by the time it is due. Late assignments will not be accepted.

Programming Assignments

These assignments are intended to help you practice programming skills you will use in labs, and to assess your individual understanding of the course material. I expect everything you submit to be your own work, but you may discuss general concepts and approaches for assignments with other students in the class. You should limit these discussions to conceptual details and general programming challenges. You are welcome to talk about errors, useful functions, and C language quirks with other students, but you may not share your assignment code or rely on another student’s code for an assignment.

Reading Journals

You will need to complete reading journals for several papers we will read in the last few weeks of the semester. Your responses will help me plan the in-class discussion of the papers we read, so do not be surprised if I ask you to repeat a point or question you raised in your journal. Asking questions about papers will earn more points that reciting facts; there is no penalty for failing to understand part of a paper, but a journal that only recites facts about a paper will earn a poor grade. The quality of your writing will have an impact on your grade for reading journals; I expect you to respond clearly in complete sentences and paragraphs with correct spelling and grammar.

Labs

Labs will account for 50% of your grade in this class. Most labs will be weighted equally, but one lab (malloc) will take place over two weeks and will be weighted the same as 1.5 regular labs. Unlike assignments, I will accept labs up to one week late; labs turned in after the deadline will have a 20% penalty.

We will start every lab in class on a scheduled lab day, but you will likely need to spend additional time working on labs with your assigned partners. There will be scheduled lab working days for some labs, in addition to the first lab day. While you may find it convenient to use a personal computer for some work in this class, you are required to use the classroom computers for lab work during class time. This will ensure that all members of your lab group have equal access to the work during class.

Labs are the primary assessment mechanism I use for this course; they give you an opportunity to demonstrate that you have learned key concepts from the class. You must earn a passing grade (at least 70%) on every lab to pass this class. I will check the 70% cutoff before any late penalty is applied. That means you can submit a lab several weeks after a deadline to satisfy the 70% requirement even though a lab turned in that late will not change your overall grade.

I will calculate your grade in such a way that resubmitting a lab never hurts your overall grade in the course. For example, if you submit a lab on time but your work earns only 65%, you will need to resubmit to pass the class. However, if your resubmitted lab earns less than 65% (due to the late penalty or a submission past the late work cutoff) this lab will still contribute a score of 65% to your overall course grade. That means that it is always in your best interest to turn in lab work on time, even if your work may not earn a high enough grade to cross the 70% threshold.

Unless you are given explicit permission to do otherwise, you must work with your assigned group for each lab. While I expect that you understand how to work collaboratively, I have found it is sometimes necessary to clearly state some expectations for group work: I expect every member of your lab group to contribute to the work you submit, and that work must be a product of your collaborative effort. That means you cannot divide the lab into parts and work separately, you cannot allow other members of your lab group to complete the lab for you, and you cannot complete the lab on your own without your group’s involvement.

You are encouraged to use outside resources when completing labs, provided you cite them. Online tutorials and guides, posts on StackOverflow, and AI assistance tools are all acceptable resources. We will spend time in class discussing acceptable usage of these resources, including AI assistance tools. Building on existing code is a valuable skill, and relying on outside sources will not be penalized. However, you may not use an outside source for the majority of your implementation. If your assignment is to implement a shell, you cannot simply submit someone else’s shell implementation, even if you provide a citation. If you find an outside source you would like to use but you are unsure whether that would be acceptable, please ask me before using it.

While I expect the work you submit to be the result of work with your group, you may discuss labs with other groups. You are welcome to discuss conceptual details and programming-related challenges with others, but please do not discuss the code you plan to submit with anyone other than your group. As a general guideline, discussions between groups that take place away from a computer screen are generally acceptable, even if you do end up writing down some small code snippets on a whiteboard or notepad.

Project

Your work on the class project will account for 25% of your final grade. You may complete your project individually, or in a group of your choosing with up to three members. We will begin work on the project in week 11, starting with a proposal for a system that you will implement. The system you build will be up to you, but it must draw on several topics from the course. After completing a project proposal, you will implement your system and present the results of your work at the end of the course. All three components will contribute to your project grade; the proposal is 10% of the project, the presentation is 30%, and the final implementation is 60%.

All project components must be turned in on time unless we arrange alternate deadlines. The project implementation is due at the final cutoff time for work this semester and cannot be extended unless you are approved for an incomplete in the course.

Note that you do not need to complete your entire proposed project to earn a high grade on the project implementation or presentation. I want you to be ambitious with your projects, and I understand that some groups may not be able to produce a working system in the final three weeks of the semester. That is okay. We will discuss the ways that your work will be assessed when we start the project so you understand what you would need to earn a grade you are happy with even for a project that doesn’t go exactly as planned.

Extra Credit

You can earn extra credit in this class by participating in department events during the semester. I will share upcoming department events at the start of class; most events that are eligible for extra credit will be academic in nature, although I may include some additional community events on occasion. For every four eligible events you attend you will earn 1% credit toward your overall grade in this class, up to a limit of 3%. To earn this credit, you must send me an email stating that you attended and participated in the event within 48 hours of your attendance.

Grading

The graded components for this course will contribute to your total grade in the following proportions:

Participation
5%
Quizzes
5%
Assignments
15%
Labs
50%
Project
25%

There will be no curves or competitive grading in this course; every student has an opportunity to earn an A. Your final grade will be determined with the following scale:

A
93–100%
A-
90–93%
B+
87–90%
B
83–87%
B-
80–83%
C+
77–80%
C
70–77%
D
60–70%
F
0–60%

Note that these grade ranges only apply for students who earn at least 70% on every lab in the class. Students with any labs that receive less than 70% (prior to late penalties) will receive a D or F in the course unless they resubmit lab work that earns at least 70% before the end of the semester. See the section on Labs for details on this policy.

You may ask me for your current grade in the class at any point; I will happily give you my best estimate based on the current scale and graded work so far, but these estimates are not guarantees of a specific final grade.

Academic Honesty

I encourage collaboration when it promotes learning. However, it is important for you to understand the course materials and demonstrate your own learning on assignments. As an instructor, I will meet my obligation to bring any work suspected to be in violation of the College’s Academic Honesty Policy to the attention of the Committee on Academic Standing, after which point there is no recourse with me.

You are free to discuss course readings and labs with other students, but copying is not acceptable. You are allowed to discuss labs and assignments with peers in the class, but these discussions should not lead to sharing of code beyond short snippets that aid in a discussion of general programming challenges or high-level approaches to assigned work. work that you submit should be your own, and must acknowledge the contributions of others. When you submit individual work, I expect that work to be the result of your individual effort; likewise, group work should be a product of the collaboritive efforts of your entire group.

Misrepresenting who has contributed to work you submit is a violation of the academic honesty policy, and I will inform the committee on academic standing of any such violation. These cases could result in a zero on the assignment, or in the entire course. If you find that your lab group is not contributing, or if your partner(s) completed a lab without you, please tell me immediately so we can resolve the issue before you submit any work.

AI Assistance Tools

You may use AI assistance tools when you are writing code for this course, provided you use them appropriately. We will discuss the use of these tools in class to build some group understanding of how they can help facilitate learning. For any code you submit, you should be able to explain how it works and why it is written the way it is; that means any outside resource (AI or otherwise) should be just a resource and not a substitute for your own thought process about how to solve a problem. This policy may change if there are significant issues regarding the use of AI tools during the semester.

Citing Assistance from AI Tools

You should be aware that there are major legal questions around these AI systems’ use of code, particularly as it connects to open source licenses that place restrictions on the licensing of derivative works. You can read more about these issues at https://www.plagiarismtoday.com/2021/07/08/github-copilot-and-the-copyright-around-ai/. Your use of copyrighted resources likely constitutes fair use because it is for an educational purpose, so you would not be violating these licenses, with the exception of any requirements they place on citations back to the original work. For this course you should cite the AI assistance tool and the prompt you used to request assistance (if applicable), but you should be aware that the output draws on the work of others in a way that may not be possible to cite appropriately. This may not be acceptable in other courses or in your professional career, but these emerging tools are useful and widespread enough that I want to permit their use in this class provided it does not interfere with your learning.

Accommodations

My goal with this course is to ensure every student has the opportunity to learn and succeed in the class. The subsections below outline the institutional and course policies to support students with disabilies, who need additional support in their learning, or who must miss class for religious observations or preganancy-related conditions.

Students with Disabilities

Grinnell College makes reasonable accommodations for students with documented disabilities. Students with disabilities partner with the Office of Disability Resources to make academic accommodation letters available to faculty via the accommodation portal. To help ensure that your access needs are met, I encourage individual students to approach me so we can have a discussion about your distinctive learning needs and accommodations within the context of this course. If you have not already worked with the Office of Disability Resources and believe you may require academic accommodations for this course, Disability Resources staff can be reached via email at access@grinnell.edu, by phone 641-269-3089, or by stopping by their offices on the first floor of Steiner Hall.

Religious Observances

I encourage students who plan to observe holy days that coincide with class meetings or assignment due dates to consult with me in the first three weeks of classes so that we may reach a mutual understanding of how you can meet the terms of your religious observance and also the requirements for this course.

Academic Support

If you have other needs not addressed above, please let me know soon so that we can work together for the best possible learning environment. In some cases, I will recommend consulting with the Academic Advising staff: http://www.grinnell.edu/about/offices-services/academic-advising. They are an excellent resource for developing strategies for academic success and can connect you with other campus resources. If I notice that you are encountering difficulty, and I have reached out to you and not received a response, or if you have missed multiple class sessions or are not meeting our class objectives repeatedly, I will submit an academic alert via Academic Advising’s SAL portal. This notifies you of my concern, along with the Academic Advising team and your advisor(s), so that they can reach out to you with additional offers of support.

Grinnell College is committed to compliance with Title IX and to supporting the academic success of pregnant and parenting students and students with pregnancy related conditions. If you are a pregnant student, have pregnancy related conditions, or are a parenting student (child under one-year needs documented medical care) who wishes to request reasonable related supportive measures from the College under Title IX, please email the Title IX Coordinator at titleix@grinnell.edu. The Title IX Coordinator will work with Disability Resources and your professors to provide reasonable supportive measures in support of your education while pregnant or as a parent under Title IX.

Getting Help

Office Hours

Please come by during my office hours to discuss course content, get extra assistance, or just talk about how the course is going. My office hours will be posted on the course website and shared via Teams by the time of our first assigned work.

If you cannot make it to regular office hours, email me to schedule an alternate time to meet. Please send at least three possible meeting times if possible so we can quickly find a time that works for both of us.

Direct Communications

I am happy to answer questions by email, but please allow 24 hours for a response (except on weekends, when I may not be able to answer at all). If you have an urgent issue that must be resolved quickly, email is the best way to reach me. If an issues comes up and it cannot wait until the next class period, please include the text “URGENT” at the beginning of your subject line.