Introduction to Operating Systems
CPSC/ECE 3220 — Section 003 — Fall 2024
TTh, 2:00PM – 3:15PM (114 McAdams Hall — In Person)
Jacob Sorber
jsorber at clemson dot edu
225 McAdams
Bennett Cooper
bwc at clemson dot edu
201 McAdams
Tuesday | 3:30–4:30 pm |
Wednesday | 11:00 am–noon (in Riggs B12) |
Thursday | 9:00–10:00 am |
Office Hours will be held in person (in my office except for Wednesdays). If that becomes impossible (due to natural disasters, travel, or other logistical issues) we may switch to virtual office hours. If that happens, I will post information to Piazza or Canvas.
Monday | 1:00–2:30 pm |
Friday | 10:00–11:30 am |
http://people.cs.clemson.edu/~jsorber/courses/cpsc3220-f24/
Programming assignments, exam times, and recommended readings will be posted on the online course schedule, found at the following URL.
http://people.cs.clemson.edu/~jsorber/courses/cpsc3220-f24/schedule.html
This site is a living document and I will be updating the content throughout the semester. Please check it regularly.
I have two main 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 wide range of computing problems.
Key Topics:
- hardware support of operating systems
- synchronization of concurrent processes and threads
- scheduling of threads
- allocation of physical and virtual memory
- storage of data in files
Learning Outcomes: Students who successfully complete this course should be able to do many things, including the following:
- Explain the actions of hardware in response to an interrupt.
- Explain why a processor should have at least two execution modes to support a multi-user operating system (e.g., user mode and kernel mode).
- Describe possible errors arising from uncontrolled concurrency among multiple threads.
- Use a synchronization technique to control concurrency among multiple threads.
- Describe the data structures needed to support thread management and thread scheduling.
- Explain the need for dynamic priority adjustments in thread scheduling (e.g., priority aging and priority inheritance).
- Implement policies for dynamic memory allocation.
- Describe how a virtual memory address is mapped into a physical memory address in a computer system with paged and segmented virtual memory.
- Describe how files are stored in secondary storage.
- Explain how an access control list protects files.
This is not a course on how to program. I assume you already know how to program. That said, 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 TAs, 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. That will be considered an academic integrity violation.
The piazza url for the course is https://piazza.com/class/m01cz9mqg5w7dh/. 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 and other technology professionals. 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);
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 — really, for your own sake. 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
SSH: anonymous@buffet.cs.clemson.edu:jsorber/cpsc3220-f24-public
HTTPS: https://buffet.cs.clemson.edu/vcs/u/jsorber/cpsc3220-f24-public/
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, videos, and other exploration activities from the text and online sources for most class meetings. I expect readings to be completed before class meetings. The point of reading before class is to get you thinking about what we're going to talk about. Students who even partially do the readings will get a lot more out of our in-class discussions.
There will be several programming assignments (probably 4). They must be submitted electronically (via https://autolab.computing.clemson.edu/) by 4:00 PM on the due date, unless otherwise indicated on the schedule. I don't accept late work, period. Well, I occasionally make exceptions for medical emergencies and natural disasters. The assignments will be challenging, but I will give you more time than you should need (usually three weeks) to complete them. 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 mostly on how your code works, not based on how much code you wrote or 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. Each project will be open for at least 3 weeks, and you will have the opportunity to submit 12 times per week (so 36 submissions total). I limit submissions because I don't want you to use the autograder as your main form of testing (do your own testing). This offers a distinct advantage to students who start early and submit early. If you get an autograder response you don't understand you can 1) ask on Piazza, 2) bring it to office hours, or 3) contact the TA. 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. Whatever the case, please do ask.
I will 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). Normally, I don't do make-up quizzes. Instead, I will drop the lowest three quizzes to account for unavoidable absences, infrastructure failures, or off days. (Contact me for medical emergencies where this is not sufficient).
There will be one midterm exam given around mid-semester
The final exam will be cumulative. Details 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 try to find another time, but please do give me as much advance notice as possible.
You are required to come to office hours (and discuss something with me) at least once before September 28th. 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 present and willing to participate when encouraged to), and 0% for students who really aren't engaged (trying to hide).
It's important. Class attendance is critical in this course. In class discussions and activities will build on earlier discussions, and missing class can make it difficult to keep up with the course material. Roll will be taken, and those who miss class will miss important material and/or quizzes. A student with more than three (3) unexcused absences may be dropped from the course, at my discretion.
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 written documentation to the instructor as soon as possible.
If you miss an exam due to a medical emergency or natural disaster, please contact me as soon as it is safe to do so, and we will discuss make-up options (more info below). Outside of these conditions (or another form of genuine emergency), no makeup exams will be given.
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.
If you have a medical emergency, seek appropriate medical help immediately. Then, as soon as you can, contact me, send me documentation, and we will figure out an adjusted plan for you to complete the course work. I will use this approach for natural disasters and any other genuine emergencies.
What if I have an medical issue? If I get sick and attending in person would put you all at risk, we will revert temporarily to on-line instruction. If I have a medical emergency and am unable to teach, we will make further adjustments as necessary.
If class is ever cancelled due to inclement weather, a University power outage, or some other unforeseen issue, exams or quizzes scheduled for that day will be given at the next class meeting unless otherwise arranged and clarified by the instructor. If the cancellation prevents project submissions (i.e., the autograder goes down) project deadlines will be adjusted and I will post those adjustments to Piazza and the course schedule.
Bring a laptop to class. We will regularly do in-class programming activities 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. You can use http://virtual.computing.clemson.edu/ or SSH to connect to these machines remotely. I personally prefer SSH. I strongly recommend that you run Linux, either natively or in a VM, on your laptop. If your laptop has a difficult time running a full VM, creating a headless VM using something like Vagrant is a great option.
I also expect the following, both as a courtesy to your classmates, to yourself, and to me:
- Laptop speakers and alarms should be set to mute or off before coming to class.
- All games, social media, email, IM, etc MUST be turned off during class. If you engage in unauthorized communication or entertainment during class (e.g. surfing the web, instant messaging, playing games, etc.), you will be asked to leave. Repeat offenders will be dropped from the class. If this activity occurs during an exam or quiz, it constitutes academic dishonesty (see following).
- Mobile phones and pagers (does anyone still use pagers?) are to be turned OFF and will not be used under any circumstance during the class period.
- The use of earphones in class or during exams is prohibited, unless required and approved for appropriate accommodations.
There is no lab section for this course; however, the Ubuntu lab machines (the ada, babbage, cerf, cirrus, and newton machines—or a Docker container closely resembling them) 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, as do TAs and graders. If you think we 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 on weekdays I check email frequently, and I will try to respond quickly (hopefully the same day). I also sometimes 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. For example, if you send me a project-related email an hour or two before a deadline, I may be busy with other things and not be able to 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 studentaccess@lists.clemson.edu. 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 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: https://www.clemson.edu/academics/studentaccess/.
Aug 27: Last day to register or add a class
Sep 4: Last day to drop a class without a W grade
Oct 28: Last day to drop a class without final grades
I really want you all to succeed in this course. Throughout the semester, I hope you will talk to me and others in the class. 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 and the less I will be able to do to help you. That said, even if you've waited longer than you should have, I hope you'll come talk to me about it.
A few years ago, I was giving so much of the same advice that I started recording advice and posting it on YouTube. The channel has grown a life of its own, but many of the videos on the channel are inspired by real issues or questions that students have had in this class.
As a student in this class, you are forbidden from buying merch, supporting the channel via Patreon, or providing any other kind of material support for the channel. That would be a problematic conflict of interest that I will treat as an academic integrity violation.
http://www.youtube.com/c/JacobSorber
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.
In case that's not clear enough, I expect you to write your own code in this class. That is code that came from your head. Turning in code that is not yours, whether it is copied from an online source or generated by a generative AI, is considered cheating.
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 take this policy very seriously. The University’s statement on academic integrity is posted here. The CECAS college statement can be found here. The Clemson School of Computing Academic Honesty Policy can be found here.
I may, at some point, let you work in pairs or groups. If I do, there are a few things to keep in mind.
- I consider freeloading (letting your teammates do all the work) to be an AI violation.
- You are responsible for the integrity of your group's work. If a team member submits plagiarized code, I will charge the whole group.
Please ask if you have any questions about what constitutes academic dishonesty.
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 (e.g., opposition to prohibited discrimination or participation in any complaint process, etc.) 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. The University is committed to combatting sexual harassment and sexual violence. As a result, you should know that University faculty and staff members who work directly with students are required to report any instances of sexual harassment and sexual violence, to the University's Title IX Coordinator. What this means is that as your professor, I am required to report any incidents of sexual harassment, sexual violence or misconduct, stalking, domestic and/or relationship violence that are directly reported to me, or of which I am somehow made aware. There are two important exceptions to this requirement about which you should be aware: Confidential Resources and facilitators of sexual awareness programs such as “Take Back the Night and Aspire to be Well” when acting in those capacities, are not required to report incidents of sexual discrimination. Another important exception to the reporting requirement exists for academic work. Disclosures about sexual harassment, sexual violence, stalking, domestic and/or relationship violence that are shared as part of an academic project, a research project, classroom discussion, or course assignment, are not required to be disclosed to the University's Title IX Coordinator. This policy is located at http://www.clemson.edu/campus-life/campus-services/access/title-ix/. Ms. Alesia Smith is the Executive Director for Equity Compliance and the Title IX Coordinator. Her office is located at 223 Holtzendorff Hall, phone number is 864.656.3181, and email address is alesias@clemson.edu.
Materials in this and all courses should be considered to be copyrighted. They are intended for use only by students registered and enrolled in a particular course and only for instructional activities associated with and for the duration of the course. They may not be retained in another medium or disseminated further. They are provided in compliance with the provisions of the Teach Act. Students must seek permission from instructors to record any class activity, including lectures, discussions, and presentations. Students should refer to the Use of Copyrighted Materials and “Fair Use Guidelines” policy on the Clemson University website for additional information (link https://clemson.libguides.com/copyright).
Emergency procedures have been posted in all buildings and on all elevators. Please review these procedures for your own safety.