Operating system as resource manager. Processor management and scheduling, deadlocks, concurrency, memory management and protection and security as applied in modern operating systems. Concepts are illustrated via laboratory assignments which heavily emphasize concurrency.
Dr. Peter A. H. Peterson
Office: Heller Hall 329
Office Hours: MWF 11A-12P (for other times, see my homepage)
Office Hours: M 1-2, T 9-10, Th 10-11
|Lab I||M||5:30-6:50||MWAH 177|
|Lab II||M||6:00-7:50||MWAH 177|
Important note: lab attendance for the first hour is mandatory. The first lab session will start at 5:30 due to a scheduling conflict. (MWAH 177 will be available at 5:00, but attendance will not be counted until 5:30.) Students are welcome to stay for the full lab period. You can leave early if you finish the lab in less than an hour. Bring headphones so that you can listen to videos privately.
We will use Moodle to assign reading and homework and for submissions, grading and other class-related activities.
We will use Google Groups for discussion and announcements.
In extremely special circumstances, pre-requisites may be waived by the instructor's consent.
Operating Systems: Three Easy Pieces (a.k.a, OSTEP)
Remzi and Andrea Arpaci-Dusseau
OSTEP is freely available online as PDF chapters. However, at a fraction of what you'd pay for a typical textbook, you're also able to order it in hardcover, softcover and as a single, unified PDF.
I'm really excited to use OSTEP for this class. Not only is it free (as in beer, not as in speech), but it also happens to be the best textbook I could find! It is a well-written, easy to read, fun and organized tour of Operating Systems. It's also divided into roughly one section per class lecture. As a result, we are going to more-or-less read the entire textbook this semester! "Wait," I hear you saying, "the book is basically 600 pages long! How are we going to read the whole thing?" Well, there are around 40 lectures per semester (usually a few more), and 600 divided by 40 is 15. This means you only need to read about 15 pages per class period. Totally manageable! Since we don't have class every day, that's less than 8 pages per day. And think of what an OS whiz you're going to become by the end!
Forty years ago, students learning Operating Systems would study the actual sourcecode of the original UNIX along with commentary by a professor, John Lions. Eventually, the copyright holder of UNIX made this illegal, inspiring many people to photocopy the sources and discuss it in secret. "The Lions Book" became the closest thing OS geeks had to a sacred text. This change also inspired the creation of other UNIX-like operating systems, including a famous one designed for education, MINIX. MINIX wasn't truly free (as in speech), which inspired a Finnish Computer Science student named Linus Torvalds to write his own UNIX for the i386 CPU. He named it -- wait for it -- Linux.
Studying the original UNIX sources is now legal again, but the code is so old now that it is not very useful for a hands-on course (the version of C it uses is obsolete and it doesn't include parallelism, for example). Fortunately, some folks at MIT developed the xv6 Operating System, which is a modern take on a bare-bones UNIX for OS classes like ours. xv6 includes sources and exercises, just like a modern Lions Book would. We'll use xv6 (and other software) for our labs and homeworks.
While lab session will be in a UMD classroom, we'll SSH into compute servers operated by the UMD CS department to run our code. This means that you'll be able to work on your homework from pretty much anywhere and won't need to install much, if any, extra software on your computers besides the PuTTY ssh client (if you run Windows). Users of Linux and OS X won't need to install ssh or a terminal emulator.
Other readings (paper handouts or online resources) may be assigned and used during class. We will send an email to the class when this occurs.
Moodle will be used to manage multiple aspects of the course, including homework submission, grading, announcements, discussions, etc. (See link at top of syllabus for current Moodle site.)
Grading is broken down as follows:
Extra Credit (3-6%) -- There will be extra credit opportunities throughout the semester (providing 3-6% extra points) composed of a mix of moderately difficult questions/projects and much more difficult "challenge problems" to encourage you to dig deeper. Extra credit points will be added to your earned percentage of required deliverables. For example, if you have an 89% based on all required tasks and you also earned 3% of extra credit, your final grade percentage would be 92%.
A new or ongoing lab/project will be assigned most weeks during the scheduled lab section along with accompanying videos or documentation. You are required to attend at least one hour at the beginning of a lab section per week. Sometimes lab will include a live demo or discussion. Often, it will be unstructured so you can watch the video, read documentation, start work, or ask your TA or instructor questions. (Exceptions to the one-hour rule include finishing the task early.)
Final grades will be assigned as follows:
We will make every effort to post grades to Moodle in a timely fashion.
This course will include a written final, the time and location of which are:
The Midterms and Final will be composed of "choice questions", simple and open-ended short answer questions, questions about papers or other materials, etc. and will be of the general character of the homework questions. The final will be cumulative but will skew towards the material presented after the last midterm.
While theory and intellectual knowledge (i.e., "book larnin'") about Operating Systems are essential, being able to use that knowledge effectively in the real world is just as (if not more) important. As a result, in addition to reading and written work, this Operating Systems class includes a significant amount of hands-on coding, debugging, experimentation, etc., on real systems. Required projects will involve programming and debugging primarily in C and Python, but potentially other languages. You do not need to be a coding wizard to succeed and no specific expertise with these languages is expected. However, basic programming literacy and proficiency in at least one language such as Python, Java or C/C++/C# and the understanding that all computer languages are fundamentally similar is critical. Experience working at the Linux/Unix command-line will be helpful but is not strictly necessary.
However, the most critical prerequisite is a willingness to learn, experiment, push yourself and do things.
We will be performing our work primarily on compute servers operated by the CS department. We will access these computers through the SSH command line interface. This means that you can perform most of work on your projects on campus or at home and should only rarely need to install any special software on your personal computer.
Class will include discussion and quizzes in addition to lectures on assigned reading. Students are expected to attend all scheduled class meetings. It is the responsibility of students to plan their schedules to avoid excessive conflict with course requirements. However, there are legitimate and verifiable circumstances that lead to excused student absence from the classroom. These are subpoenas, jury duty, military duty, religious observances, illness, bereavement for immediate family, and NCAA varsity intercollegiate athletics. For complete information, please see: http://www.d.umn.edu/vcaa/ExcusedAbsence.html
If you miss class for whatever reason, it is your responsibility to obtain the information covered in class from a classmate, instructor or TA.
Lab attendance is counted and included in the final grade.
Late work will not be accepted (excepting certain extra credit problems or because of health issues or true emergencies) because we may do "post-mortems" on the projects in class and interactively discuss the answers. Partial credit will be given when appropriate! Therefore, turn in your work, even if it is not completely finished.
Exams and quizzes will not be given early, and make up quizzes will not be given (see "Late Work," above). Make up exams will be provided only in extreme emergencies (and with the instructors consent).
I will not give incompletes except for very extreme circumstances (e.g., a major health crisis accompanied by a doctor's note). The last day to turn in extra credit tasks is the last day of Finals Week.
Academic dishonesty tarnishes UMD's reputation and discredits the accomplishments of students. Academic dishonesty is regarded as a serious offense by all members of the academic community. UMD's Student Academic Integrity Policy can be found at: http://www.d.umn.edu/vcaa/StudentAcademicIntegrity.html
UMD is committed to providing a positive, safe, and inclusive place for all who study and work here. Instructors and students have mutual responsibility to insure that the environment in all of these settings supports teaching and learning, is respectful of the rights and freedoms of all members, and promotes a civil and open exchange of ideas. To reference the full policy please see: http://www.d.umn.edu/vcaa/TeachingLearning.html
Appropriate classroom conduct promotes an environment of academic achievement and integrity. Disruptive classroom behavior that substantially or repeatedly interrupts either the instructor's ability to teach, or student learning, is prohibited. Disruptive behavior includes inappropriate use of technology in the classroom. Examples include ringing cell phones, text-messaging, watching videos, playing computer games, email, or surfing the Internet on your computer instead of note-taking or other instructor-sanctioned activities.
Students are expected adhere to Board of Regents Policy: http://www.d.umn.edu/vcaa/documents/Student_Conduct_Code.pdf
I will not tolerate plagiarism.
Not sure what constitutes plagiarism? Dr. Ted Pedersen of the UMD CS department has written a nice case study on the subject.
Solo (non-group) project assignments must be your own work. You may discuss general, high-level, or conceptual issues with other students, but should not share actual code or answers with others. Cheating is considered to be sharing code either by copying, retyping, looking at, or supplying a copy of a file, and applies to information from both current and previous versions of this class (i.e., looking at answers from a previous semester is considered cheating). For group projects, these rules apply between groups instead of individuals.
Sometimes, students feel compelled to cheat on homework because they are afraid of admitting that they do not understand the material or do not know how to complete some task or overcome some technical hurdle. Nobody understands everything -- you should never be afraid of asking questions you have made a reasonable effort to answer. If you are struggling with any material in the class, please come talk to the TA or the instructor early enough to get the help you need -- that is the reason we are here.
While getting answers from current or previous students is considerd cheating, in this class it is acceptable to find and use existing code snippets, libraries, tutorials, HOWTO's, Stack Exchange information and other similar resources, provided that:
Please note that this policy may not apply to other classes at UMD (or elsewhere). It makes sense in this course because, rather than demonstrating your understanding by designing and programming discrete, standalone solutions, most projects involve solving large, system-level problems using a synthesis of many smaller solutions (some original and some found elsewhere). In many cases, we have intentionally left critical information out of course materials explicitly so that you will need to go online to find resources with the answers.
That said, it is up to you to ensure that any source you use is sufficiently attributed; this should -- at the very least -- include a comment(in your source code or writeup) identifying:
In the case of libraries or programs provided by us for the class (e.g., tcpdump or ettercap) or widely available pre-packaged applications (such as tools available in the standard Ubuntu distribution), it is sufficient to refer to the software by name. For example, "I installed the chaosreader package from the Ubuntu repository and used it to extract data from the network trace" or "I got this command line from the tcpdump manpage."
It is also your responsibility to understand any material you use -- its purpose or functionality may be included in later assignments or tests.
Finally, copying or reusing the answers of another student and passing them off as your own will result in serious consequences. See http://www.d.umn.edu/vcaa/documents/Student_Conduct_Code.pdf for more information.
If you have any questions about this policy or how to make proper attribution, please contact your instructor/TA.
Taking notes is a means of recording information but more importantly of personally absorbing and integrating the educational experience. However, broadly disseminating class notes beyond the classroom community or accepting compensation for taking and distributing classroom notes undermines instructor interests in their intellectual work product while not substantially furthering instructor and student interests in effective learning.
Students may not distribute, via the Internet or other means, lecture notes or instructor-provided materials, except to other members of the same class or with the express written consent of the instructor.
This includes the solutions to homework, quizzes, exams and course projects.
For additional information, please see: http://www.d.umn.edu/vcaa/ClassNotesAppropriateUseof.html
As instructor I shall make every attempt to treat all students equally, without regard to race, religion, color, sex, handicap, age, veteran status, or sexual orientation. Furthermore, I will not tolerate behavior that excludes or marginalizes anyone. I strongly encourage you to talk to me if you have any concerns regarding equal opportunity in the classroom. To inquire further about the University's policy on equal opportunity, contact the Office of Equal Opportunity (6827), 269-273 DAdB.
It is my policy, and the policy and practice of the University of Minnesota Duluth to create inclusive learning environments for all students, including students with disabilities. If there are aspects of this course that result in barriers to your inclusion or your ability to meet course requirements -- such as time limited exams, inaccessible web content, or the use of non-captioned videos -- please notify the instructor as soon as possible. You are also encouraged to contact the Office of Disability Resources to discuss and arrange reasonable accommodations.
Please call 218-726-6130 or visit the DR website at http://www.d.umn.edu/access for more information.
As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce a student's ability to participate in daily activities. University of Minnesota services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus via the UMD Health Service Counseling website at http://www.d.umn.edu/hlthserv/counseling/
If you think these services might help you, I urge you to take advantage of them as soon as possible.
Some policy text used or adapted from the following sources (with permission):