Lecture on M W F, 11:30pm-12:20pm, Ryerson 251
Discussion on W: Two slots will be used for midterm and final exams. (Check the calendar).
(We do not use every time M/W/F slot, check out the calendar for more details).
See: https://registrar.uchicago.edu/classes (and search for CMSC 23000)
Welcome to your first course on operating systems! This course will introduce you to an exciting range of materials from the broad field of operating systems, including basic operating system structure, process and thread synchronization and concurrency, file systems and storage servers, memory management techniques, process scheduling, resource management, a few other hot topics.
This course assumes familiarity with basic computer organization (e.g., processors, memory, and I/O devices as covered in CMSC 15400/14400) and data structures (e.g., stacks and hash tables). You will need to be able to program in C (not C++, and definitely not Java) to perform the assignments in the course. You should have enough background of C programming from your previous courses. CMSC 15400 and a working knowledge of the C programming language are strict prerequisites of this course. Students who have not taken CMSC 15400/14400 must speak with the instructor to ascertain that they meet the prerequisites for this course.
If you are interested in learning the history of operating systems you can read a nice summary here.
There will be 2 exams (non cumulative), 4 projects, but no homework assignments.
The exams are closed book and no cheat sheet. The most important thing you need to do is to come to class and understand my lectures. The content of the exams will come mainly from lectures.
The grade distribution is as follow:
20% : Midterm
20% : Final
10% : P1, Threads
15% : P2, User Programs
15%: P3, Virtual Memory
15%: P4, File Systems
5%: Bonus : Class participation (see more below)
(The final letter grades will be curved)
Time schedule:
http://tinyurl.com/cs230-schedule
http://registrar.uchicago.edu/classes (type "Gunawi" in the search box)
For mailing list, we will use Ed Forum (linked to the class' Canvas). If you do not see any emails from Ed by the end of the first week, please let me know ASAP. It is your job to check class emails frequently and thoroughly. I strongly suggest you update the notification setting at Ed so you can directly receive any email that is recently posted.
You are NOT allowed to post any project solutions or code snapshots in Ed Forum. If you still do so, we will deduct your project grade. If you have problems with your project, please talk to the TAs.
All questions about the project can be posted on Ed Forum. Do NOT write email to me or the TAs via emails because your email won't be tracked. If the TAs need to interact with you more frequently (e.g. to solve your project problems), then we will let you know when we can start using direct email addresses. But if we don't tell you, everything should go to Ed Forum.
When you write a post in Ed Forum, you can see that there are some tags/categories (e.g. p1, p2, lectures, etc.). Please post your email with the appropriate category. Otherwise, there is a chance that your email is not tracked properly.
My goal is to make you understand OS just by listening to my lectures. If you follow my lectures completely, reading the book is not necessary (of course I recommend you doing that if you have time). Exam questions come from the lectures.
I will provide lecture slides. Please regularly visit the schedule page. You can download the lecture slides from the link on the main page.** Each lecture note is not complete. The goal is for you to listen to the lecture (video or in class) and fill the missing important pieces.
This course has one required book: Operating Systems: ThreeEasy Pieces (OSTEP).
This book is free (the best thing about this class!). Thanks to Prof. Remzi and Andrea Arpaci-Dusseau at the UW-Madison, who coincidentally were my lovely PhD advisors.
If you go to the schedule page, you will see the required chapters to read.
If you want to delve deeper, there are three OS books that I recommend: Operating System Concepts (the "dinosaur book"), Modern Operating Systems (the "circus book"), and Operating Systems: Principles and Practice (the newest OS book).
Regarding books on C programming (if you want to strengthen your C skills) these two books are good: The C Programming Language (Kernighan) and Advanced Programming in the UNIX Environment.
As simple as, come to class at least 80% of the time, and raise your hand and answer my questions (or make a guess) or ask any questions.
Many documents (e.g. lecture notes, project hints) from the course website are only accessible from uchicago.edu domain. If you want to access the documents from outside the campus network, please use the University's VPN (see https://uchicago.service-now.com/it?id=kb_article&kb=kb00015292).
Another way is the old school approach: ssh to a CSIL machine, run wget, and then scp the file to your laptop.