|
15-410 ExpectationsAbout This DocumentThis document sets forth our high-level expectations for the class. You must also read the companion document on Policies & Mechanisms. Learning ObjectivesOperating System Design and Implementation is a rigorous hands-on introduction to the principles and practice of operating systems. The core experience is writing a small Unix-inspired OS kernel, in C with some x86 assembly language, which runs on a PC hardware simulator (and on actual PC hardware if you wish). Work is done in two-person teams, and team programming skills (source control, modularity, documentation) are emphasized. Students who successfully complete the course will:
Students are expected to use the course assignments as a vehicle to practice and develop skills for working in "team programming" situations and/or large code bases, e.g.:
Performance of these higher-level skills will not be explicitly graded, but there is a strong correlation between the students who invest in them and students who achieve better-than-passing course grades. Target AudienceIf you have already completed an implementation-intensive OS class (one based on, e.g., NACHOS), ECE's Embedded Systems class might be a better opportunity for growth. Past experience suggests that 15-410 is a challenging class. Students who successfully complete it will learn a lot, but it will not be easy. TextbookThe traditional textbook is Operating System Concepts, by Silberschatz, Galvin, and Gagne. We provide a table mapping reading assignments to the 6th through 10th editions of the book. The newer editions are more up-to-date on some topics, but they are also more expensive. What you get out of the textbook depends more on how much time you spend with it than on which edition you have, though you probably want to avoid some of the stranger sub-editions, e.g., "Essentials" or "with Java". We will not cover all of the text, and some topics (such as synchronization) will be taught using additional material. Rumor has it that the OSC text is available (purchase or rental) as an e-book from at least one major e-book vendor. As we have no experience with this format, if you try it, please let us know whether you like it.
The experimental textbook is Operating Systems: Principles and Practice, Second Edition, 2014, by Anderson and Dahlin: You may also find useful the 15-213 textbook, Computer Systems: A Programmer's Perspective, Third Edition; the K&R C book; and perhaps C Traps and Pitfalls. An excellent source of suggestions for programming style and structure is Brian Kernigan and Rob Pike's The Practice of Programming, especially the first few chapters. PrerequisitesAccording to the SCS Undergraduate Courses page, the official prerequisite for this class is 15-213 (Introduction to Computer Systems). If you have not completed 15-213 with a grade of C or above, you must contact the course staff and complete a skill assessment exercise to remain registered in the class. This requirement specifically includes all graduate students, exchange students, non-degree students, and any other special students. This also includes all students who have taken Operating System classes other than 15-410. Furthermore, please be aware that this course relies
on skills acquired in 15-213.
This means you'll be in trouble if much of what was covered there has
been forgotten, or if finishing it was a significant struggle.
You should recall what
a byte is, what a register is, the meaning of "1<<2", the difference
between a process and a thread, roughly what goes in a stack frame,
what virtual memory is, what a cache is, what locality is and why
it matters, how file descriptors work, what Almost all students should complete not only 15/18-213/513 but also a 15-4xx/6xx Systems elective before taking this class. SIO lists 213 as the sole prerequisite for this class, but what's in SIO is what's mandatory, not what's wise. Some students who have had 213 but not one of the other Systems electives can do fine, but that is the rare case, not the common case. If 213 is your sole preparation to date involving programming and Systems concepts, the prudent thing would be taking one of the other 15-4xx/6xx Systems electives (411/611, 418/618, 440/640, 441/641, 445/645) first. Exceptional cases may exist (e.g., a summer internship writing UEFI firmware), but should be discussed with one's advisor before enrolling. Course ActivityWhile we do not take attendance in class, we expect students to attend lectures—"synchronously", in the modern locution. If you miss a lecture, we expect you to arrange for a fellow student who was in class to teach you what you missed by going over the lecture slides with you. When possible, it is probably wise for you to obtain the agreement of a particular fellow student before the class you miss. Our model for the lecture slides is that they support the lecture and can also support a student-led recapitulation, but that they do not replace the lecture. Knitting and crotcheting in class are fine (needlepoint may be, with instructor approval). While some material will not be covered fully by the textbook, the text will expand on some material covered only partially in class. Thus, reading the relevant sections of the text is wise, and some people will find a second or third reading of some sections useful. In general, most students who do well in the class will attend lectures regularly ("synchronously") and read the textbook thoroughly. We will grade homeworks, a "book report" assignment, several programming assignments, a mid-term exam, and a final exam. In slightly more detail:
Team ProgrammingMost of the programming effort will be in a team-programming context, to give you experience with the design strategies, coding standards, documentation practices, source control techniques, and people skills you are likely to need in both industry and academia. Here we differentiate between team programming and software engineering in that we will not cover requirements analysis, release staging, defect management, and other life-cycle issues. You may experiment with various development styles. Some students explore "Extreme Programming", and others have had good experiences with Pair Programming (Williams & Kessler). You should probably discuss your committment to the class with potential partners. For example, if it is spring semester and you are planning to graduate, a first-year drama student auditing the class might not make the best partner for you. GradesOur overall expectation on grades is:
Academic ConductIn general, collaboration is good when it furthers genuine learning and bad when it doesn't. Meanwhile, plagiarism (using the work of others without giving them appropriate credit) is definitely bad. This principle can often help you decide between good collaboration and bad collaboration: if you would feel bad about accurately giving credit for part of your program, then it probably shouldn't have been created however it was. Another good rule is that if you're not sure whether something is ok, you should ask the course staff. Also, in general, we expect you to behave honestly and according to high standards of academic conduct. Please note that the default outcome for any academic integrity violation is a failing course grade for the semester; the violation will be reported to your home academic unit and the Office of Community Standards and Integrity. Please don't get involved in this--it costs everybody enormous amounts of time during which nothing can be learned about operating systems. If you are having trouble with one assignment but struggle within the rules, you might end up with a failing grade for that assignment, but you may well be able to pass the course, or drop and take it again later. Willfully violating the policies of the course, on the other hand, threatens your opportunity to ever pass the course. Also note that repeated or sufficiently egregious violations of academic integrity standards may result in penalties more severe than failing this class, such as permanent separation from the university. Respect for DiversityIt is the intent of the course staff that students from all diverse backgrounds and perspectives be well served by this course, that students' learning needs be addressed both in and out of class, and that the diversity that students bring to this class be viewed as a resource, strength and benefit. It is our intent to present materials and activities that are respectful of diversity, including: age, background, beliefs, caste, culture, disability, ethnicity, gender, gender identity, gender expression, national origin, religious affiliation, sexual orientation, socioeconomic status, and other visible and nonvisible categories. We want all students in the class to succeed. Your suggestions are encouraged and appreciated. Please let us know ways to improve the effectiveness of the course for you personally or for other students or student groups. In addition, if any of our class meetings conflict with your religious events, please let us know so that we can discuss appropriate arrangements. (The preceding wording is based on a statement from the University of Iowa College of Education and a statement written by Chad Topaz of Mathematics at Williams College.) Reminder About This DocumentThis document sets forth our high-level expectations for the class. You must also read the companion document on Policies & Mechanisms. AcknowledgementsIdeas (and even some text) were stolen from Greg Kesden's 15-412 syllabus, Randy Bryant & Hui Zhang's 15-441 syllabus, and Bob Harper's 15-312 syllabus. | ||||||||||
[Last modified Tuesday August 29, 2023] |