Links to sections on this page:
This is a senior-level undergraduate class in computer operating systems.
We will cover the principles underlying the design of various subsystems of
modern operating systems, ranging from process management and virtual memory
to file systems and access control. Instruction in these principles will be augmented
a series of projects in which students develop these subsystems within the
context of an instructional operating system.
Below are the specific, measurable skills a student will demonstrate by the end of the course. These objectives
will be both taught and assessed in the course and are aligned with the assignments, assessments and learning
materials.
Required:
Recommended resources:
The following schedule and topics are tentative and are subject to change without notice (and it's based on a 15-week semester).
For a summer session, the coverage is identical, but over 11 weeks.
At the end of very book chapters, there are exercises.
Students should treat them as additional resources.
These exercises will not be collected, graded, or dicsussed, although
students are encouraged to work on them if there is time.
NOTE: Since this is the first time I'm trying out quizzes, everything mentioned here is subject to some tweeking.
To make sure that students are keeping up with pre-recorded lecture and discussion video schedule, we will have a short quiz every week on Friday. Students will be quizzed on pre-recorded lecture and discussion videos of the current week. The quiz will be open book, open notes, and open Internet. The only restriction is that you must work on the quiz by yourself or it will be considered cheating. Compare to exam questions, quiz questions will be "easy" questions, assuming that you have watched the videos. Around 12pm every Friday, you will be able to download your quiz questions (in PDF) and an answers text file and before midnight on that day, you need to upload the filled-out answers text file using a submission web form. The submission timestamp must be strictly before the end of day on the quiz day to be considered on time . Starting at midnight, you will lose 5% for every late minute. Please note that in order to determine whether your submission was on time or not or to figure out late submission penalty, the only timestamp we can go by is the timestamp in the submission ticket issued by my server. We cannot take any other form of timestamp into account and we cannot make an exception. We will automatically drop two of your lowest quiz scores when we calculate your final grade. Please note that if you cannot take a quiz, there is no way to make it up or have you take the quiz at a different time. Some students have Friday sailing classes and maybe out at sea without an Internet connection. This is a course time conflict with our discussion section and it's not an approved time conflict. Since we are automatically dropping two of your lowest quiz scores, if this only happens twice in the semester, make sure you don't miss any of the other quizzes. All quiz questions are multiple choice questions with 5 answers and there will be 5 multiple choice questions in each quiz. The quiz questions will be similar to the multiple choice questions you will get in the exams. The grading of the quiz questions will follow the same rule as grading multiple choice questions for exams. Since a quiz is basically a "take-home" test, in order for you to participate, I will need you to sign a "honor code pledge" to promise me that you will not cheat (and work on the quiz by yourself). If I don't have a signed pledge from you, you will not be able to download the quiz and you will get a zero for the quiz. To get you familiar with the quiz process, we will have a "Quiz 0" before the first real quiz. Quiz 0 will not count towards your class grade. So, it's basically a quiz rehearsal. A tentative quiz schedule is available neat the bottom of the discussions web page.
You will be expected to complete a sequence of kernel programming
assignments which develop various components of a real operating system:
process management, file systems, and virtual memory.
All projects will require a fairly strong background in C programming, which you are expected to pick up on your own. There will be 1 to 2 warmup programming assignments at the beginning of the semester to make sure that you are up to speed with C and doing multi-threading in C. There will be 3 kernel programming assignments and they are extremely difficult and can be very very time-consuming. You can do these assignments in teams of two to four students. Since the kernel programming assignments are interrelated, you must pick a team at the beginning of the semester and stick with the team till the end of the semester. If you'd prefer, you can do the kernel assignments by yourself (although this is only recommended for students who are good programmers and are good at debugging using a commandline debugger). All programming assignments can only be graded on a "standard" 32-bit Ubuntu 16.04 system. You will receive no credit if your program cannot run on this platform. For more information, please see the projects web page.
A midterm and a final examination will be given.
The date and time of the midterm examination is posted in the
General Information section of the class web page.
The date and time of the final examination is firm and it is also posted in the
General Information section of the class web page.
Any scheduling conflicts regarding the midterm exam date and time (i.e., time conflict with another class)
must be resolved with the instructor at least two weeks before the exam date.
Exam LocationsUnless otherwise specified, all exams will take place in the lecture class room of your respective section. If an exam is to take place in a room different from the lecture class room, information will be explicited provided in the corresponding item in the General Information section of the class web page.Exam QuestionsThere are three types of exam questions that I usually ask. The first type is a calculation-type question. Pretty much anything that can be calculated/computed by running an algorithm can be asked in an exam. For example, I can ask you to compute a schedule using a particular scheduling algorithm. I can also ask you to calculate average waiting time for a particular scheduling policy. (Calculators will not be permitted during in-person exams, but you can leave your answers as fractions for non-integer answers.) I may also ask you about what a data structure (e.g., tree, hash table, etc.) would look like after certain operations have been performed on it. Usually, for this type of questions, you must get the answer right and there is not much room for partial credits.The second type is multiple-choice questions. Unless explicitly stated, every multiple-choice question has one or more correct answers. Even if the question asks, "which statements are correct" or "under what condition", it can have one or more right answer(s) (please ignore minor grammatical and spelling mistakes). Please note that an incorrect statement can never be a correct answer (unless the question asks you to select statements that are incorrect). Please check all the correct ones and don't check any of the incorrect ones. The total number of points for a question cannot go negative. Therefore, if you are going to leave a question unanswered, you might as well take a guess. For a multiple choice question, your answers must be separated by "separating characters" (e.g., space, command, etc.). If you write "12", it will not be interpreted as "1 2" (even though there is no 12th answer). The scoring of multiple-choice questions is as follows. Multiple-choice questions are worth 2 points each and you are given 5 selections for each such question. If you select all the correct answers, you get 2 points. If the question has only one correct answer, the correct answer is worth 2 points. If the question has two correct answers, each correct answer is worth 1 point. If the question has three correct answers, the first correct answer is worth 1 point and each of the other correct asnwers is worth 0.5 point. If the question has four correct answers, each correct answer is worth 0.5 point. No question has 5 or zero correct answers. For every wrong answer you have selected, you lose 1 point. So, it may be best not to guess. Let's look at a concrete example. If a problem has 3 correct answers and you selected 2 correct ones and one incorrect one. You will get 1.5 points for the correct answers and -1 point for the incorrect answer. So, you will end up with 0.5 point. On the other hand, if you have only selected one of the correct answers and didn't select anything else, you will end up with 1 point. The third type is to ask you to give the best answer for a given question. (If a question says, "In N words or less...", it's giving you a hint that the answer should be N words or less. You don't have to answer in N words or less. There is one exception though. If the question is of the fill-in-the-blanks type where N is small, then you must not use more than N words.) For this type of question, you get credit for including the "best answer". You may get deductions for including "bad answers". What you need to demonstrate is that you can distinguish between answers of different quality and write down the best answer. (For these questions, there is no need to write complete English sentences when you answer exam questions. Just give me the important stuff!) Let me give a couple of silly examples (with questions that's not in the scope of any exam).
Weenix QuestionsIf a question does not mention "weenix" explicitly, you must not give a weenix-specific answer. Most weenix-related questions are mostly high-level questions, testing about your understanding of "weenix". Although I may ask you about the purpose and usage of a specific field inside a particular important kernel data structure.Old ExamsBelow are the midterm exams from Spring 2024: Below are the final exams from Spring 2024: Please note that since I tend to reuse old exam questions, I cannot have a discussion about old exam questions or answers. Students are welcome to discuss old exam problems, but please don't ask me about who is right and who is wrong. You need to learn to figure this out with your classmates.Lecture SlidesIf a lecture slide has a grey X in the lower left hand corner, I will not ask questions from that slide. If a lecture slide does NOT have the grey X, then it's possible that I will ask questions from that side (you need to figure out if it's LIKELY that I will ask questions from that slide or not; please do not ask me whether a particular slide is likely or not because I won't give you an answer for it).Exam GradingIn order to be fair to the entire class, we can only grade based on what you put down on the exam paper. We must not take into consideration what's in your mind when you wrote your answers. We have to assume that you wrote what you meant and meant what you wrote.In general, better answers may score more points. If you give very high level and generic answer that's generally true or basically just repeat the question, you probably will get very little partial credit for it! You need to answer a specific question with a specific answer. On the other hand, if the question called for a general answer and the answer you gave only applies to some specific examples, you probably will get very little partial credit for your answer. You must not give examples to answer general questions. If I asked a question straight from the lecture slides, the best/correct answer is the one on the lecture slides. If you disagree with what's on the slides, you must complain when you are studying for the exam, i.e., before the exam. Once the exam starts, it's too late to complain that you don't like the answer on the lecture slides. In an exam, if you give an answer that's different from the lecture slides, you may receive partial credits, at the discretion the TA. Finally, I reserve the right to ask about things that I think you should know and not on lecture slides and not in the textbook. Study for ExamsI often get questions about how to study for exams. Here's what I would say about my exams.I mentioned on the exams lecture slides that our exams are mainly about "knowledge about course material" AND "critical thinking". I think a lot of students lost points in multiple choice questions because they were not careful about reading questions and answers. If you are not very careful in reading multiple choice answers and you select an incorrect answer, you would lost 1 point and these points do add up. Since all students in CS 402 are grad students, it's reasonable to ask everyone to "think critically". For every "wrong" answer in a multiple choice question, if you think carefully (based on your knowledge about the course material), you should be able to say, "Obviously, this is wrong because of this and that", i.e., you should be able to form an argument that clearly show that a particular answer is incorrect. So, you definitely need to know the course material well enough so you can form those arguments. You also need to read every question and every answer very carefully so you won't choose an incorrect answer. One thing I would recommend is to form a study group to study for exams. You can form a study group with your kernel teammates or teammates from another team. You can come up with your own true/false question when you read lecture slides and ask other students to figure out whether your statement is true or false. If someone answered "false", he/she must give an explanation why the answer is false. If you get into the habit of identifying exactly why a particular statement is false, I think you will be able to do the same during exams.
The grading breakdown is as follows:
The above percentages will be used to calculate a numeric score. Two methods will be used to calculate your final letter grade: Your class letter grade will be the higher grade based on (1) or (2). Please also note the following:
All project assignments must be turned in on time.
Late submissions will receive severe penalties.
The submission deadline of all assignments are set at 11:44:59pm.
Due to clock skews, electronic submissions of projects assignments will be accepted within 14 minutes and 59 seconds after the specified deadlines without penalties.
Therefore, if you submit strictly before midnight (i.e., 12:00:00am), it would be considered on time.
Starting at 12:00:00am, you will lose 1% every 5 minutes.
For example, if your submission has a timestamp that is 32 minutes after the grace period, 7% will be deducted from your assignment after grading;
if your submission has a timestamp that is 8 hours, 10 minutes, and 1 second after the grace period, you will receive a score of zero (and your assignment will not be graded).
The figure below summarize such deductions.
For all assignments (except for kernel assignment 3), you can submit and receive a 50% deduction before the next assignment submission deadline. The requirement is that you must inform the instructor that you are taking this option within 72 hours of the assignment submission deadline If you have already made a submission and you want to use this option, you must send an email to the instructor to withdraw that submission (i.e., don't grade that submission). The figure below summarize such deductions. (Please note that this policy does NOT apply to kernel assignment 3 because we are not permitted to have assignments due during the final exam "study days" and we also need to give the graders enough time to get it graded.) If you are unable to complete a assignment due to illness or family emergency, please send email to the instructor as soon as possible to get an extension. A documented official proof of illness or family emergency is required in order to get an extension (doctor's note is required as proof of illness). In general, when you get sick, it's best to see a doctor and get a note just in case you may need it later (although during the pandemic, the rules are more relaxed because doctors don't want you to go see them just to get a note). Please note that for a group assignment, since we always have teams that have only one student, in order to get an extension of documented illness or family emergency, all member of the team must have documented illness or family emergency. You also get 2 free late days that can be applied to warmup assignments and 3 free late days that can be applied to kernel assignments to delay a deadline and you get to decide how you want to distribute these free late days. You can apply them all on one qualified assignment, or spread it any way you'd like among all the qualified assignments (a whole day at a time). Although for kernel assignment 3, you can use at most one free late day. If you want to apply free late days to a particular assignment, you must inform the instructor (not the TAs or the graders) soon after you have made your final submission (you don't need to ask for permissions to use your free late days ahead of time). Please also understand that if you want to use free late days for a kernal assignment, you must use the same number of free late days for each kernel team member since we only grade one particular submission from your team. By the way, free late days can only be used for late submissions. You cannot use them to get early submission extra credits. Also, once you have received a grade for a particular assignment which you have spent free late days on, you cannot change your mind and want to "un-use" a free late day you have used on that assignment. Finally, once an assignment is graded, it too late to say that you want to use free late days on it. For kernel assignments, you can only get an extension if everyone in the team is sick. Please also understand that even if you have an approved extension, all your work must be submitted before any final exam starts (which is on the Wednesday of the final exam week). If you have a prolonged illness and cannot finish your assignment before that, your only option is to take a grade of INCOMPLETE and complete your missing assignments in the next semester. But please understand that, in this case, you are only eligible for a grade of INCOMPLETE if you cannot take the final exam due to illness. Once you have taken the final exam, this option is no longer available.
It is the policy of USC Student Health
that they will not issue a "note from a doctor".
If you are sick, in order for it to be considered a documented illness,
all I need is something that shows that you have visited a medical facility.
I would assume that if you were at a medical facility, you must have been sick.
For Student Health, you can get a Medical Absence form from them and you can fill it out, date it and sign it
and send a digital copy of it to me and that would satisfy the requirement.
So, anything from Student Health (or doctor's office) with your name on it and the date of your visit would satisfy the requirement. It doesn't have to say why you were at the doctor's office! It just has to say which day you were at the doctor's office. Please do not ask Student Health to give you a "doctor's note" because they won't do it. If you have questions or concerns, please send an email to the instructor. IMPORTANT: Due to COVID, USC Student Health is swamped and they do NOT want you to visit them just to get a "note from a doctor"! You should go to Student Health only if you are "sick enough" that you need to see a doctor. Therefore, "a note from the doctor" as proof for documented illness is not required for this semester. If you just have a cold/flu symptom, please checkout the Student Health web site and follow their recommendations. If your symptoms are severe enough and you cannot work on your assignment, please contact the instructor regarding getting an extension.
Assignment RegradesAll requests to change grading of programming assginments must be submitted in writing within one week of the time the initial grade was announced to you. Requests must be specific and explain why you feel your answer deserves additional credit. A request to re-grade an assignment can result in the entire assignment being re-evaluated and as a result the score of any part of the assignment be increased or lowered as appropriate. Exam RegradesEach TA is required to use one standard when grading all the exams in his/her section. Therefore, regrade for exams is not about arguing for points but about whether the TA has made a mistake in grading or not. If you think the TA has made a mistake, you should write down (on the cover page of the exam) which problem/subproblem needs to be regraded and why you think the TA has made a mistake. Plese limit the description of your rationale to be only one sentence long (e.g., "my answer is also correct", "I deserve more partial credit", etc.). There is no need to discuss your answer or your rationale with the TA since the TA is required to grade entirely based on what you wrote on the exam paper (and thus must ignore everything you said during a regrade session).
Office hours will be held in Zoom meetings.
I will have to limit the time for each student to be 15 minutes max to give other students a chance.
You are welcome to request a breakout room so we can discuss your code. If you don't see me in the
main room, most likely, I'm in the breakout room, so please just wait in the main room.
The wait list in the main room may be long.
Therefore, there is always a possibility that by the time the office hour ends, you are still on the wait list.
It may be best to email your questions to me or post your questions to the class discussion forum.
I will keep the Zoom meeting running during the entire office hour. When no one is waiting to ask me questions, I may walk away from my computer. If when you arrive to the office hour and I'm not in front of the computer, please send me an email. If you know that you will arrive to the office hour at a certain time, please send me email so I can make sure that I won't walk away at that time (although please understand that this is not an "appointment" since I may be talking to another student already). Also, at this time, I'm not sure if the waiting room feature would work! The TA told me that if you login from USC, you would bypass the waiting room! Therefore, if someone is showing me his/her code, another student can easily copy the code! To make sure that this cannot happen, please only talk about your code if we are in a private meeting. This means that during office hours, if you want to share your screen in the main room, we should be only looking at common course material such as lecture slides and class web pages.
There are two ways to get extra credit in this class.
Please note that due to my fairness policy, I cannot offer any individual extra credit work.
Unless otherwise specified, programming assignments and exams must be that of the individual student
(for group programming assignments, the work must be completely that of the group members).
It is often productive to study with other students. However, if any portions of the
programming assignments are found to be shared between two (or more)
students, zero credit will be given to all students concerned and all students
will be disciplined. This policy is in the interest of those students who
do their own work, which hopefully applies to all of you in this class.
This policy also holds for programming assignments. In this class, we will use sophisticated automated program checkers to detect cheating. Be aware that the program checkers have demonstrated very good results and are widely used within the academic community. Any student caught cheating will be given zero credit and will be disciplined. It is the students responsibility to submit their assignments electronically in time. For students who satisfied the prerequisite at other universities or through work experience, this course assumes that you understand data structures, basic algorithms, and UNIX programming. You should be able to write large programs in C. No special assistance or consideration will be offered if your background is inadequate.
During the semester you are responsible for completing the assigned
lecture videos, programming assignments, and exams.
You must keep up with the assigned lecture and discussion videos. Please watch the lecture and discussion videos before the corresponding live class. This course is designed so that the lecture videos prepares you for doing the programming assignments. If you fall behind in viewing the lectue videos, you will have a difficult time doing the assignments.
Exams will take place during the assigned times. You are expected be available during class time on the date of the midterm exam and during the assigned time for the final exam. You must take the exams for the section in which you are registered.
The instructor must treat all students equally and cannot
give special treatment to any particular student.
Therefore, please do not ask special favors from the
instructor because of your circumstances.
This may seem unfair to you because you believe that your
circumstances are special (understandably, everone does).
Other than the exceptions setup at the beginning of the semester (mostly for "remote DEN" students),
the rule the instructor must follow is that whatever
he offers you, he must offer to the entire class.
Someone students don't understand why I am so strict with rules. Some think that it's just a power trip for me. The reason for sticking to rules is that I have the responsibility of treating all students fairly! If I apply one rule to one student and don't apply the same rule to another student, I think that's totally unfair. I think fairness is very important. Without fairness, grades have no meaning. The only way I know how to be fair is to have rules that are written down clearly and stick to all the written rules. When you ask me to bend a written rule for you, please understand that you are asking me to be unfair to all other students; and therefore, I will not bend the rule for you.
Students who are registered with the Office of Student Accessibility Services (OSAS)
must inform the instructor regarding the type of accommodations that have been
approved by the university. Please send a copy of your Letter of Accommodation
from OSAS to the instructor by the end of the 3rd week of classes
so that the instructor can make sure that the required accommodations will be satisfied.
Auditing "unofficially" is not permitted for this class.
If you are officially auditing this course (i.e., register for this course under the no-grade option), you will receive all the course materials as other students. But you will not be permitted to form or join a team with students who are taking this course for grades to do the kernel assignments.
Email is a serious communication tool. For this class, you should
setup your email server so that you do not drop any email from me
(i.e., from <bill.cheng@usc.edu>).
Pretty much all class related announcements will be sent through the class Google Group. Therefore, you are required to be a member of this Google Group. As messages are posted to the class Google Group, you will receive email notifications and you should read all these class-related emails. Please see instructions on how to get on this group (you should do this as soon as possible). You are strongly encouraged to send private email messages to me if you have questions about programming assignments or lectures. If the answer is appropriate for the entire class, I would normally anonymize the reply and send the reply through the class Google Group and bcc a copy to you. So, please don't be shy to ask questions! One type of question I often get over email or see in the class Google Group is: Here is my understanding of X. Am I right (or is this correct)? Correct me if I'm wrong...Although this type of question is perfectly fine during office hours, this is really not a good way to ask questions over email. If no one corrects you, you must not conclude that you were correct! If you see "X" defined or described in lecture slides or in the textbook, you should try to understand why it was stated that way. A better question to ask over email would be to ask about why it was stated that way. Another type of question I often get is the following: I am thinking about not following the spec or grading guidelines and would like to do this instead. Is it acceptable (or is this okay)?What you are really asking is whether you will receive full credit or not. Please just stick to the spec and the grading guidelines. (Of course, if there is a conflict between the spec and the grading guidelines, you should let me know and ask me to fix one of them.) Some students have asked to do video conferencing or voice calling because emailing is too inefficient. Due to my fairness policy, if I offer video conferencing or voice calling to one student, I must offer the same to all students and that's just not feasible/scalable given the class sizes of CS 402. If you have questions, please feel free to email me as soon as you have them in case it has to take several rounds of emailing to get your questions answered.
Please make sure you read the Academic Integrity Policy of this course.
The diversity of the participants in this course is a valuable source of ideas, problem solving strategies, and engineering creativity.
I encourage and support the efforts of all of our students to contribute freely and enthusiastically.
We are members of an academic community where it is our shared responsibility to cultivate a climate where all students and
individuals are valued and where both they and their ideas are treated with respect, regardless of their differences, visible or invisible.
A link to the
USC Summer 2024 academic calendar
is provided here for your convenience.
A link to the USC Summer 2024 CS schedule of classes is provided here for your convenience.
(These resources below are provided for your information.
Please note that the instructor has not read most of them.
Please use these resources at your own risk!)
Programming (please understand that the information on these web sites may be incorrect):
|
|||||||||||||||||||||||||||||||||||||||||||||||||||