Home CS439

CS439: Principles of Computer Systems

Spring 2024

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.

Course Goals

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. In addition to the technical knowledge and skills you will acquire in this course, you will also learn to work collaboratively, take responsibility for your own learning, consider new ideas and perspectives as they relate to system and project design, and develop confidence, resilience, and perseverance.

Course Information

Course Staff
Alison Norman
Christina Zhang
David Ortiz
Dorcas Wong
Eddie Cazares
Frank Sosa
Kai Celaya-Alvarez
TA kylecalvarez@utexas.edu
Lindsey Bowen
TA lindseyb803@utexas.edu
Natalee Chu
TA nataleechu@utexas.edu
Thomas Bunch
TA tebunch@utexas.edu
Thomas Langford
TA thomaslangford0123@gmail.com

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

Class Information:

Class Meeting Times and Location:
Sections 50995, 51000, 51005: MW 9a-11a
Sections 51010, 51015, 51020: MW 11a-1p

This course will meet either in person or online, depending on what is best for a particular class. When we meet in person, which will be the common case, we will be in GDC 1.304. When we meet virtually, the Zoom links will be found in Canvas.

An overview schedule is available on the course website. A weekly schedule will be posted to Canvas. You must attend the section for which you are officially registered, though if you need accommodations around this requirement, please let me know.

Some classes or portions of classes may be recorded using the Lectures Online system. This system records the audio and video material presented in class for you to review after class. Links for the recordings will appear in the Lectures Online tab on the Canvas page for this class. You will find this tab along the left side navigation in Canvas.

To review a recording, simply click on the Lectures Online navigation tab and follow the instructions presented to you on the page. You can learn more about how to use the Lectures Online system at http://sites.la.utexas.edu/lecturesonline/students/how-to-access-recordings/.

You can find additional information about Lectures Online at: https://sites.la.utexas.edu/lecturesonline/.

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
50995 (9a class) F 9a-11a CBA 4.344
51000 (9a class) F 11a-1p CBA 4.334
51005 (9a class) F 1p-3p GDC 2.210
51010 (11a class)F 9a-11a CBA 4.332
51015 (11a class)F 11a-1p CBA 4.332
51020 (11a class)F 1p-3p CBA 4.332

Students must attend the discussion section for which they are officially registered to receive credit for discussion section. Discussion sections will meet in-person.

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.

Senate Bill 17
: Texas Senate Bill 17, the recent law that outlaws diversity, equity, and inclusion programs at public colleges and universities in Texas, does not in any way affect content, instruction or discussion in a course at public colleges and universities in Texas. Expectations and academic freedom for teaching and class discussion have not been altered post-SB 17, and students should not feel the need to censor their speech pertaining to topics including race and racism, structural inequality, LGBTQ+ issues, or diversity, equity, and inclusion.


Canvas: 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 Ed Discussion, which is linked from both the course website and Canvas. You will be automatically added to the discussion board through the registrar.

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 the site, 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 the posts randomly, so make it a habit to read the posts each day.

You are responsible for any and all information posted to the discussion board 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 Course Staff: Email is not the best way to get in touch with the teaching team. Do not send an email without first speaking to one of us in person. You can find us in office hours, after class, or after discussion section. To follow up, we may ask you to send us an email. In this case, emails to course staff should have the subject "CS439:" 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.

Do not use Canvas messages to contact the teaching team. If you use Canvas Messages, you may not receive a reply.

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

Class material will introduce systems concepts through description and examples. For the majority of classes, approximately one hour of material will be delivered asynchronously through recordings and other mediums, and then synchronously to review and apply what you have learned. 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. We are learning community, and without your active participation, your learning and that of your colleagues suffers.

The format is informal; questions are welcome all the time.

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 to 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
: This course has a heavy workload, which has been carefully curated to support your learning. 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 your 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 an environment that is welcoming to all people and in which we treat each other with professional courtesy and respect. In this section, I highlight some common forms of support offered by the course and the wider UT community. If you need other types of support, though, please let us know. Note that this section discusses what to do if you face an emergency during the semester, such as a death in the family, and it also includes harassment reporting requirements.

Personal Pronouns
: Professional courtesy and sensitivity are especially important with respect to how we address each other, and we strive to address you in the ways you prefer. Class rosters are provided to the instruction with the student's chosen name, which you may update through UTDirect ( https://utdirect.utexas.edu/apps/ais/chosen_name/student/). That said, we will gladly honor your request to address you by a name that is different from what appears on the official roster and by the pronouns you use (she/he/they/ze, etc). Please advise us of any changes early in the semester so that we may make appropriate updates to our 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. That said, sometimes that is not enough. If you experience any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. All of us benefit from support during difficult times. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. 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. Asking for support sooner rather than later is often helpful.

If you are struggling, know you are not alone.

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 your instructor and TAs 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 we do not indicate that we have received it, please do talk to us in person or follow-up again in email. In order to guarantee accommodations around exams and other big deadlines, we will need notice of two weeks or more. If you are unable (or forget!) to provide that notice, please contact us anyway in case we 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, Disability and Access 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 us as soon as possible.

Emergency Situations
: If you experience an emergency situation during the semester, Student Emergency Services (SES) 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.

Please, if you are in an emergency situation, focus on "forgiveness, not permission". Please focus on your needs, and assume we will do something reasonable when we learn of the situation. If you have time to drop us a note to let us know what is going on, please do---but otherwise, focus on you. Documentation through SES will eventually be required, but it does not need to be immediate.

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, 2/21, and Wednesday, 4/3.

Exams will be in-person.

The exam will be administered on paper and then returned in discussion section.

The final will be cumulative. The final exam will be at the time determined by the registrar, which is usually announced during the semester. You are required to remain on campus for the final exam and for two days after the final exam date. These two days allow us the opportunity to manage any concerns about your topics mastery rising from your final exam.

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 fully watch the videos (without a browser extension, see below for more information) and complete the embedded formative assessments in the relevant modules both before midnight the night before class.

    If you choose to watch the videos through a browser extension, the engagement statistics may or may not update properly, and so you may or may not receive credit. We will not entertain grade discrepancy concerns based on the use of such extensions, so use at your own risk.

    Participation credit will be earned at 3 points per module, which is awarded all-or-nothing. Videos must be fully watched for any credit.

    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 not collect the engagement statistics from the videos for the first two classes until 1p on the second Tuesday 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.

    In-person: We will use a class sign in sheet, exit tickets, and other participation artifacts to award credit, and one of the course staff 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. In addition, your credit will be removed for using laptops or any device with a raised screen in class, unless specifically allowed during a class activity. If you have a device that can lay flat on the desk such as a tablet or 2-1 computer you may use it to take notes during class, but not for any outside activity.

    During the first class, we will create name tents. Be certain to have it on display in class at all times.

    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.

    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, work conflicts, or other issues, please fill out the exception form as you are able. We will consider form submissions at the end of the term, and the timeliness of your submission may matter. Also, if you need to quarantine, are ill, or even think you might sneeze, please stay home and rest, and then please submit any missed work via the exception form when you are able. If you are having trouble catching up after an extended absence, let us know, and we will help you create a plan for success.

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.

There will be a written problem set assigned for most discussion sections, which you will work in pairs in the week leading up to section. Failure to meet with or respond to your problem set partner in a timely manner will result in a 0 for discussion section credit that week. The problem sets will be posted each week on the schedule, and the answers will be discussed and reviewed during section. In discussion section, you will work an in-section problem individually for credit.

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

Credit for discussion section may be earned through a combination of:

If extenuating circumstances cause you to regularly arrive late or leave early, please discuss the matter with your TA.

In general, discussion section credit may not be made up if circumstances cause you to miss discussion. However, in some cases you may receive credit for your problem set and have another opportunity to take that week's in-section problem, if we are notified before or shortly after discussion. To notify us that you believe your circumstances warrant an exception, please fill out the exception form. Notifications via email will not be considered. 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 rest, and then please submit your problem set via the exception form when you are able.

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.

: 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 several factors. If at any point it is determined by the course staff that you are not properly contributing to the group, either through these evaluations or their own observation, your grade will be appropriately offset from the rest of the group.

For most projects, you will be able to create your own group with other students in the class. However, we will place you in a group if you would like us to do so. However, if you consistently fail to participate such that you are unwelcome in groups, we will not place you with a group and you will not be able to earn credit for any remaining projects.

All projects must be submitted using Canvas. We will not accept assignments e-mailed to us. Project code is due by 5:59pm on particular Fridays, and the associated design document is due by 10:59pm on the same Fridays. Project submissions 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. 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 deadline in order to pass the class. A reasonable amount of assistance will be provided.

Groups that revise Project 2 to meet this criteria are eligible for a grade revision as well, as long as they do so by the resubmission deadline.

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 90% of the time, and (2) split keyboard time evenly. Each student can work independently for at most 5% 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 and provide advice on moving forward.

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.

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 structures document. Slip days also may not be used on Project 4.

In general, if you miss a deadline such that Canvas is closed, that assignment will not be accepted. However, you are welcome to fill out the exception form and let us know why you need an exception to the policy. Please do it as soon as you are able, as the timeliness of your submission may matter. Discussion section exception requests will be considered weekly, but other such requests will be considered in a more ad hoc matter and consideration may be delayed to the end of the term.

: 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 points, and so we are using a form of evaluation that may be new to you: mastery grading. The form we use in class is a variation of mastery grading, but it accomplishes the same goals.

Items in this class will be evaluated on an EADB scale:
No response
Unrelated answer

For instances where we need to total or average those grades, Es will count as 5s, As as 4s, etc. Assignments that are not submitted will receive 0s.

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. The numbers in the "Participation and Assignments" columns represent point totals over the course of the semester.

Participation and Assignments Topics (Rubric Details)
Final Grade Class Participation Section Participation Project Test Cases Project Design Exam Non-Topic Questions Synchronization Virtual Memory File Systems
A 100 or more 70 or more 21 or more 21 or more 55 or more For each topic, 4 or 5 as final grades in all related subtopics and criteria for a B is met
B 85-99 60-69 16-20 16-20 45 For each topic, 4 or 5 as final grades in all but one related subtopic and criteria for a C is met.
C 60-84 50-59 12-15 12-15 35 For each topic, attend and participate in two-thirds of the related classes and discussion sections, at least 3s as final grades in all related problem subtopics and criteria for a D is met.
D 40-59 40-49 10-11 10-11 25 Attend and participate in half of the related classes and discussion sections
Grading Unit Points Points EADB scale EADB scale EADB scale EADB scale
Retake? No No Project 2 code No 2 questions on each exam that earned a B or better on the original answer. Exact questions eligible to be determined by course staff. Based on assignment

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

You must take the final to pass the course. If you earn the credit for reading the discussion board on a regular basis, we will add a point to the sum of your non-topics questions. You are required to remain on campus for the final exam and for two days after the final exam date. These two days allow us the opportunity to manage any concerns about you skill mastery rising from your final exam. Again, please note that taking the final is a requirement to pass the class.

You will notice that this scheme does not fully specify grade borders (decimals are missing!). We will determine those as we assign final grades. Please do not ask. We will not have answers---instead, we will be focused on your learning and we hope that you will also focus on your learning.

When assigning final grades, we will use the plus/minus grading scale if it seems appropriate.

Your grades are recorded in the gradebook on Canvas.

Retake Information

Exams: You will have opportunities to retake two problems on each of Exam 1 and Exam 2. For a problem to be eligible for retakes, the problem must have been answered on the exam, and that answer must have earned at least a score of a Beginning. We will provide an ordering of questions, and you must retake the top two questions on the list for which you earned less than Accomplished. For instance, you may be required to retake question 7, if you earned less than an Accomplished on that question, before we will consider other retakes.

Projects: Revisions on Project 2 to meet the "working Project 2" criteria will also result in a grade revision for your test cases grade only, provided revisions are completed before the resubmission deadline.

Topics: If you have not demonstrated proficiency on a problem included in the Topics portion of the rubric after the exam retakes, you may attend learning sessions on that topic for an opportunity to learn the material. Your attendance at all related learning sessions is required, if your performance in a related subtopic is at the Beginning level or below. It is also required for anyone who wants another opportunity to demonstrate proficiency on that topic. A reasonable number of learning sessions and retakes will be provided. Note that once you choose to not take an offered opportunity to attempt a topics problem, you are unable to particiapte in later opportunities. This restriction includes skipping a topics problem on an exam.

On a retake or any resubmission, the maximum grade that may be earned is an Accomplished.

If you have questions or concerns about your course grade, please schedule an appointment with one of us by email. Remember to put "CS439" in the subject line and follow it with a brief description of your purpose.

Grade Changes
: In general, this style of grading should reduce grade anxiety, as you will have multiple opportunities to demonstrate proficiency. 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.

For assignments where your feedback is given electronically, the deadline for regrade requests 48 hours from the time the grade became available on Canvas. If you are requesting a regrade, please include supporting evidence and arguments which explain why you 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 post grades on Canvas when all grades are entered. If an assignment has grades posted and you do not have a grade at all, you should be worried and submit a grade change request following the above guidelines.

For all grades except exam grades, grade change requests may be submitted using the grade discrepancy form. Your form submission will be automatically timestamped by Google, and that time stamp will be used to determine if your request was submitted before the deadline.

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. Some regrade requests may not be processed before the end of the semester.

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, whether the code is copied or generated, including code generated software such as GitHub Copilot of ChatGPT. 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 academic penalty for cheating on an exam, quiz, or assignment in this course is a zero on that assignment, a course grade reduction, up to and including failing the course, and a referral to the Dean of Students office. Additional sanctions, including community service, probation, or expulsion, will be as determined by the Dean of Students.

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. Use of AI-powered software, such as ChatGPT or GitHub Copilot, to generate your solutions---whether code or text---is also academic dishonesty. 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.

Project Withdrawal: If you find yourself in a situation where code submitted by you or your group violates the academic integrity policies of this class, you may submit this project withdrawal form before we begin grading. This form allows you to withdraw your code from consideration by course staff without penalty beyond a 0 for the assignment. Please be sure to follow all guidelines listed in the form's description.

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. Also included in this prohibition is submitting any class material to AI-powered software such as ChatGPT. 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.

Unauthorized Use of Course Software is Prohibited
: The software in this class is intended to support the instructional goals of the course. Any unauthorized access or intentional misuse of such software is prohibited. There is no "white-hat hacking" allowed in this course without the instructor's express written permission. Any such actions will result in failure of the course and a referral to Student Conduct.

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, Kristie J. Loescher, Shriram Krishnamurthi, Frank Vahid, Sarah Abraham, and the AAUP@UT.

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.