Introduction to Operating Systems
CPSC/ECE 3220 — Section 001 — Fall 2022
TTh, 11:00PM – 12:15PM (108 WFIC — In Person)
jsorber at clemson dot edu
Office Hours will be held in person (in my office). If that becomes impossible (due to pandemic stuff, travel, or other logistical issues) we may switch to virtual office hours. If that happens, I will post information to Piazza or Canvas.
Later in the semester, if we have a TA, I will list the TA office hours here:
Programming assignments, exam times, 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 wide range of computing problems.
- 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/clemson/fall2022/cpscece3220section1/home. 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 serious 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
60% – Assignments
10% – Quizzes
10% – Midterm Exam
15% – 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 handin.cs.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 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. Every day at noon, the autograder will download all new submissions, grade them, and email the results to you. This offers 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 to run) 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 TA; 5) contact me. If you get a response from the autograder 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 will occasionally give short “pop quizzes” at the beginning of class (probably at least 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 make an appointment.
You are required to come to office hours (and discuss something with me) at least once before September 29th. 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. Lectures 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.
This is an in-person course, and physical attendance is expected. But, please don't bring COVID or other infectious diseases to class. If you experience COVID symptoms or test positive for COVID, you should contact me as soon as possible. I will provide lecture recordings for these students during the period of illness and quarantine. They will be expected to attend in-person once approved to return to campus.
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., handin or 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 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 for appropriate accommodations.
There is no lab section for this course; however, the Ubuntu lab machines (joeys, adas, babbages, cerfs, and newton) 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 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 email@example.com. 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 30: Last day to register or add a class
Sept 6: 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 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 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.
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 firstname.lastname@example.org.
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.