Introduction to Operating Systems

CPSC/ECE 3220 — Section 001 — Spring 2019

TTh, 9:30AM – 10:45AM (Jordan Hall G033)

Jacob Sorber
jsorber at clemson dot edu
225 McAdams

Tuesday: 3–4 PM.
Wednesday: 8–9 AM.
Thursday: 12–1 PM.
By appointment as needed.

Programming assignments, exams, and recommended readings will be posted on the online course schedule, found at the following URL.

This site is a living document and I will be updating the content throughout the semester. Please check it regularly.

I have two goals. I want you to understand how operating systems work. I want you to learn to apply the tools, methods, and principles espoused by the systems community to solve a range of computing problems.

Key Topics:

Learning Outcomes: Students who successfully complete this course should be able to do many things, including the following:

This is not a course on how to program. I assume you already know how to program. Programming is required and you will likely be a stronger programmer when you're done.

Readings for the course will come from online sources and the following text:

Operating Systems, Principles & Practice, 2nd ed., Recursive Books. (Book Companion Site)

CPSC 2120 and CPSC 2310 with a C or better; or ECE 2230 and ECE 2720 with a C or better. Proficient with C, and comfortable in a UNIX/Linux command-line environment.

We will use Piazza for class communication. All questions and comments that might be helpful to other students should be posted on Piazza. This allows the grader, other students, and me to answer questions together and more quickly. Using Piazza, I spend less time answering questions (I don't have to answer the same question multiple times), and leaves more time to help you learn about operating systems. You should not post source code or specific implementation information from your course projects.

The piazza url for the course is You will need to enroll yourself in the class (enroll link). If you do not enroll, you will miss important class information.

I will use Git to share source code with you. Version control systems are a useful tool and a fact of life for nearly all software developers. If you haven't used Git before, the Internet is full of tutorials. Here are a few that might help (github's, the “simple guide”, and atlassian's);

Note that students are often tempted to just access the repository through the web browser so they don't have to learn the command-line interface. This is a mistake. Just learn Git. The command line interface is faster and more powerful, and you're going to need to learn it at some point in your life. Why not today?

The course Git repository url is (

50% – Assignments
10% – Quizzes
15% – Midterm Exam
20% – Final Exam
5% – Participation

A — 90 – 100
B — 80 – 89.9999…
C — 70 – 79.9999…
D — 60 – 69.9999…
F — below 60

I will assign readings and other exploration activities from the text and online sources for most class meetings. I expect readings to be completed before class meetings.

There will be several programming assignments (probably 4). They must be submitted electronically (via by 4:00 PM on the due date. I don't accept late work, period. The assignments will be challenging. Start early, test thoroughly, and submit early in order to avoid last-minute crises.

Assignments will be machine graded, and your grade will be based on how your code works, not based on how long you worked on it. You should start early on assignments, work incrementally, and test thoroughly in order to avoid painful surprises.

I use an autograder to grade your assignments and to give you feedback. Every day at noon, the autograder will download all new submissions, grade them, and email the results to you. This gives a distinct advantage to students who start early and submit early. If you don't get an email by 1pm (if there are a lot of submissions, the autograder can take a while) you should try the following, in order: 1) check your SPAM folder. 2) make sure that you really did submit new code. 3) make sure that the code you submitted wasn't the same as your previous submissions (the autograder only grades new code). 4) contact the grader. 5) contact me. If you get a response that you don't understand, you can ask on Piazza or bring it to office hours. Occasionally, this means that your code crashed in a way that I wasn't expecting, and don't have a nice error message for, yet.

I occasionally give short “pop quizzes” at the beginning of class (probably once a week). These quizzes will not be announced in advance. If you are late, you may miss the quiz (I won't repeat instructions) or not have enough time to complete it.

If you miss a quiz, your grade will be zero (0). There will be NO make-up quizzes. I will drop the lowest two quizzes.

There will be one midterm exam given around mid-semester.

The final exam will be cumulative. The location and time will be posted on the course schedule.

Office hours are an opportunity to reinforce course topics either one-on-one or in small groups. If you are unable to attend during the posted time slots, I am happy to make an appointment.

You are required to come to office hours at least once (with something to discuss) before March 1st. If you don't, your participation score for the semester will be zero (0).

Participation accounts for 5% of your grade. This part of your grade will be determined by whether or not you show up to office hours, how actively you participate (ask questions, make comments, contribute to activities) during class, and by how involved you are in answering other students' questions on Piazza. You should do these things anyway, since these activities help you better learn the material. I generally assign participation grades rather coarsely—100% to students who are fully engaged active participants, 50% to students who are nominally engaged (physically there and willing to participate when asked to), and 0% for students who really aren't engaged (trying to hide).

Class attendance is critical in this course. Lectures build on preceding lectures, and missing even a single class can make it difficult to keep up with the course material. Roll will be taken, and those who miss class miss important material and/or quizzes. Any student with more than three (3) unexcused absences may be dropped from the course.

Being absent, excused or not, does not change the responsibility for assigned work or material covered during the class. Excused absences require documentation. For University-sponsored events, students must provide written notice prior to the event. For all other excused absences, students should provide writtendocumentation to the instructor as soon as possible.

No make-up quizzes or exams will be given. If you arrive late on the day of a quiz or exam, you will be allowed to participate, but will not be given additional time to compensate for being late. If I am more than ten (10) minutes late, you should assume that I am dealing with an emergency and will not make it to class. Check your email and Piazza in those circumstances for further explanation.

Bring a laptop to class. We will regularly do in-class coding and other exercises, for which a laptop will be helpful. Roll will also be taken electronically. Some students also find it helpful to follow along in class on their laptops as I demonstrate small programs and programming techniques in class. We will use the Linux lab machines (in 110 McAdams) as the reference computing environment for the course. I strongly recommend that you run Linux, either natively or in a VM, on your laptop.

I also expect the following, both as a courtesy to your classmates, to yourself, and to me:

There is no lab section for this course; however, the Ubuntu lab machines (joeys, adas, babbages, and cerfs) will be used to test all of your assignments. Before submitting any code, you should make sure that it compiles and runs correctly on these machines. If your program doesn't work on the lab machines, then it doesn't work.

I do occasionally make mistakes. If you think I made a mistake when grading an assignment, quiz, or exam, you should email me, with detailed justification, within one week of the date the grades are available. If you don't, your original grade will stand.

Email is the best way to contact me for individual issues (use Piazza for generally-relevant communication). During normal working hours (9-5) on weekdays I check email frequently and I will try to respond quickly (hopefully the same day). I do also check email on weekends and evenings, but not nearly as frequently (almost never on Sundays). So, expect longer delays.

Remember that failure to plan and prepare on your part, does not constitute a crisis on mine. If you send me a project-related email right before a deadline, I may not answer it in time to be helpful.

In accordance with the University’s policy, I will do my best to provide reasonable accommodations to students needing accomodations. Students should contact Student Accessibility Services and myself to discuss their individual needs for accommodation as early as possible—at least a week before special accommodations are needed. You can make an appointment by calling 864-656-6848, by emailing, or by visiting Suite 239 in the Academic Success Center building. Appointments are strongly encouraged—drop-ins will be seen if possible, but there could be a significant wait due to scheduled appointments. If you receive a Academic Access Letter, please present these to their me as early in the semester as possible so that I can make accommodations in a timely manner. It is the student’s responsibility to follow this process each semester. You can access further information here:

Jan 15: Last day to register or add a class
Jan 23: Last day to drop a class without a W grade
Mar 15: Last day to drop a class without final grades

If you need help during this course, talk to me sooner rather than later; often a brief discussion will clarify things enough to get you back on track. The longer you wait, the harder it will be to catch up.

A few years ago, I was giving so much of the same advice that I started recording advice and posting it on YouTube. Most of the videos on the channel are inspired by real issues or questions that students have had in this class.

As members of the Clemson University community, we have inherited Thomas Green Clemson's vision of this institution as a “high seminary of learning.” Fundamental to this vision is a mutual commitment to truthfulness, honor, and responsibility, without which we cannot earn the trust and respect of others. Furthermore, we recognize that academic dishonesty detracts from the value of a Clemson degree. Therefore, we shall not tolerate lying, cheating, or stealing in any form.

Following the Clemson University Code of Student Conduct, academic dishonesty of any kind will be reported to the Clemson University Academic Integrity Committee. In the event that the committee reaches a finding of guilt, the student(s) involved in the misconduct will receive an automatic F for the semester. I will also recommend, at the board’s discretion, that the participating students be dismissed from the university. I take this policy very seriously. The University’s statement on academic integrity is posted here. The Clemson School of Computing Academic Honesty Policy can be found here.

Clemson University is committed to a policy of equal opportunity for all persons and does not discriminate on the basis of race, color, religion, sex, sexual orientation, gender, pregnancy, national origin, age, disability, veteran’s status, genetic information or protected activity in employment, educational programs and activities, admissions and financial aid. This includes a prohibition against sexual harassment and sexual violence as mandated by Title IX of the Education Amendments of 1972. This policy is located at Ms. Alesia Smith is the Clemson University Title IX Coordinator, and the Executive Director of Equity Compliance. Her office is located at 110 Holtzendorff Hall, 864.656.3181 (voice) or 864.656.0899 (TDD).