Disclaimer

At the moment this syllabus is still partly a work in progress. It has not been fully updated yet to reflect changes that will need to be made for 26fa. However, the general content of the course will be the same to the extent possible, and most of the information in here will still apply.



Syllabus

Table of contents

  1. Disclaimer
  2. Overview
    1. Prerequisites
    2. Course Description
    3. Course Materials
      1. Website
      2. Github
      3. Gradescope
      4. Docker & Speclab
      5. Canvas
      6. Ed Discussion Board
      7. Textbook
    4. Course Components
      1. Lectures
      2. Recitation
      3. Programming Projects
      4. Project Presentation
      5. Group Contribution
      6. Pre-Drop Quiz
      7. Exams
  3. Policies
    1. Getting Help
    2. Inclusion
    3. Disability Services
    4. Grading Breakdown
      1. Late Policy
      2. Midterm Clobber Policy
      3. Rescheduling Exams
      4. Collaboration & Academic Misconduct
      5. Policy on Generative A.I.

Overview

Prerequisites

  • Required: Knowledge of Computer Systems and C programming.
    • For Systems topics, students should be familiar with concepts of memory, assembly instructions, data representation, binary encoding, and vaugely familiar with the idea of an operating system.
    • In terms of C knowledge, students should be comfortable writing long C programs with little to no skeleton code, managing dynamically allocated memory, and interacting with C pointers. As a result, the official pre-requisite of this course is: CIS 2400 (Intro to Computer Systems) or a similar course/background (e.g. CIT 5930).
  • Required: Willingness/happy to spend substantial time coding.
  • Required: Ability to work well in a team with other students. We can not stress this one enough!
  • Optional: Experience with Data structures, algorithms, finite state machines, and graphs. This can be obtained from taking CIS 1210 or CIT 5960. There won’t be any proof writing or “theory” homework assignments, but operating systems employ many algorithms that are better understood if you have expereince with these concepts. The concept of Hashing & Hash Tables will also show up briefly in the course and it will be assumed you are familar with these, but if you aren’t, you can ask in Office Hours.

This course assumes prior C knowledge (specifically, what is covered in CIS 2400). This includes:

  • Pointers
  • Structs
  • Simple Data Structures
  • C program layout

Students in other degree programs may add themselves to the CIS course waitlist. Note that students who have not taken CIS 2400, CIT 5930 or an equivalent course have very little, if any, chance of being admitted.

Course Description

In CIS 2400, you learned some fundamentals of how computers work, starting with transistors, going through assembly, briefly discussion the idea of the Operating System and then ending with the low level programming language of C. In this course, we plan to further develop the model of a computer introduced in CIS 2400 to a model that includes handling multiple programs (and multiple operating systems) running at the same time. A big component of this is seeing how shared resources are allocated and protected across programs.

Course Materials

Website

The website acts as the central place for organizing material for the course. All essential material for the course is delivered through or linked through the course website. As an example, the website contains the course schedule, lecture materials, recitation materials, homework specifications, and this syllabus. We highly encourage you to explore, try some of the resources that are available, and become familiar with the site early on in the course.

Github

All programming projects will use github for version control. This is increasingly important for the later projects as they will be done with teammates. We will create repositories for you and distribute some provided code through them. You can setup your github account for the course by following the instructions here: Github Setup Instructions

You are not allowed to post your code from this course in a separate public repository. Doing so is against the academic conduct policy and can result in a failing grade in the course.

Gradescope

Gradescope is where both programming projects and exams are submitted and graded. You should be able to initially access the gradescope for the course via the canvas sidebar. After the initial access, you should be able to log into gradescope directly and see CIS 4480/5480 on it.

Docker & Speclab

DO NOT use eniac machines to develop projects for this class! Students caught running project code on Eniac will be penalized. In the past, CIS 5480 students have accidentally crashed eniac in creative ways, causing issues for everyone using it.

Docker and speclab are the two development enviroments supported by the course. We will not give advice on how to support alternatives unless one cannot get docker or speclab to work.

Caution: do not develop on macOS directly or other UNIX environments directly (e.g. Ubuntu, other versions of Linux, WSL). There can be significant differences in how your C code is compiled and the behaviour of the systems. As an example, macOS does not have pipe2 a function you will find incredibly useful when you implement your shell!

In the past students have thought they got a working solution only to realize after submitting that their code doesn’t compile in the grading environment. If you still use one of these environments, we urge you to at least compile and test in the course supported environments frequently to ensure your program is behaving as expected.

Docker is the recommended place for developing and testing your programming projects. The environment you will use in Docker will be the same as the environment we grade projects in. Instructions will be posted on Ed shortly into the semester directing you how to setup the docker environment.

You can find the instructions for setting up your docker environment here: Docker Setup

If docker does not work, you can try using speclab for developing and testing your programming projects. Instructions for using speclab can be found here: https://cets.engineering.upenn.edu/answers/speclab.html. Note that you do not need to install Docker on speclab, speclab is already a linux session that you can develop in.

Canvas

The canvas site contains the gradebook, surveys, and class recordings. You are free to use the canvas if you want, but if there is anything that is needed on canvas, it will be directly linked on the course website.

Ed Discussion Board

The Ed Discussion board provides a place for students to get support from course staff. Ed is also the primary mechanism for announcements, though we will try to repeat announcements at the beginning of lecture for convenience.

Textbook

There are no strictly required texts for this course, however, some find it helpful to read the course material from a textbook. Note that none of the textbooks listed will have everything used in this course. As a result, we are suggesting the following texts:

  • Dive Into Systems (https://diveintosystems.org/book/): This is a free online textbook that is well written and contains useful information about several of the systems topics covered in this class and in CIS 2400.
  • cppreference.com (https://en.cppreference.com/w/c): This website provides a useful reference for C (and C++) programmers, and highlights many useful headers and functions that may be useful to your C (or C++ program) writing.
  • Online manual pages (https://linux.die.net/man) and (https://www.man7.org/linux/man-pages/): These websites are online equivalents of the man terminal command. They contains useful information on user terminal commands (section 1), System Calls (section 2) and C standard library functions (section 3).

If you are looking for a more traditional textbook, past versions of the course have required or highly recommended:

  • A.S. Tanenbaum. Modern Operating Systems (4th Edition onwards). Prentice-Hall.
  • W. Richard Stevens and Stephen A. Rago. Advanced Programming in the UNIX Environment (2/e or 3/e). Addison-Wesley Professional.

Course Components

Lectures

There are approximately 28 lectures throughout the semester, which occur from 5:15 to 6:45 on Tuesdays and Thursdays. Attendance is highly encouraged. Each lecture will include several in-class polls that contribute to your final grade. These in-class exercises are designed to prepare people for the exams and projects. You must get at least 80% of these polls correct across the semester for full credit towards lecture attendance.

If you are unable to attend a lecture occassionally that is okay. All lectures will be recorded and available on Canvas and the in-class polls will be open for 1 week after the associated lecture.

Attending class and engaging in activities will also help you find good teammates for the pair programming projects, which as you’ll come to know, is critical in having a good time in the course.

Recitation

There are 10 TA lead recitations throughout the semester. Attendance is required. In these recitations, TAs will go over course material covered in the last week and/or help students with getting started on the upcoming project. Recitations will also be a great opportunity for you to ask questions about course topics and projects.

Each recitation will have a corresponding worksheet that will be graded on completion not correctness. This is how we will track attendance. You may miss up to 2 of the 10 recitations across the semester and still receive full credit.

Some recitations will contain TA demos of the programming projects. We highly suggest you attend and look over the assignment before those indicated classes. These demos are a great chance to ask clarifying questions about assignments that may seem overwhelming at first—but with the right strategy and game plan, they’re completely manageable.

Programming Projects

Projects will be distributed through the course website, but will be graded and submitted through the course gradescope. There will be 4 programming projects spread out through the semester:

  • The first project, Penn-Vec is done individually. It is released the first week of the semester and due during the second week of the semester.
  • The second project, Penn-Shell is done in teams of two. It is released in the second week of the semester, has a miletone in the third week, and is due in the fifth week of the semester.
  • The third project, Penn-fat is done in teams of two. It is released around the sixth week of the semester, and is due approximately 3 or 4 weeks later.
  • The fourth and final project, Penn-OS is done in teams of two. The project is a massive undertaking where you will write a miniture operating system in combination with your Penn-fat project. We give you the rest of the semester to complete it. More specifically, it is released around the tenth week of the semester, and is due in the fifteenth week. You will demo your project to TAs in the fifteenth week.

Information on our late policy can be found in the assignment policies section here.

Project Presentation

As part of every project except for penn-vector your team will have to meet in-person with one or more TAs to discuss your work on the project. The purpose of these meetings vary depending on the project and whether we expect the project to be done or still in-progress.

Meetings that occur in the beginning or mid-point of a project are for us to check that you and are your partner are working on the project and answer any questions you may have on the assignment. You will still be expected to be able to answer some questions about the project specification, what you have done, and what you plan to do. This is so that we have confidence that our students are working on the assignment and not putting it off to the last moment, which is a recipe for disaster.

Meetings that occur around the deadline for a project are meant for you to demonstrate your work and your learning. We are not expecting a formal presentation with slides, just for you to sit down with one or two TAs and show that all functionality is implemented and working. TAs will also ask you questions to check your work and understanding. Some questions will just be about your design & implementation, other questions will be things you have not directly seen before, but should be able to answer by synthesizing ideas from what you learned by doing the project. This is not a way for us to “trick” you, but a way for us to evaluate that not only did you do the work, but that you learned from it as well. If you haven’t completed the project by the time of these demos, you can still get full credit on the presentation. Questions are designed to be completable as long as you have made substantive progress, understand what you did, and have learned from it.

More specific details on each meeting will be found on the associated assignments specification closer to when those meetings are planned to happen.

Group Contribution

At the end of the semester, all teams will complete a group evaluation. Team members who contribute too little will receive a deduction on their PennOS grade based on the extent of underperformance:

  • If you’re reported as contributing 15–30%, your PennOS grade will be reduced by 10 points.
  • If you’re reported as contributing 10–15%, your PennOS grade will be multiplied by 0.7 (e.g., you only pass if your group earned a perfect score).
  • If you’re reported as contributing only 5–10%, your PennOS grade will be cut in half (e.g., if the team earned a 90%, you receive a 45%).
  • If you’re reported as contributing 0%, your PennOS grade will be a 0.

These adjustments are meant to ensure fairness and accountability in team contributions. To receive the harsher of the deductions, indications of lack of work must be made by group members throughout the semester and must be communicated with the TAs. If only at the end of the semester we hear of a partner who didn’t do any work, we simply don’t have enough to warrant the harshest of the other deductions. If you have a teammate that isn’t helping or carrying their weight, let us know as soon as you realize that.

Students who do not contribute at all will get a 0 on PennOS. No exceptions. Adding a comments or creating the documentation does not qualify as contributing to PennOS.

If something comes up in your life that prevents you from contributing, please discuss with the instructor. We don’t need to know all personal details if something does come up, you have a right to your privacy, but please reach out.

Pre-Drop Quiz

There will be one in-class quiz on Tuesday September 29th. It will cover all the topics up through (thius measns including) lecture on September 17th. The intent of this quiz is to give you a sense for how you’re doing in the course ahead of the Add/Drop deadline. Doing poorly on this quiz does not mean you will do poorly in the course! Treat this quiz as a diagnostic test and adjust your strategy accordingly.

Exams

There will be a midterm exam in class that is scheduled for Thursday October 22nd. If you cannot make this time, you must let us know ahead of time so we can schedule an alternate testing time. Failure to schedule an alternate time will result in your midterm grade being derived from your final exam grade (see clobber policy).

There will be a two-hour, in-person final exam as well. The registrar schedules the date and time of final exams and releases them in the second half of October. We will update the calendar once we have this information.

Policies

Getting Help

It is very important to us that you succeed in CIS 2400. As a result, we are providing many resources to help you succeed. These include:

  • Many office hours held by course staff
  • The Ed discussion board
  • Contacting staff directly via email
  • Scheduling a meeting with Travis here

Please do not be afraid to ask for help if you don’t understand something. We are here to help you succeed. Additionally, some of the course staff will get lonely and bored if no one shows up to their office hours.

It is very important to us that you maintain your mental wellness throughout the course. A few points are not worth losing sleep over. Everyone on the course staff is available to chat, and you can always attend office hours for a non-academic conversation if necessary.

Additionally, if you are experiencing some unforeseen and extenuating circumstances, please feel free to reach out to course staff for help. We are here to help.

Inclusion

You have a right to a learning environment that feels safe, where you are treated with respect and feel that you can contribute ideas constructively. Put another way, you have the right to an inclusive learning environment.

We want every student to feel that they have a safe and healthy learning environment, and if at any point you feel like this is not the case in any way, please let course staff know and we will see what we can do to help.

Disability Services

The Student Disability Services (SDS) is a unit within the Weingarten Learning Resources Center (WLRC) dedicated to ensure equal access to all University programs, activities and services. They offer a wide range of services for students with disabilities that are individually designed and remove the need to reveal sensitive medical information to the course staff. Please submit a request if you will have a medical need for extensions of exam times or assignment deadlines.

Grading Breakdown

ComponentPercentage
Lecture Polls2.5%
Recitation Attendance2.5%
Pre-Drop Quiz5%
Midterm15%
Final25%
penn-vector2.5%
penn-shell10%
penn-fat12.5%
PennOS25%

Late Policy

For exams, attendance, and project presentations, there are no late submissions except for particularly special circumstances.

For homework assignments, we are granting you a total of 5 late tokens.

  • Late tokens can be applied to any assignment to get a 24 hour extension.
  • Late Tokens will be applied automatically to maximize your grade at the end of the semester
  • Late Tokens will be counted and updated on the canvas gradebook. Each student should start with 5 and the number will be lowered as assignments are submitted late
  • Assignments will close 48 hours after the initial due date. This means submission past that point will not be accepted with little exception. This means only up to two tokens can be used per assignment.
  • If a submission is late and the student has no tokens left to apply, a 5% penalty will be deducted for every 24 hours it is late, up to a maximum of 10%.
  • There are no partial tokens or partial deductions. If you are late by 30 minutes, it is the same as being late by 23 hours.
  • Some assignments are done in pairs and submitted together, but late tokens are counted per individual student. This means two late tokens, one from each student, will be withdrawn for each 24 hours late submission for a pair assignment. If only one member of the group has enough tokens, then they will be able to submit without no penalty, and the other will have a late penaltyy applied when final grades are calculated at the end of the semester.

If something comes up in your life that prevents you from working on the projects, please discuss with the instructor. We don’t need to know all personal details if something does come up, you have a right to your privacy, but please reach out. We can try to figure things out, life is messy sometimes and we understand that.

Midterm Clobber Policy

The clobber policy allows you to demonstrate mastery of past material with regard to exams. In particular, you can replace your midterm exam score with the score of the midterm section of the final exam. This does not apply in reverse, we will not replace your midterm section of the final with your midterm exam score.

To accommodate for the midterm subsection of the final exam being harder/easier than the midterm exam itself, we have a formula that accounts for average and standard deviation.

  1. First, we calculate Potential Midterm Clobber Score with: (final_midterm_subscore - final_midterm_mean) / final_midterm_std_deviation * midterm_std_deviation + midterm_mean, capped at 100
  2. Then we take the maximum score between the calculated potential clobber score and the grade you had on the midterm. The higher of the two will be used to calculate your final grade.

Rescheduling Exams

If you know in advance that you will be unable to take an exam, please discuss it with the instructor as soon as possible, at least a day before the exam so that the reason can be verified and plans can be put in place. Make-up exams would likely take place after the initial exam. Make-up exams will be taken shortly after the initial exam and course staff will schedule it. Failure to take the midterm or the make-up will make it so that we instead derive your midterm score from the final exam following the midterm clobber policy (see above).

For emergency absences, please reach out to the instructor when possible so that plans can be put in place.

Policies regarding absences for the Final Exam are covered by the University Provost. For Fall semester courses, a makeup Final Exam will be scheduled at the start of the following Spring semester. For Spring semester courses, a makeup Final Exam will be scheduled at the start of the following Fall semester. Requests for a makeup Final Exam due to reasons that could reasonably be anticipated (e.g. traveling for summer break) are unlikely to be approved.

Collaboration & Academic Misconduct

In general, we encourage collaboration, but there is a very fine line between collaboration and cheating. We can learn a lot from working with each other and it can make the course more fun, but we also want to ensure that every student can get the maximum benefit from the material this course has to offer. Keep in mind that the overall goal is for YOU to learn the material so you will be prepared for the exams and for job interviews etc. in the future. Cheating turns the assignments into an exercise that is a waste of both your time and ours; save us both by not doing it.

Cheating consists of sharing code or solutions to assignments by either copying, retyping, looking at, or supplying a copy of a file. Examples include:

  • Coaching a friend to arrive at a solution by simply following your instructions (i.e. no thinking involved). An example is helping a friend write a program line-by-line.
  • Copying code from:
    • a similar course at another university
    • using solutions/code on the web, including GitHub.
    • Copying from another student or using their code as reference.
  • Similarly, you are not allowed to show your work with anyone outside of the current CIS 2400 course staff via electronic or non-electronic means. You are also not allowed to post this work publicly.

You are not allowed to post your code from this course in a separate public repository or anywhere else that is publicly accessible. Doing so is against the academic conduct policy and can result in a failing grade in the course.

If you want to use this as part of a resume or portfolio, instead describe the project, decribe what you did, and mention that you can show your work to potential employers upon request.

Cheating is a very serious offense. If you are caught cheating, you can expect an initiation of a cheating case in the University system and a zero for the assignment. Depending on circumstances, you may receive a failing grade in the course. Cheating is an insult to the instructor and course staff, to the department and major program, and most importantly, to you and your fellow students. If you feel that you are having a problem with the material, or don’t have time to finish an assignment, or have any number of other reasons to cheat, then PLEASE talk with the instructor, we are more than happy to work with students as needed. **Just don’t cheat.**

If you are in doubt about what might constitute cheating, send the instructor an email describing the situation and we will be happy to clarify it for you.

See Penn’s Code of Academic Integrity for more information.

Policy on Generative A.I.

This isn’t as much a policy as it is advice. For this class, we strongly recommend against using generative AI like ChatGPT, Co-Pilot or related technologies. We are not denying that Claude or ChatGPT can be a useful tool for getting something made, but we are not convinced that it benefits your growth and learning of the material in this class.

We do not claim that AI is useless by these statements. There are many things it can do, we just doubt their usefulness in this class with the purpose of learning. We will not ban the usage of ChatGPT or similar tools except for during exams. We will still be a little disappointed to see people using AI.

If you MUST use AI, then we suggest you read this article about how to use it well. Notably, the first bullet point in the list at the bottom is: “Learn: Continue building your own body of knowledge and skills, even if it is seemingly something that a computer could do for you.”

Regardless of your usage, we expect you to be able to:

  • Explain & reason about your code yourself during office hours, project milestones and demos
  • Reason and think critically about exam questions without help. Questions will be designed for you to reason about them, not just to have memorized the correct answer.

If you do use Generative AI, you will have to disclose so in the README you submit for most projects. Details on this can be found in the specification for each project.

All in all, use your best judgement.

(Credit to Jacqueline Smith at the University of Toronto for the language around “false mastery”)