General Information
* Course syllabus can be found here (including the grading scale and expected course schedule).
Course description
This course teaches how internals of modern operating systems are working with hardware/software stack. In the course, we will learn fundamental concepts of operating systems by building an operating system by our own hand. In particular, lab assignments are based on JOS, an educational OS project, and the students will build it starting from booting (Lab 1), virtual memory (Lab 2), process (Lab 3), multi-tasking (Lab 4), and finally to file system (Lab 5). We will also cover concurrency issues in systems by learning on how to implement locks and other synchronization mechanisms and how to resolve deadlock issues.
Instructor information
Email address: chungkim 'at' utdallas 'dot' edu
Office hours: Mon 3:45-5pm (this could be changed at the instructor's discretion)
Location: ECSS 3.201
TA information
Kunal Mukherjee (TA hours, Labs 1-5 questions, Labs 3-5 grading) / Arman Nik Khah (Labs 1-2 grading, quiz proctoring)
Email address: kunal.mukherjee / arman.nikkhah @ utdallas.edu
Office hours: Mon 11am-noon and Wed 10-11am (this could be changed at the TA's discretion)
Location: ECSS 2.104A
Class meetings and modality
Modality: Traditional
When: MW 2:30-3:45pm
Where: ECSS 2.306
Video recordings of the class will NOT be provided
Prerequisites
Students are required to satisfy the following prerequisites:
Computer Architecture (CS/SE 2340)
Systems Programming in UNIX and Other Environments (CS/SE 3377)
Data Structures and Introduction to Algorithmic Analysis (CS/SE/CE 3345)
IMPORTANT: This class assumes familiarity with Unix commands and the C programming language throughout.
Textbook
Student learning objectives/outcomes
Students shall be able to understand fundamental concepts in operating systems: their design, implementation, and usage. After completing the course, students are expected to gain the abilities to understand and apply the following topics:
Memory management and virtual memory
Process management
System calls, page faults, interrupts and exceptions
Multi-threading, synchronization and deadlocks
I/O and file systems
Grading policy
Lab assignments (70%): 4 labs (Lab 1: 10%, Lab 2: 15%, Lab 3: 20%, Lab 4: 25%)
Quizzes (30%): 3 quizzes (10% each)
No midterm or final exam
Extra credits: optional Lab 5 (10%), and challenges in lab assignments and questions during class (1-2% each)
Evaluation & late policy
Lab assignments and quizzes will be evaluated on a 100-point scale (0-100).
Late assignment submission will be penalized 10 points per day (24-hour period).
Late days are not applicable to Lab 5 submission (firm deadline).
COVID-19 guidelines
Academic integrity
Important
Cheating vs. collaboration
Collaboration is a very good thing. On the other hand, cheating is considered a very serious offense and is vigorously prosecuted. Vigorous prosecution requires that you be advised of the cheating policy of the course before the offending act.
- For this semester, the policy is simple: don't cheat:
Never share code or text on the homeworks and projects.
Never use someone else's code or text in your solutions.
Never consult potential solutions on the Internet.
- On the other hand, for this class, you are strongly encouraged to:
Share ideas.
Explain your code to someone to see if they know why it doesn't work.
Help someone else debug if they've run into a wall.
If you obtain help of any kind, always write the name(s) of your sources.
(ref. http://courses.cs.washington.edu/courses/cse451/15au/)
Online resources
Acknowledgment
The lab assignments and materials used in this course are largely based on those originally developed for MIT 6.828: Operating System Engineering and edited by UW CSE 451, GT CS 3210, and OSU CS 444/544.