=================== General Information =================== .. toctree:: :hidden: \* Course syllabus can be found `here <_static/cs4348.004-f22-syllabus.pdf>`__ (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 (:doc:`Lab 1 `), virtual memory (:doc:`Lab 2 `), process (:doc:`Lab 3 `), multi-tasking (:doc:`Lab 4 `), and finally to file system (:doc:`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 ---------------------- - `Chung Hwan Kim `__ - Email address: chungkim 'at' utdallas 'dot' edu - Office hours: MW 9:30-10:30am (this could be changed at the instructor's discretion) - Location: `ECSS 3.201 `__ -------------- TA information -------------- - `Sudharssan Mohan `__ - Email address: sudharssan 'dot' thanammohan 'at' utdallas 'dot' edu - Office hours: Fridays 10am-noon (this could be changed at the TA's discretion) - Location: `ECSS 2.104A1 `__ --------------------------- Class meetings and modality --------------------------- - Modality: **Traditional** - When: MW 2:30-3:45pm - Where: `ECSS 2.412 `__ - 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) -------- Textbook -------- - *Operating Systems: Three Easy Pieces*, Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau - Free at online `here `__ - You may purchase a physical copy `here `__ ------------------------------------ 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 ------------------------------------------- - `COVID-19 Guidelines and Resources `__ - `COIVD-19 Response FAQ `__ ------------------ 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 ---------------- - `Course website `__ - `eLearning `__ - `MS Teams `__ -------------- 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 `__.