I really like Professor Dahlin’s description of his operating systems course:
“The crosscutting theme in this course is providing abstractions above imperfect hardware to make it usable by programmers and users. At the end of the course, students should understand a set of abstractions (concurrent programming, virtual addressing, memory protection, caching, transactions, …) that are useful in many large-scale software systems not just OS kernels. More important than memorizing specific abstractions used in operating systems of the past, students should understand these abstractions well enough to synthesize their own abstractions when faced with new problems.Another important goal of the course is for students to understand the computers they use and on which they build their applications. A student graduating with a CS degree should believe “there is no magic”: they should be able to describe the chain of events that occurs when they hit a key and cause a letter to appear on the screen from the register level (or logical gate level or transistor level) to the system architecture level to the operating system level to the application level. This is philosophically important, but it is also of practical interest to developers who need to figure out how to make a system do what they want it to do.”
- to develop the ability to read (and apply) program specifications and technical documentation.
- to develop the ability to meet coding deadlines
- to acquire a good understanding of the structure of operating systems including
- process synchronization
- memory management
- virtual memory
- file-system interface and other I/O
- gain basic core competencies in kernel development. This includes extending a barebones kernel to include executing user processes, paging, and file management.
- develop abilities to critically compare operating systems and assess emerging technologies.
- Operating Systems: Three Easy Pieces by Remzi Arpaci-Dusseau and Andrea Arpaci-Dusseau.
- Additional online readings assigned in class.
This is a programming intensive course.
I hear and I forget. I see and I remember. I do and I understand. — Confucius
This semester we will be working through a variety of programming projects. In 305, the architecture class, you gained experience with the C programming language. The first project of this course is intended to refresh your memory of C.
The rest of the projects are related to system programming and operating systems. It is important to read and understand all the supporting documentation for the projects as quizzes will have questions that require detailed knowledge of them.
The projects will be challenging. The programming labs are time intensive and you should plan your class schedule accordingly.
Projects can be developed on your own computer using Ubuntu 18.04. Projects will be graded based on how they run on Ubuntu 18.04. Be sure to test your code on this environment before submitting it.
Projects are due anytime on the due date. That is, if the due date is on a Saturday, you can submit the project up to midnight Sunday. Projects turned in by 8am the following day will likely incur a 7% penalty. Projects turned in between 8am the following day and midnight will likely receive a 15% penalty. Students unable to complete a project due to illness or family emergency should contact me as soon as possible.
Cooperation versus cheating
The lab you submit must be your own work. There will be opportunities in class and in our Slack channel to discuss the projects in a general way with fellow students, but you may not examine anybody else’s code. Sharing code on programming assignments is a form of academic dishonesty. Significant similarity of notation or form between submissions of different students or between a student’s work and solutions found on the web will be regarded as evidence of academic dishonesty. Also, you also should not google and find lab solutions for any similar course. Googling for general information is fine and encouraged.
You should not look at the written work of another student. This includes code and sketches of a solution drawn on paper or whiteboard. Having a discussion while one person is looking at written material is also not appropriate. When you are discussing the project with another student you should not be writing anything down, recording the conversation, or using a computer. Remembering what a person said without these aids is some indication that you actually understood the material.
As I mentioned, this is a programming intensive course, and I expect students to make a good-faith effort to complete the programming assignments.
During the first day of class, all students will be assigned to permanent teams. Throughout the course, teams will both take team tests and participate in joint activities. Team performance will be one component of your final grade.
Grading is based on a method developed by Professor Lee Sheldon at Indiana University. It is based on obtaining experience points (XP). The number of XP determines what level you are at. You start the class with 0 XP at Level 0. The level you obtain at the end of the semester determines your final grade. Here is the chart:
I differ from Professor Sheldon in offering students options on how to accumulate XP. There will be opportunities to earn at least 2350XP during the course. This gives each individual some flexibility in what tasks to do. You gain XP working individually, with a partner, and with your team.
If you are at Level Zero when midterm grades are due I will report your work as unsatisfactory.
Programming Projects – 850XP
There will be 4 or 5 programming projects involving Intel assembly and C. Each project will be worth between 50 and 250XP. Here is the current list of projects (which is subject to revision). The estimated difficulty level is on a scale of 1 (most easy) to 5 (most difficult):
- Lab 0: Transpose (C warm-up) [difficulty: 1]
- Lab 1: Bootloader (demo in class) [difficulty: 2]
- Lab 2: pipes and shared memory fibonacci [difficulty: 2]
- Lab 3: Simple Shell [difficulty: 5]
- Lab 4: parallel zip [difficulty: 3]
- Lab 5: Map Reduce (using threads and synchronization) [difficulty: 5]
- Lab 6: Hadoop and Map Reduce [difficulty: 4]
- Lab 7: TBD
OS Calisthenics (mostly in-class) – 800XP
There will be a variety of activities designed to help you learn the material. This range from walk-through programming examples (for ex., the Introduction to Processes walkthrough) to worksheets where you hand-simulate algorithms. Some are done with a partner and others with your team. The optional pre-semester programming projects are also in this category.
Quizzes and take home test- 450XP
There will be approximately 3 short multiple-choice quizzes given during the course. Each quiz will be taken individually, then, immediately after, the same test will be taken as a team. Each individual quiz is worth on average 50 points; each team quiz is also worth on average 50XP. You will have advance notice of these quizzes. In addition there will be one take home test.
Team Participation – about 75XP
Each student will rate the helpfulness of all members of their team. Individual team participation scores will be the sum of the points they receive from other members of their team. Each team member distributes 100 points to other members of the team. The average team participation score will be 75 points. The rater must differentiate some of their ratings (they cannot assign the same rating to all members).
Possible Con – 200XP
About midway through the course we will assess how the course is going and alter the requirements if necessary. For example, if people are finding the programming projects challenging we might reduce the number of them and add a final week student presentation similar to this Docker Con done in a previous class.
Announcements, discussions, and questions
I will communicate with the class via piazza and the course web page.
For questions about any aspect of the course including homeworks and labs, please use piazza rather than email. If you want you can tag questions as ‘private’.
You are responsible for checking your email and piazza every 24 hours and the web page at least weekly.
Avatar names, pseudonyms, noms de plume
During the first week of class I will ask you for your avatar name, pseudonym, whatever. This is the name that will appear on the Experience Point Google Spreadsheet that will be viewable by everyone in the class. If you wish to remain anonymous, don’t share your avatar name with anyone. On the other hand, if you would like recognition for achieving level 10 as an example (“a big shout out to tera miner for achieving level 10”), you can share your name. The decision is yours. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.
The Office of Disability Resources has been designated by the college as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodation needs. Bring your accommodation letter, along with a copy of our class syllabus with you to the appointment. I will hold any information you share with me in strictest confidence unless you give me permission to do otherwise.
If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, (note taking assistance, extended time for tests, etc.), I will be happy to refer you. The office will require appropriate documentation of disability
Title IX Statement
University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the below confidential resources. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.
Tiffany W. Oldfield, J.D.
Title IX Coordinator
Office of Title IX
Title IX Deputy for Students
Talley Center for Counselling Services
Lee Hall 106
Student Health Center
Lee Hall 112
Classroom activities in this course may be recorded by students enrolled in the course for the
personal, educational use of that student or for all students presently enrolled in the class only,
and may not be further copied, distributed, published or otherwise used for any other purpose
without the express written consent of the course instructor. All students are advised that
classroom activities may be taped by students for this purpose. Distribution or sale of class
recordings is prohibited without the written permission of the instructor and other students who
are recorded. Distribution without permission is a violation of copyright law. This policy is
consistent with UMW’s Policy on Recording Class and Distribution of Course Materials.
I assume you are an ethical student and a person with integrity. I expect that you will follow the university honor code (see http://cs.umw.edu/mediawiki/index.php/CPSC_Department_Honor_Code_Policy. Please use common sense and ask yourself what would a person with integrity do? To help you, I would like to make three comments related to this:
Plagiarism means presenting some other person’s work as your own. This can mean using some other person’s words without acknowledging their source, or using some other person’s ideas. Copying another student’s work (homework or exam) is also plagiarism. Plagiarism will minimally result in an automatic zero for that submission.
Collusion is unauthorized collaboration that produces work which is then presented as work completed independently by the student. Collusion includes participating in group discussions that develop solutions which everyone copies. Penalties for plagiarism and collusion will minimally result in an automatic zero for that submission.
I ask that you respect the other people in the class. I recognize that your life circumstances may require you to receive cell phone calls during class. If this is the case please set your cell phone on vibrate and discretely leave the class to accept calls. During tests, if you walk out of the classroom, or consult/display your cell phone, I will assume you are done with the test and collect your grading sheet.
I expect students to attend classes regularly. That said, attendance is not taken and no XP will be awarded based directly on attendance. If you are going to miss a class, please be courteous and inform your team mates.
The class schedule is posted on the course website.