Home CS439

CS439: Principles of Computer Systems

Fall 2021

Welcome! This course is an introduction to computer systems software---low-level software abstractions with an emphasis on the connection of these abstractions to underlying computer hardware.

There are three interrelated goals for this course. The first goal is to understand how operating systems and, more generally, computers work. Our goal is to de-mystify the actions of the computer so that you can describe the chain of events that occurs when you hit a key and cause a letter to appear on the screen from the system architecture level to the operating system level to the application level. This is philosophically important, but it is also of practical interest to developers who need to figure out how to make a system do what they want it to do.

The second goal is for you to learn how an OS manages the resources of a computer to better the user experience. We will focus on the core ideas in operating systems: virtual addressing, memory protection, concurrent programming, file systems, and scheduling, to name a few. Often, but not always, such ideas are best explained as abstractions that some software layer (usually the operating system) provides above imperfect hardware to make that hardware usable by programmers and users. The intent is for you to understand such abstractions well enough to be able to synthesize new abstractions when faced with new problems.

Many of the ideas and abstractions that we will cover are relevant not only to OS kernels but also to many large-scale systems. Thus, a third goal of this course is to enhance your ability to understand, design, use, and implement such systems.

During this course, you will have an opportunity to learn a lot of practical information about how programming languages, operating systems, and architectures interact and how to use each effectively. The written and programming assignments are designed to build on and enhance the class material. You will hear the concepts in class (or on video!), read about them in a book, analyze them, and put them in practice in the programming assignments.

Course Information

Course Staff
Alison NormanTeacherans@cs.utexas.edu
Bridget OneillTA brioneill@utexas.edu
Catherine FangTA catherine.fang@utexas.edu
Daniel ChenTA danielmc4102@utexas.edu
Jackie DeansTAjacqueline.deans@utexas.edu
Jesse ZouTA jesseminghaozou@utexas.edu
Joel SiewTA siew.joel@utexas.edu
Keegan FranklinTA keegan.franklin@utexas.edu
Kyle Celaya-AlvarezTA kylecalvarez@utexas.edu
Max RattrayTAmaxrat964@gmail.com
Megan LeTAmeganle@utexas.edu
Sahithi GolkondaTA sahithi.golkonda@utexas.edu
Sej SharmaTA sharmasej@gmail.com

Information about office hours can be found in on the Office Hours page.

Class Information:

Class Meeting Times and Location:
Sections 52810, 52815, 52820: MW 9a-11a
Sections 52825, 52830, 52835: MW 11a-1p

This course will meet both in person and online, depending on what is best for a particular class. When we meet in person, we will be in GDC 1.304. When we meet virtually, the Zoom links may be found in Canvas. Discussion sections will also meet either on Zoom or at their physical location listed in the table below.

A weekly schedule that includes the modality for each class and discussion section will be posted to Canvas. You must attend the section for which you are officially registered, though if you need accommodations around this requirement or an option of asynchronous participation, please let me know.

Some classes or portions of classes may be recorded. Class recordings are reserved only for students in this class for educational purposes and are protected under FERPA. The recordings should not be shared outside the class in any form. Violation of this restriction by a student could lead to Student Misconduct proceedings.

Discussion Section Information

Discussion section participation is evaluated and serves as a portion of how you earn your credit in this class. Please see the Evaluation section for more information.

Section NumberMeeting TimeMeeting Location
52810 (9a class) F 9a-11a SZB 416 or on Zoom
52815 (9a class) F 1p-3p SZB 240 or on Zoom
52820 (9a class) F 3p-5p SZB 240 or on Zoom
52825 (11a class)F 9a-11a GAR 2.112 or on Zoom
52830 (11a class)F 1p-3p SZB 426 or on Zoom
52835 (11a class)F 3p-5p SZB 416 or on Zoom

Students must attend the discussion section for which they are officially registered to receive credit for discussion section. As with classes, discussion sections will either meet online or in-person. When sections are in-person, they will meet in the rooms above. When there are online, Zoom links may be found on Canvas. Discussion section locations each week will be listed in the Canvas weekly guide.

Discussion sections will not be recorded.

Classroom Safety and COVID-19

To help preserve our in person learning environment, the university recommends the following.

Web page
: http://www.cs.utexas.edu/~ans/classes/cs439/index.html
The website is a very important piece of this course and you should familiarize yourself with its content. This syllabus and all other information for the course will be available on the site.

: CS 429 or 429H with a grade of at least C-.

Required Textbooks
Recommended Textbooks

Independent Inquiry Flag
: This course does carry the Independent Inquiry flag. Independent Inquiry courses are designed to engage you in the process of inquiry over the course of a semester, providing you with the opportunity for independent investigation of a question, problem, or project related to your major---in this case, we will be investigating the abstractions related to the operating system.


Canvas: In this online environment, we will be heavily relying on Canvas, UT's Learning Management System. Each week, we'll post to Canvas the topic, assignments, and assessments for that week. Please check Canvas regularly.

Discussion: The class discussion board is on EdStem, which is available in Canvas. You will be automatically added to the discussion board site.

We will post course-related announcements and information on the board. You must read the discussion board at least once per day, and you should post course-related questions and responses there. We hope you will make good use of the discussion group and of TA support when you have technical or administrative questions or problems. If you have read at least 85% of the posts (as recorded by EdStem, so you must read them through your own account) every time we check during the semester, you will earn extra credit on your exam grades (see the Evaluation section for a full explanation). We will check your progress reading Ed Discussion randomly, so make it a habit to read the posts each day.

You are responsible for any and all information posted to Ed Discussion by any of the course staff. We will pin any important announcements to the top of the feed. You are expected to read all announcements within twelve hours of their being posted.

Email to you: In this course, email will be used as a means of communication with students. You are responsible for regularly checking (at least every 24 hours) both your CS email and your email officially registered with UT for class work and announcements. Your CS address may be forwarded to another account (see http://apps.cs.utexas.edu/udb/update/).

Email to the Instructor or TAs: Emails to course staff should begin with "CS439:" in the subject line, followed by a brief description of the purpose of your email. If you follow this rule, we will be better able to address your questions in a timely manner. If you do not, a response to your email may be delayed indefinitely.

Facebook, text message, twitter, calling a mobile phone, or other forms of informal communication: None of these should ever be used to communicate with course staff regarding 439 material. Please give everyone space to have a personal life outside of their presence in this course.


Course Structure
: For the majority of classes, approximately one hour of material will be delivered asynchronously through recordings and other mediums, and the remaining hour will take place synchronously as in-class discussion. Please check each week's module on Canvas for more information. Class material will introduce systems concepts through description and examples. A key component of this course is the active participation of students. While we will lead you through the main concepts and provide you with details relevant for understanding and applying those concepts, you have to provide the "active learning" component. By active learning, we mean you must do things, think about things, ask questions---basically whatever it takes for you to be engaged. The format is informal; questions are welcome all the time. Accommodations will be provided for students who cannot attend class synchronously.

Assignment/Class Schedule
: A schedule of topics, recommended readings, and major assignment distribution and due dates is available online, via the class web page. The schedule page will contain links to assignments. Canvas will contain links topic recordings, weekly milestones, assessments, all assignments, and pdfs of the slides.

The schedule is subject to change, so please check it throughout the semester.

Required Effort
: The workload for this course is heavy. There are five projects, seven or eight problem sets, two exams, and a final.

To maximize your learning, it is essential that you review the topic recordings and participate in the formative assessments prior to each class meeting. The ideas in this course require thinking about and getting used to, which is possible only with multiple exposures to the material. Also, the topics can be difficult---so be patient, as it may take some time for them to "click". Finally, the concepts build on each other, so please stay current---make up any missed classes as soon as possible, and let us know if you are feeling confused.

: Professional conduct is built upon the idea of mutual respect. Such conduct entails (but is not necessarily limited to): Professional conduct is expected in this course. This course does have a Code of Conduct, which you will be required to sign and return to us during one of you early assignments. Failure to follow the Code of Conduct can result in penalties ranging from being banned from office hours to dismissal from the course. Note that the Code of Conduct encompasses treatment of both fellow students and course staff.

Whole-Person Care

I ask that all students work with me to create a welcoming environment that is respectful of all forms of diversity, including the forms singled out in this section: diversity in gender, mental health, religion, ability, parenting status, and outside responsibilities. This section also discusses what to do if you face an emergency during the semester, such as a death in the family, and harassment reporting requirements.

Personal Pronouns
: Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with differences of race, culture, religion, politics, sexual orientation, gender, gender variance, and nationalities. Class rosters are provided to the instructor with the student's legal name, unless they have added a "preferred name" with the Gender and Sexuality Center (http://diversity.utexas.edu/genderandsexuality/publications-and-resources/). I will gladly honor your request to address you by a name that is different from what appears on the official roster, and by the gender pronouns you use (she/he/they/ze, etc). Please advise me of any changes early in the semester so that I may make appropriate updates to my records.

Mental Health
: Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress. All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful. If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. You may begin by talking to any of us, and we'll help you get connected to resources, or the Counseling and Mental Health Center is here to help you. http://www.cmhc.utexas.edu/individualcounseling.html.

Religious Holy Days
: Religion (or lack there of) is an important part of who we are. If a holy day observed by your religion falls during the semester and you require accommodations due to that, please let me know as soon as possible. Email is an acceptable form of communication, though please use the format described above so I am more likely to receive it. If I do not indicate that I have received it, please do talk to me in person (virtually) or follow-up again in email. In order to guarantee accommodations around exams and other big deadlines, I will need notice of two weeks or more. If you are unable (or forget!) to provide that notice, please contact me anyway in case I can still accommodate you.

University-required language: A student who is absent from an examination or cannot meet an assignment deadline due to the observance of a religious holy day may take the exam on an alternate day or submit the assignment up to 24 hours late without penalty, if proper notice of the planned absence has been given. Notice must be given at least 14 days prior to the classes which will be missed. For religious holy days that fall within the first 2 weeks of the semester, notice should be given on the first day of the semester. Notice must be personally delivered to the instructor and signed and dated by the instructor, or sent certified mail. Email notification will be accepted if received, but a student submitting email notification must receive email confirmation from the instructor.

Students with Disabilities
: My policy is to fully support all students with disabilities to the best of my ability. At no time is it required that you disclose the nature of your disability to me, and I will not ask you to do so.

If you are a student with a UT-acknowledged disability, I ask that you meet with me in person to discuss accommodations as soon as you have your accommodation letter in hand. I do ask that you meet with me by the 12th class day so that we can put your accommodations in place as soon as possible.

If you are a student with a disability that has not yet been acknowledged by UT's Services for Students with Disabilities, I hope that you will be willing to disclose your status to me and I ask that you meet with me in person to develop a plan for your success this semester.

University-required language: The University of Texas at Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Division of Diversity and Community Engagement, Services for Students with Disabilities at 471-6259, 471-4641 TTY.

Policy on Children in Class/on Zoom
: Children are always welcome. I understand that if you have childcare responsibilities you are a special-level of exhausted. Please talk to me if you need help.

Policy on Outside Responsibilities and Other Circumstances
: At all times, we are not just our academic selves but our whole selves, with responsibilities and pressures from outside the classroom. If you find that those responsibilities or your circumstances are preventing you from participating in this class, please contact Alison as soon as possible.

Emergency Situations
: If you experience an emergency situation during the semester, Student Emergency Services is here to help you. They can help in the event of family emergencies, medical or mental health concerns, and interpersonal violence, among other situations. If you experience such an emergency, you may contact them directly through email (studentemergency@austin.utexas.edu) or by phone (512-471-5017), or you may contact one of us and we will assist you with the process.

Harassment Reporting Requirements
: Senate Bill 212 (SB 212), which went into effect as of January 1, 2020, is a Texas State Law that requires all employees (both faculty and staff) at a public or private post-secondary institution to promptly report any knowledge of any incidents of sexual assault, sexual harassment, dating violence, or stalking "committed by or against a person who was a student enrolled at or an employee of the institution at the time of the incident". Please note that the instructors and the TAs for this class are mandatory reporters and MUST share with the Title IX office any information about sexual harassment/assault shared with us by a student whether in-person or as part of a journal or other class assignment. Note that a report to the Title IX office does not obligate a victim to take any action, but this type of information CANNOT be kept strictly confidential except when shared with designated confidential employees. A confidential employee is someone a student can go to and talk about a Title IX matter without triggering that employee to have to report the situation to have it automatically investigated. If you would like to speak with someone who can provide support or remedies without making an official report to the university, please email advocate@austin.utexas.edu. For more information about reporting options and resources, visit http://www.titleix.utexas.edu/, contact the Title IX Office via email at titleix@austin.utexas.edu, or call 512-471-0419.


Exams and Final
: Exams will cover material from lecture, assignments, and assigned readings. The exams will be held in the evening on Wednesday, 9/29, and Wednesday, 11/3.

The exact method of delivering the exams has not yet been determined. Whatever the method, we plan to take the exams synchronously together---either in-person in a classroom on campus or over Zoom with other CS439 students. However, should you need asynchronous participation, please contact Alison. Conflicting outside responsibilities is a valid reason for requesting an asynchronous exam.

The exam will be administered, graded, and returned either via Gradescope, which is integrated into Canvas or administered on paper and then returned in discussion section.

The final will be cumulative, but it may be more heavily weighted towards material that has not yet been tested. The final exam will be at the time determined by the registrar, which is usually announced in early November.

Class Participation
: Class participation will be earned in two ways this semester:

  1. Participation with the pre-class modules.

    This participation will be measured through your engagement with the pre-class videos and their embedded assessments.

    To guarantee credit, you will need to watch the videos and complete the embedded formative assessments in the relevant modules before your class begins. We will download the quiz participation results sometime after class begins.

    Participation credit will be earned at 3 points per module.

    This credit may be earned on most of the modules for this class, and so there are approximately 70 available points.

    Please note that we will collect the participation from the videos for the first two classes until 1p on the second Friday of classes, so if you join the class late, you have time to watch those videos.

  2. Participation in the synchronous class meeting

    This participation will be measured through your in-class participation.
    Virtually: We will use the Zoom logging feature to detect who has participated in at least 75% of the class. Please note, though, that if you fail to join a breakout room for more than a few minutes (dropped internet, bathroom breaks, and other events are allowed), then your participation credit may be removed. Your credit may also be removed for failing to participate in the breakout rooms or failing to be respectful in the breakout rooms.
    In-person: We will use a class sign in sheet, and Alison or the TAs will note any extremely late arrivals or early departures. Your credit will be removed for failing to participate in in-class activities or failing to be respectful during them.

    Participation credit will be earned at 2 points per class for each class, so there are approximately 50 available points.

Approximately 120 participation points are available. We make so many points available but only require 100 to earn an A in the class to allow for times you are ill, have an interview, go to the career fair, etc. So there will not be exceptions made for those events.

However, if you have an extenuating circumstance, such as an extended illness or other issues, please let Alison know, and she will help you create a plan for success.

Also, if you need to quarantine, think you may have come into contact with covid, or even think you might sneeze, please stay home and join virtually OR rest and receive asynchronous credit.

Discussion Section Participation
: Discussion sections are designed to enhance understanding of the concepts and help prepare for the exams. Additionally, discussion sections are the only place where projects are introduced and explained. Discussion sections will focus on reviewing the topics of the week, discussing the problem set assigned that week, and the projects.

There will be a written problem set assigned for each discussion section, which you will work in pairs in the week leading up to before section. The answers will be discussed and reviewed during section. The problem sets will be posted with each week's module on Canvas.

We will typically rate your discussion section participation on a 0-10 scale.

Credit for discussion section can be earned by:

If extenuating circumstances cause you to join late or drop off early, please discuss the matter with your TA.

Students who need asynchronous participation will be accommodated.

Discussion section participation is considered complete once you have earned 70 points, which allows for you to need to miss a few and/or fail to complete all the criteria at a few.

Again, if you need to quarantine, think you may have come into contact with covid, or even think you might sneeze, please stay home and join virtually (when possible) OR rest and receive asynchronous credit.

: There will be five programming projects during the semester. The due date for each project will be clearly stated in class, on the project web page, and on the schedule. Plan to start early since debugging systems code can take arbitrarily large amounts of time. Additionally, respect Murphy's rule and plan for your bus to run late, your personal computer to crash the afternoon of the due date, etc.

For each group project, your group members will evaluate your contribution on a scale of No Show to Excellent (these rankings will be further explained in the projects themselves. For each project where your average ranking is Marginal or below, your grade on that project will drop to a "Developing" or, if it already is "Developing, then "Beginning".

All projects must be submitted using Canvas. We will not accept assignments e-mailed to us. Project code is due by 10:59pm on particular Thursdays, and the associated design document is due by 10:59pm on the following Friday. Projects are dated by Canvas.

Project code must compile and be submitted in the correct format. Projects that do not compile or are in the wrong format will receive a 0. Design documents are completed as a group and should be submitted as plain text. Additionally, design documents must contain minimal spelling and grammar errors or points will be deducted. All other given turnin instructions must also be followed exactly. (Please don't break the scripts!)

Finally, all groups (and individual group members) must have a working Project 2 before moving on to Projects 3 or 4. Groups may either meet this requirement by submitting a working project before the deadline or groups may meet with course staff to demonstrate a working project within ten days of the deadline. A reasonable amount of assistance will be provided. This policy does mean that a student may not leave a group that does not have a working Project 2 to work with a group that does. Once a working Project 2 has been submitted, students may join whichever group they wish for the remaining projects. Students must achieve a working Project 2 by the last day of classes to pass the class.

Groups that revise Project 2 to meet this criteria are eligible for a grade revision as well.

Pair and Group Programming: On most or all of the projects (as specified in the project description) you will work with at least one other person. (It is a requirement!) You must follow the pair programming guidelines below and on the course web page.

We use pair programming because it is a more effective and time efficient way to learn the material. Researchers have shown that students perform better in the class in which they use pair programming than without, and also they perform better in subsequent classes with or without it. These results indicate that you learn more and better with pair programming. Please read:

You must follow the pair and group programming guidelines. The group must: (1) design and program together at least 70% of the time, and (2) split keyboard time evenly. Each student can work independently for at most 15% of the effort/time. The person at the keyboard is the driver, and the people sitting next to him/her are the navigators. We recommend you switch drivers every 30 minutes.

For some parts of the course, you will be allowed to change partners or groups between assignments. However, once you begin an assignment with a partner (or a group), you cannot change partners or groups for that assignment. If you must stop working with your partner or group, please request permission from the instructor and await further instruction.

If one of your group members falls out of communication with you, it is your responsibility to notify the course staff, and please do so as soon as you become concerned. We will work to make sure your group member is okay.

The course staff reserves the right to split groups or re-assign group members as necessary.

Late Policy: You will have 4 slip days in 1 day units (that is, 1 minute to 24 hours late = 1 slip day, etc.) to use throughout the semester to extend project deadlines. However, you may only use two slip days on any particular project, and you may use no slip days on the final project. Other than that, you may divide your slip days across the projects in any way you wish, subject to the 4 day total and the 2 day per project maximum. Slip days are to account for life circumstances and emergencies. Do not use your slip days frivolously. If you use all your slip days and then cannot turn in your project on time for any reason then you will receive a 0 for that project.

Note that each project has two pieces (the code and the design document), but that it is considered one assignment, so that if you submit both pieces two days late, you lose two slips days, not four.

In the case of group and pair programming, each member of the team must have enough slip days to cover the submission of the project code or design document. So if the team submits the code 2 days late, each team member must have two slip days remaining to use and each team member will lose two slip days.

To use slip days, you only need to submit the assignment late and indicate that you used a slip day in the project README or the design document header, whichever is appropriate. You do not need to email the instructor or the TA unless specifically requested to do so.

In the event of disaster, please let us know and we will allow you to submit late (after slip days, or once you are out of slip days) for a 50% penalty.

Slip days may not be used on other parts of the projects, such as group planning and reflection documents, the stack check, or the Project 3 data structure document.

: Grades are essential to insuring that your degree has the value that it deserves. As a result, we have a grading system that has two essential properties: However, we also hope that you will focus more on the learning and less on the points, and so we are using a form of evaluation that may be new to you. It is known as specifications grading.

Items in this class will be evaluated on an EADB scale:

For instances where we need to total or average those grades, Es will count as 5s, As as 4s, etc.

In the table below, you will see how the grades for this class will be determined. To earn a letter grade, you must meet every criteria listed in that row.

Final Grade Class Participation Section Participation Projects Exams 1 and 2 Final Exam
A 100 or more 70 or more 21 or more 9 or more Exemplary or Accomplished (5 or 4)
B 85-99 60-69 16-20 7-8 Accomplished (4)
C 60-84 50-59 12-15 6 Developing (3)
D 40-59 40-49 10-11 5 Beginning (2)
Grading Unit Points Points EADB scale EADB scale EADB scale
Revise and resubmit? No No 2 design documents, Project 2 code 3 questions on each exam No

Failing to achieve all items to earn the letter grade 'D' results in an F in the course.

You will have opportunities to revise and resubmit up to two design documents and three problems on each of Exam 1 and Exam 2. Revisions on Project 2 to meet the "working Project 2" criteria will also results in a grade revision.

Your lowest exam score will be replaced by the average of your three exams, but you must take the final to pass the course. Taking the final is a requirement to pass the class. When we calculate the average, we will use the ceiling of the result, so a 3.1 will result in a 4. If you earn the credit for reading Ed Discussion on a regular basis, we will add a point to the sum before we divide to calculate the average.

When assigning final grades, we will use the plus/minus grading scale to adjust for any extenuating circumstances during the semester.

Your grades are recorded in the gradebook on Canvas.

If you have questions or concerns about your grade, contact your TA or Alison during office hours or schedule an appointment by email.

Grade Changes
: In general, this style of grading should greatly reduce grade anxiety, as we will not need to assign and quibble about specific points (but we will provide detailed feedback!). That said, if you believe your work was evaluated incorrectly, you may submit a regrade request following the guidelines below. Before doing so, please review the relevant rubric. If you are revising and resubmitting, please also follow the guidelines below, except you just need to tell us what you are revising.

For assignments where your feedback is given electronically, the deadline for regrade requests or revisions-and-resubmission is one week from the time the grade became available on Canvas with the exception of exams. If you are requesting a regrade, please include supporting evidence and arguments which explain why your believe your work was evaluated incorrectly. (For example, it is not sufficient to submit a note that says "regrade question 3".) Regrade requests that do not meet these requirements will not be considered. Note that we only unmute assignments on Canvas when all grades are entered. If an assignment is unmuted and you do not have a grade at all, you should be worried and submit a grade change request following the above guidelines.

For project grades, please follow the instructions on Ed Discussion, which will specify who to contact with your request.

For discussion section participation credits, please email your section TAs.

For exams taken in Gradescope, regrade requests will be submitted through Gradescope and must be received by the given deadline. Exact deadlines for this process will be announced.

For exams taken on paper, your regrade request must be written and returned along with your exam. Exact deadlines for this process will be announced.

Regrade requests are not given priority over any current grading, and so a response to your request may be delayed.

Note that assigned grades are not the starting point of a negotiation. This isn't a weekend bazaar---unless we have made a mistake in grading your work (i.e., you have a correct answer that was marked wrong, or your score was added incorrectly), your grade is final.

Note that none of the following grade discussions is appropriate:

Collaboration and Cheating

You are encouraged to study for exams, discuss the problem sets and projects, and discuss debugging techniques with your colleagues. You are welcome to use existing public libraries in your programming assignments (such as public classes for queues, trees, etc.) You may also look at operating systems code for public domain software such as Linux. Such activities qualify under approved collaboration practices and you are welcome to take advantage of them. If you are unsure about whether a particular source of external information is permitted, contact the instructor before looking at it.

Note that cooperation is not the same thing as cheating. The project, problem sets, and exams must be the work of the student(s) turning them in. Materials from the web should only be used for educational purposes. For example, you can read about threads and look at examples of thread code, but you must not copy any code from the web or be looking at any of this code from the web when writing anything you turn in. If you discuss an assignment with another student or look at examples from the web, you should employ the following technique: after a discussion with another student or looking at example code you should do something that has nothing to do with computer science or programming for at least half an hour before resuming programming.

Students who violate University rules on scholastic dishonesty are subject to disciplinary penalties, including the possibility of failure in the course and/or dismissal from the University. Because such dishonesty harms the individual, all students, and the integrity of the University, policies on scholastic dishonesty will be strictly enforced. The penalty for cheating on an exam, quiz, or assignment in this course is an F in the course and a referral to the Dean of Students office.

It is generally okay to verbally discuss the concepts needed to do projects or problem sets. Three guidelines will help you keep on the right side of the line.

  1. First, other than the TA and instructor, it is never okay to look at the written work of another person or show another person your written work until after all grading on an assignment is completed. This includes looking at paper print-outs, sketching solutions on a white board or napkin, or looking at a screen to help debugging. The moment you start looking at another student's (or pair's) source code you have crossed the line into cheating. It should go without saying that copying other people's code or solution sets is strictly prohibited. You also may not look at any course project material relating to any project similar to or the same as this course's class projects. For example, you may not look at the work done by a student in past years' courses, and you may not look at similar course projects at other universities.
  2. Second, while you are discussing an assignment with another student, you must not be writing their words or recording the conversation in any way. Similarly, you should not read from your own work. After discussing a problem with another student (or the TA!), go watch The Bachelor for a half hour before going back to work on the assignment. If you can't remember what the person said after a half hour, you didn't really understand it.
  3. Third, everyone in the class is expected to take appropriate measures for protecting one's work. For example, you should protect your files and printouts from unauthorized access.

Note that these guidelines are necessarily generalizations and cannot account for all circumstances. Intellectual dishonesty can end your career, and it is your responsibility to stay on the right side of the line.

Examples of cheating include: looking at someone else's program, writing your program while talking to someone else about it, talking another student through the solution code, allowing others to look at your solution code, and looking on the Internet for code to solve your programming assignments, including stackoverflow and other such sites. If you have any doubts about what is allowed, ask the instructor.

Additionally, if you are repeating the course you may NOT reuse any code or assignments. All submitted work must be new and original.

Plagiarism detection software will be used on various assignments and problem sets to find students who have copied code from one another. Any program that you submit must be yours, and yours alone.

If you are participating in a pair or group programming assignment and your partner cheats, you may also be culpable. Degree of culpability will be determined based on the circumstances, but realize that in all likelihood you will be culpable. If you were following the rules of group programming then you likely knew your partner(s) was cheating. If you were not following the rules of group programming, then you turned in work as yours that was not. Note that this includes the "I actually didn't participate in that project because I was doing x, y, or z instead." excuse, which is a type of cheating, since you were then prepared to take credit for work that was not yours.

Sharing of Course Materials is Prohibited: No materials used in this class, including, but not limited to, lecture hand-outs, videos, assessments (quizzes, exams, papers, projects, homework assignments), in-class materials, review sheets, and additional problem sets, may be shared online or with anyone outside of the class (including through public repositories such as those hosted by GitLab or GitHub) unless you have my explicit, written permission. Unauthorized sharing of materials promotes cheating. It is a violation of the University's Student Honor Code and an act of academic dishonesty. I am well aware of the sites used for sharing materials, and any materials found online that are associated with you, or any suspected unauthorized sharing of materials, will be reported to Student Conduct and Academic Integrity in the Office of the Dean of Students. These reports can result in sanctions, including failure in the course.

Final Note

This syllabus is a plan of action for the semester. It is not a contract and is subject to change. As the instructor, I may make additions, deletions, and modifications to the syllabus and the course requirements with reasonable notification to the students enrolled in the course. You are responsible for any changes announced in class or on the course website.

Acknowledgments and Copyright

In the preparation of this course, I used materials from Mary Eberlein, Mike Scott, Kathryn McKinley, Shyamal Mitra, Calvin Lin, Charlie Garrod, Jennifer Brown, Al Mok, Mike Dahlin, Emmett Witchel, Lorenzo Alvisi, Maria Jump, Michael Walfish, Jerry Breecher, Andy Wang, John Bell, Zero Assurance Recovery, and Kristie J. Loescher.

Special thanks to the Stanford Computer Science Department for the use of Pintos, an instructional operating system.

Copyright Notice: These course materials, including, but not limited to, lecture notes, problem sets, and projects are part of a second course on computer systems. You must ask me permission to use these materials.

This copyright extends to any and all video or audio recordings of this class.

I do not grant to you the right to publish these materials for profit in any form.