Class time: Tuesday and Thursday: 9:30am - 10:45am
Class location: 110 MLH (MacLean Hall)
Instructor: Antonio Bianchi
Phone: TBD (Office)
Teaching assistant: David McDermott (firstname.lastname@example.org)
Instructor’s office hours: Tuesday and Thursday: 11:00am – 12:30pm, and by appointment (in MLH 201g)
Teaching assistant’s office hours: Monday 2:30pm - 4:00pm and Wednesday 10:00am - 11:30am (in MLH 101n)
DEO contact information: Alberto Segre, 14 MLH (MacLean Hall),
Phone: 319 335 0713, Email: CS-INFO@list.uiowa.edu
Course description and objective: This course provides an introduction to the design and implementation of modern operating systems.
The main topics of this course will be:
- Process management and scheduling, including interrupt-handling and scheduling algorithms
- Memory management, including virtual memory, segmentation, pagination, and addressing
- Interprocess communication mechanisms, including locks, semaphores, and synchronization issues (such as deadlocks)
- Secondary storage, peripherals, and file-system management
Additional topics may include operating system security and the internals of modern operating systems (e.g., Android).
Course resources: As part of the class we will be using the book titled: “Operating Systems: Three Easy Pieces” by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. The book has a free online version available on the website: http://pages.cs.wisc.edu/%7Eremzi/OSTEP/.
It is also possible to order a hardcover or paperback version of the book from the above website.
The textbook will be complemented by the “Advanced Programming in the UNIX Environment (3rd Edition)” by Stevens, Rago. Other resources (such as relevant academic papers or online resources) will be made available using ICON. Students are encouraged to discuss the course material and the challenges they face in solving the different homework assignments. An online discussion forum will be available and will be used as the primary way to ask questions about homework assignments. Before posting a new question, students should check that it has not been already answered.
Grading Policies: Exams will be comprehensive, covering everything up to the exam date, emphasizing integrating material from recent assignments. The exam may include open questions, multiple-choice questions, numerical problems, and understanding/writing snippets of code. The exams will be closed book. Students that cannot attend the exam due to conflicts (e.g., illness, religious holidays) may make alternate arrangements (in advance, if at all possible).
For the programming assignments, student will be required to use C, unless otherwise noted. The primary programming environment will be Linux. Students taking this class should have some previous basic knowledge about C programming (in particular, pointers, memory management, …) and some familiarity interacting with a Linux environment.
Grading will mainly focus on automated test and emphasize correctly completing all or a part of the assignment. Source code that does not compile may receive zero points. Cheating will not be tolerated and will result in a grade of zero for that assignment. Students are encouraged to consult the instructor to ensure whether (and to which extent) collaboration and discussion among students are allowed for a particular assignment. Students are not allowed to share, copy, show, the code they developed for homework. Students are not allowed to copy homework solutions from online resources (even partially). If any line of code is copied from an online resource (e.g., Stack Overflow), it must be indicated by adding the complete link to the website as a comment.
Grading: The course grade will be assigned based on the student’s performance on the following testing criteria.
- Homework assignments, including written and programming assignments, will contribute to the 55% of the course grade.
- Midterm examination will contribute to the 20% of the course grade.
- Final examination will contribute to the 25% of the course grade.
Dates and times of midterms will be shared in class at least two weeks before the exam.
Letter grades are assigned with attention to collegiate norm-referenced grading guidelines. Grades with +/- will be assigned. The final grade distribution will roughly adhere to the CLAS suggested grade distribution. Note that, the instructor, however, holds the right to alter this distribution in appropriate circumstances.
Late Work: Each student will be entitled to 3 late days. One late day may be used to delay the homework submission for a single day (24h). A student can use all the 3 late days for a single homework assignment submission. Note that, late submissions for which students have no late days available will not be accepted. Students should exercise the use of late days wisely as the homework assignments are likely to be progressively harder. There will not be any fractional late day.
Communication Policies: Most of the emails regarding grades, homework, and exams should be first directed to the Teaching Assistant. The teaching assistant will forward relevant emails to the instructor as needed. Other emails (e.g., scheduling one-on-one meetings) and also emails of personal nature containing sensitive information, should be directed to the instructor directly. The instructor leaves the decision of determining the sensitivity of an email to the students. All emails directed to the instructor should have the prefix “[CS:3620]” (without the quotes) in the subject line. Complying with this requirement will enable the instructor to process emails faster. Students must use their @uiowa.edu email address when communicating with the TA/instructor. For any matter that requires the instructor’s immediate attention, do not hesitate to schedule a face-to-face meeting.
The course will follow the following College policies: https://clas.uiowa.edu/faculty/teaching-policies-resources-syllabus-insert