Carnegie Mellon
SCS logo
Computer Science Department
home
syllabus
staff
schedule
lecture
projects
homeworks
 
 

15-410 Policies and Mechanisms


About This Document

This document sets forth specific policies and mechanisms for this class. You must also read the companion document on high-level Expectations.

Getting Help

Where to start

Because synthesizing information from multiple sources is one of the learning objectives of this course, if it seems to us that you have overlooked a source of information about a topic we may ask you if you have consulted a certain source and request that you do so if you haven't yet. In general, Q&A sessions with course staff will be most productive if you check beforehand that you have consulted the following information sources:

  • Assigned textbook readings
  • General lecture material
  • Lecture material on a particular project
  • Written handout for a particular project
  • Pebbles kernel specification
  • Technical reference material (Linux "manual pages", Intel hardware documentation, etc.)

When possible, avoid questions along the lines of "I don't get xxxx"; try to ask a question about particular material which you find confusing or a case which you believe is not covered by a particular information source.

Contacting us for help

The class web site is http://www.cs.cmu.edu/~410/.

If you need guidance outside of office hours, you can reach us at staff-410@cs.cmu.edu. If you need to discuss a genuinely confidential issue you should contact the instructor(s) directly. But you should not send e-mail to randomly-selected staff members to ask clarification or guidance questions—if nothing else, you may choose somebody who is sick or out of town.

Please do not send us files via electronic mail. Really! If you want us to look at some of your files, you should put them into a private AFS directory, make sure we can read it, and send us the filename. If you use course-issued AFS space, this is easy, since 410 staff can automatically read that. If you use some other AFS space, you will need to do something like this:

% fs sa . de0u:410staff rl
% fs sa .. de0u:410staff l
% fs sa ../.. de0u:410staff l
Eventually you will be told "permission denied" and then you are probably done.

AFS access control lists

Be sure to store your work in a protected area. Since a new AFS directory inherits its parent's access control list, it is possible to create a directory which inadvertently is public.

AFS problems

Like any other large complicated thing, AFS can have problems. If it happens to you, please start by re-reading About your 15-410 AFS Space--please don't e-mail us a question which is already answered in that document.

Formatting

"Documents" should be submitted in a document interchange/publication format such as PDF or HTML (or, if appropriate, Unix-line-delimited 7-bit ASCII). Microsoft Word, WordPerfect, OpenOffice XML, FrameMaker editable-document format, etc., are not interchange formats. PostScript is really a printer transport language rather than a document interchange format, but it will generally suffice.

Also, if we ask you to use a particular filename for something, please do that. We probably intend to use a program to perform some action (such as printing) on all 100-odd files, and if your file doesn't have the right name maybe the right thing won't happen to it.

Challenges and Hazards

Accommodations for Students with Disabilities

If you have a disability and have an accommodation letter from the Disability Resources office, you are encouraged to discuss your accommodations and needs with the course instructor(s) as early in the semester as possible. We will work with you to plan appropriate accommodations for various situations. If you suspect that you may have a disability and would benefit from accommodations but are not yet registered with the Office of Disability Resources, you are encouraged to contact them at access@andrew.cmu.edu.

Medical issues

If you experience a medical problem which disrupts your studies, please go to University Health Services (or another medical provider). If the situation will disrupt your class participation in a substantial and/or ongoing fashion, please discuss the details of any medically-directed restrictions with Disability Resources and/or your College Liaison in Student Affairs, who can appropriately inform all of your instructors while maintaining the confidentiality of your personal medical information.

Please do not come to the course staff and tell us that you've been too sick to attend class and code for two weeks but that it hasn't "been bad enough" to merit medical attention. If nothing else, it probably has been "bad enough" for your partner.

It is probably best to describe an ongoing medical situation to your College Liaison in Student Affairs and/or Disability Resources and/or your program administrator / advisor instead of to us. This has two benefits to you. First, those people may be better trained to deal with confidential issues than faculty members. Second, they can take care of notifying all of your instructors that there is a problem and, in general terms, what restrictions there will be on your work.

Partner problems

Please try to avoid having partner trouble. Seriously! Share your hopes before they turn into concerns, your concerns before they become problems, and your problems before they inflate into crises.

If you contact us about partner trouble early, there is a reasonable likelihood that we can help resolve the problem. If not, we may be able to provide special treatment which can lessen the negative consequences you experience. However, investigation and intervention take time. If you contact us too late, you will be denying both you and your partner the opportunity to receive help. Please don't do this! While some problems can never be truly solved, it is likely that your career after CMU will require you to "involve management" to address issues with co-workers... if you find yourself in a situation which you can't resolve, this will provide you with an opportunity to practice interacting with management.

One special case to avoid is coming to us a day or two before a major deadline to tell us that your partner has been ill, or otherwise not contributing, for multiple weeks. We, and thus you, have many more options if you inform us while a problem is developing, as opposed to after the fact.

Taking Care of Yourself and Others

Please take care of yourself. Do your best to maintain a healthy lifestyle this semester by eating well, exercising, getting enough sleep, and taking some time to relax. Making those investments will help you achieve your goals and cope with stress.

All of us benefit from support during times of struggle. You are not alone. If you are "stuck" due to a serious problem, and you don't know how to solve it, please ask for advice or support. The process of education inherently calls us outside our "comfort zones", so giving and receiving advice and support is important.

If you, or anybody you know, needs advice or support, please reach out to somebody you trust—a friend, family member, faculty member, program administrator, RA or housefellow, or a professional counselor. CMU's Counseling and Psychological Services (CaPS) is available by phone (412-268-2922) 24 hours a day, seven days a week, year-round. If you're not sure whether a particular problem is "bad enough" for you to call CaPS, please get expert advice on how serious the problem is—by calling them. CaPS is committed to confidentiality. However, if you would prefer to speak with somebody not assocated with CMU, you can call the re:solve Crisis Network at 888-796-8226. If you are faced with a life-threatening emergency, please call the police. The CMU police can be reached at 412-268-2323; if you are off-campus, you can dial 9-1-1 to contact the Allegheny County 9-1-1 emergency center.

If you, or somebody you know, needs advice or support, you can get started with a phone call—or by saying, "Professor, I think I need some advice".

Exams

At CMU, standard operating procedure is that final exams take place after classes end, during a special period of time. Each class is assigned an exam period according to a university-wide procedure which attempts to minimize conflicts.

What this means is that the date and time of the 15-410 final exam will not be decided by the course staff, and we do not know when the university will make the decision (the schedule is posted at approximately the same time every semester, but there is some variation).

It is your responsibility to alert the course staff to any exam conflicts. If we haven't heard from you seven days after a 15-410 exam date has been published, we will expect that to mean you do not have a conflict. In any case, notify us as soon as possible.

Collaboration and Group Work

Please remember: our baseline expectation is that you, starting from our problem statements and specifications, will devise your own solutions to the problems and will then implement those solutions with code you write yourselves. In order for your submissions to be eligible for credit, any time you read code from an outside source, you must first ensure you are doing so in a situation permitted by this course syllabus. Also remember that appropriate credit must always be given when the work of another is used. Using the work of another without giving credit will result in university-level academic integrity actions. We will be using code-similarity tools to flag potential instances of improper code sharing for instructor review.

We think a lot can be learned by talking to other students, and, since we're pro-learning, this is generally ok with us. Discussing your data structures, module boundaries, and even the flow through your code is fine. Writing down snippets of code on a whiteboard is also ok (especially if you gesticulate wildly while doing so and use several colors).

However, some sorts of "collaboration", which reduce or impede learning, are not acceptable, such as:

  • "Discussing" code in sufficient detail to fully specify it (see, for example, Jonathan Baccash's BabelBuster C to English to C Translator.
  • Copying or typing in code from other people, or any OS class you might have taken before (if you can meaningfully do the latter, there is a good chance you shouldn't be taking this class for credit). You should also not be reading code produced by other people for OS classes at CMU or elsewhere, or components from "how to write your own mini-OS" kits, tutorials, etc. You should almost certainly not be using Stack Overflow, except to understand compiler/linker error messages.
  • Allowing other people to type in code for you or debug your code.
  • Allowing other people to read your code before it is turned in or before they have turned in their own code. Note that you must keep any network-accessible copies of your code protected (the default settings on many repository-hosting services such as BitBucket, Gitorious, and GitHub are not correct).

In the other direction:

  • You may read books about operating system internals and browse "professional" OS code (e.g., a BSD kernel, the Linux kernel, etc.). When using written reference material or "professional" kernel code, we expect you to study the code thoroughly enough to extract the ideas, set the reference or code aside, and then render the ideas into your own code without referring back to the outside source or to notes, files, or other records derived from the outside source. Your ability to recreate your solution independently will serve as evidence that you understand the work you submit. Copying code or pseudo-code directly, or "transcribing" manually from one written representation to another, are not allowed. We ask that you obey the spirit of this policy, as well as the letter: ensure that all the work you submit is your own and that you fully understand the solution.
  • It's ok to re-use basic code from lower-level CMU classes, if appropriately cited. However, you may not use other code which you did not write without prior permission of the course staff.

Statement on AI assistance

Students who successfully complete this class are expected to have achieved the learning objectives, which describe skills and abilities for individual humans to be personally capable of. The aim is "fluent proficiency" as described by James Shore and Diana Larsen in their article The Agile Fluency Model:

In the Agile Fluency Model, we're most interested in fluent proficiency: a habit of exhibiting the proficiency at all times, even when under pressure. Anyone can follow a set of techniques when given time to focus in a classroom; true fluency is skillful, routine ease that persists when your mind is distracted with other things.

Meanwhile, various forms of AI assistance routinely produce answers which are incorrect, or arguably correct but inappropriate in terms of important expert criteria such as execution time or transactional consistency. For a person to verify that an AI-assisted solution is correct, that person must personally possess proficiency in the relevant skills. Because the purpose of the class is developing personal fluent proficiency, and some forms of AI assistance undermine the development of personal fluent proficiency, some forms of AI assistance are not permitted for this class.

  • It is forbidden to ask an AI assistant to write or find code for you that meets some description. This includes conversation-style AI assistants (e.g., ChatGPT), IDE plug-ins that will convert a code description (such as a comment) into code, and also IDE plug-ins that attempt to intuit what you're trying to write and suggest code that you might want to write (e.g., CoPilot). If you are using VS Code for this class, you must ensure CoPilot is disabled when you are working on code for this class (and, no matter what you are using, you must ensure anything similar to CoPilot is disabled).

  • It is forbidden to ask an AI assistant to provide you with an outline or approach for writing code to solve a described problem, to ask an AI assistant for a summary of how people typically solve a problem, etc.

  • It is forbidden to ask an AI assistant to find a bug for you in code that you have written.

  • We recommend that you do not use an AI assistant to explain the operation of a system call or a hardware feature. We have provided you with resources and references that we believe are accurate and appropriate, such as textbooks and official manufacturer hardware reference materials. Information on the Internet is often inaccurate, out of date, or otherwise misleading. Thus it is quite possible for an AI assistant trained on low-quality information to provide you with low-quality advice. One particular issue is that system-call documentation found online applies to a wide variety of operating system kernels and revisions, and thus the probability of inaccurate information being returned by a web search is very high. Meanwhile, documentation shipped with a particular OS platform has a much higher likelihood of accurately documenting the behavior of that platform.

  • If you believe it will improve the learning derived from the reading assignment, you are authorized to use one or more AI assistants to provide you with reviews of potential readings, subject to these limitations:

    1. Each AI-assisted review must be limited to 200 words.
    2. All AI-assisted reviews of potential readings must be obtained within a single 24-hour period.
    3. At the conclusion of that 24-hour period you must delete all of the AI-assisted review material.
    4. After the conclusion of the 24-hour period, you must wait at least 48 hours before beginning the reading that you chose.
    5. If you employ any AI assistance in the course of the reading assignment, your submission must indicate which programs/services you used, and which you found valuable.
  • Note that you are completely authorized to use the Communication Support services of the Student Academic Success Center. It is also fine to use an AI assistant (including an LLM such as ChatGPT) to help you write your README.dox files (if you do so, document which one you used). Finally, it is ok to use sentence-level style assistants such as Grammarly.

Please promptly share any questions or concerns about this AI-assistance policy with the course staff.

Statement on non-CMU "online tutoring" networks

As a particular issue that has arisen in other CMU classes recently, we firmly believe that there is no legitimate reason for OS students to use Chegg for anything related to the class. (We also suspect that Chegg has no legitimate use for any CMU student.) If you believe Chegg can be used to genuinely support your learning in any CMU class, we strongly encourage you to discuss this belief with your academic advisor—beforehand. Further, if you believe Chegg can be used as part of your OS experience in a way that is compliant with the class policies, you must discuss this with a member of the course staff—beforehand.

Social Media Statement

If you are working on a project designated by the course staff as a partner project, you may "communicate in detail" (including but not limited to: problems, techniques, solutions, test code) using electronic media (including but not limited to: e-mail, Zephyr, IRC, ICQ, MySpace, Vine, Facebook, Facebook Messenger, QQ, WeChat, Google Hangouts, iMessage, Twitter, Reddit, Instagram, Tumblr, WhatsApp, TikTok, Signal, Telegram, Yo, Slack, GitHub, BitBucket) with only your project partner. If you are working on an individual project, you should not be "communicating in detail" about the project using message-based/social-media tools with anybody.

Any "communications in detail" with current students, former students, plausible future students, etc., about an individual project, or about a partner project with somebody other than your partner, must be in-person, meaning that your physical person must be in the same physical space as the party you are communicating with at the same time, and you must be within earshot and mutually visible.

As an exception, you may electronically share details about past individual projects with your partner while working on a project designated as a partner project (e.g., you and your P3 partner may merge your P1 driver code).

As another exception, you may communicate electronically via an audio/video-conferencing tool, such as Zoom, as long as such conferences are not recorded, do not involve more than three participants at a time, and do not result in permanent records (saved white-board contents, screen shots of white-board contents, chat logs, etc.).

General Considerations

If you think you have encountered a gray area, please contact the course staff before making a decision.

You should have a reasonable understanding of all code your group turns in, even parts you didn't write. One easy way to think about this is that exam questions which assume understanding of project components are fair game. Also, while we hope this will be a rare occurence, we we reserve the right to assign partners different grades for a project.

Homework assignments are individual. Your model should be that you can talk about the problems, but then you must erase the whiteboard or shred the napkin, retreat to your cave, and write them up yourself.

Please submit test code to us for analysis and feedback rather than sharing it with your classmates (if we distribute code you provide to fellow students, you will be credited).

If you question the legality of any type of collaboration or consultation, please ask a member of the course staff as soon as possible. If you are in a real bind, do what feels right and discuss the issue with a staffer as soon as is possible. If you discuss the issue with us before you turn in your solution or document it as part of your solution, it will not be considered to be academic dishonesty (of course, it might not qualify for full credit, either).

In order to deter and detect plagiarism, online tools and other resources are used in this class. In particular, you should be aware that there are several sophisticated code-similarity analysis tools based on machine-learning techniques. Fooling them is possible, but it is not easy. We expect and require that instead of spending effort on evading detection you will work hard on solving problems yourself.

Please note that the default outcome for any academic integrity violation is a failing course grade for the semester; the violation will be reported to your home academic unit and the Office of Community Standards and Integrity. Please don't get involved in this—it costs everybody enormous amounts of time during which nothing can be learned about operating systems. If you are having trouble with one assignment but struggle within the rules, you might end up with a failing grade for that assignment, but you may well be able to pass the course, or drop and take it again later. Willfully violating the policies of the course, on the other hand, threatens your opportunity to ever pass the course. Also note that repeated or sufficiently egregious violations of academic integrity standards may result in penalties more severe than failing this class, such as permanent separation from the university.

Distribution of Coursework Solutions And Other Materials

As a condition of your participation in the course, you must not make publicly available, or distribute to others, code you write to solve problems posed by course assignments, either while you are taking the class or later..

For example, do not include solutions to course assignments in a public "portfolio" on the Web. You may provide code samples directly to a prospective employer (assuming the employer in question isn't a CMU student...). When doing so, we prefer that you provide code in PDF form (via "make print").

You must not export lecture materials, project handouts, project starter code, etc., to public web sites or "study support" web sites (e.g., CourseHero, Chegg).

Actions such as these, which impair the learning of others, may incur the same sorts of penalties that misconduct within the class would, such as a low grade on your transcript, which won't be avoidable by dropping the class.

Please note that your responsibilities in this area do not end once your participation in the class ends, i.e., you are required to not impair the learning of future students even after you are done with the class and even after you have graduated.

Working Alone on "Group" Projects

While it is possible to complete the major programming projects while working alone, that is not the best approach for most students. If you intend to work alone, you must obtain permission from the instructor(s).

Grades

Auditing

Please see the "Audit Grades" section of the University's Grading Policies document. Students auditing a class are required to to commit to some level of participation, and to meet that commitment in order to receive an audit grade at the end of the semester. Requests to audit this class must come via a student's advisor and are only rarely approved.

Documentation

Documentation will be a component of your course grades. The exact percentage may vary from one assignment to the next, and may be adjusted in response to class performance, but your model should probably be that documentation will be worth approximately 5% of each programming assignment.

Appeals

In general we will have a "7 CMU business day" deadline on grade appeals. That is not to say that we will never engage in grading archaeology, but we believe we can obtain a greater degree of consistency inside a smaller time window.

Weights and Grade Assignments

The weights used to assign final grades will depend on how the semester develops. In particular, if we can have normal in-person mid-term and final exams, the weights will be different than if we are forced to hold one or both exams remotely.


Here is the plan for a typical semester:

WeightItem
5%Zeroth Programming Project
5%First Programming Project
15%Second Programming Project
25%Third Programming Project
5%Fourth Programming Project
15%Midterm Exam
20%Final Exam
10%Homeworks (~3) and book report

It is possible that the weight of the kernel project might be increased somewhat, probably at the expense of the homeworks.

In semesters severely affected by the COVID-19 pandemic, adjustments have been made. For example, the S'21 weights were:

WeightItem
6%Zeroth Programming Project
10%First Programming Project
20%Second Programming Project
34%Third Programming Project
5%Fourth Programming Project
12%Joint exam score
4%Homework 1
2%Homework 2
7%Book Report

The S'21 "joint exam score" was the maximum of a student's mid-term exam and final-exam scores.

Regardless of assignment weights, your weighted project average and weighted exam average must each be a passing grade in order to pass the course.

Cutoff points for grades will be set by the course staff based on an examination of the quality of the work turned in by students near the border. Likewise, individual students, especially those near a cutoff, may receive adjustments upward or downward based on factors such as quality improvement, final exam scores, dramatic differences between partners, or other circumstances relevant to the estimation of the staff of which grade best represents the student's work.

Finally, while we do our best to specify our expectations in advance, grade assignment is at the discretion of the course instructor.

Policy on Late Work

Here is a somewhat traditional OS policy on late work:
Each student may grant himself or herself an extension on any homework assignment or project deadline/checkpoint—but only three (3) days worth of extensions are available during the course of the semester under this policy. Possible configurations include turning in three projects one day late apiece, turning in each homework assignment one day late, etc.
If a team wishes an extension under this policy, the number of days available is the minimum of the number of days that each member has available. Because this might become an issue if you switch partners, it is probably unwise to use up too many late days on the earlier assignments.

Please understand that the use of extensions may, perhaps severely, delay the grading of your assignment. This isn't intended as punishment, it is just the natural consequence of the need to have all of the staff assembled to fairly assign grades. We'll do our best to be timely, but once extensions are injected into the system, this can sometimes become difficult.

We encourage you to reserve extensions for the inevitable: minor illnesses, conferences, University trips, bad karma, &c. But you are free to use them for any reason that you'd like. Just please remember that you have only a small fixed number of extensions.

Extensions beyond the standard quota will be granted only for extremely unusual, extremely unforeseeable, and/or extremely incapacitating circumstances. Any "extra extension" granted will require a formal request from your academic advisor or program administrator. Due to the need for sign-off from your program, you should probably contact the advisor/administrator in your program before contacting us, or at least at the same time. These situations might end up affecting your grade, and it is possible that you would be required to take an incomplete grade.

To grant yourself a one-day extension under this policy, use the late-day registration form. Please do so by 00:30 (thirty minutes after the deadline) if possible. Assuming your message is received, the next morning somebody will unlock your hand-in directory so you can again save your work. You may grant yourself multiple one-day extensions for a single project if that turns out to be necessary. Each time you file for a late day, make sure you have submitted your best work so far into your hand-in directory.

A note on the Simics license

Your use of the Simics simulation software takes place under a software license. Before using Simics for anything other than 15-410 class assignments, please see the instructor to ensure that your planned activities are in accordance with CMU's license.

Recording of lectures

No student may record or tape any classroom activity without the express written consent of the instructor(s). Students seeking permission to record or tape classroom activities should contact staff-410@cs.cmu.edu, or the Office of Disability Resources, as appropriate.

If and when lecture recordings are provided to enrolled students, they may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the instructor(s). This includes retention, in any form, after the end of the semester. If a special circumstance requires some other delivery approach, please contact the instructor(s) to discuss options.

Reminder About This Document

This document sets forth specific policies and mechanisms for this class. You must also read the companion document on high-level Expectations.

Acknowledgements

Ideas (and even some text) were stolen from Greg Kesden's 15-412 syllabus, Randy Bryant & Hui Zhang's 15-441 syllabus, and Bob Harper's 15-312 syllabus.


[Last modified Wednesday January 17, 2024]