This course introduces students to the programming aspects of operating systems. Topics covered include implementation of storage management, resource allocation, multi–processing, scheduling, synchronization, inter–process communication, and terminal I/O. Programming assignments are designed to enhance subject understanding, problem solving, and programming skills through hands–on experience on real–life–like problems.
Students who successfully complete this course will be able to
ICSI/ICEN 333 or equivalent with a grade of at least C.
You are expected to have a good understanding of programming basics, C, and Assembly.
There is no single textbook that covers everything discussed in this course. Therefore, we rely on multiple online resources (books, articles, and tutorials) which are available publicly or via the University’s network. You are required to read each session’s readings listed on the schedule before attending the class. Schedule of readings is given in the course schedule.
The course syllabus and schedule is available on the course webpage. Most of the tasks in this class will be handled via course GitHub organization including distribution of notes and homework assignments, assignment submission, and feedback. We will also use Blackboard for communication and for your grades.
If you have general questions about an assignment you should post it as an issue in the repository corresponding to the assignment. If you have a question about your current solution and want us to take a look, you should create an issue in your individual assignment repository instead. Include a screenshot of your runtime environment as well as references to places in your code that you want us to check.
Your assignments will be automatically collected from your GitHub repositories at the time of the deadline. This helps you keep working and improving your submissions up until the deadline. Just make sure that you continuously keep your GitHub repository synced with your local version.
The course is A-E graded based on the following categories and corresponding weights:
This course provides several opportunities for students to develop advanced writing, critical thinking, information literacy, and oral communication skills. Specifically, (i) students are required to provide proper documentation of their project in English using complete sentences, observing the usual rules of grammar, spelling, and punctuation, (ii) frequent interactive discussions in a variety of communication contexts (i.e., students–instructor and student–student interactions in teams) stimulate critical thinking, and promote oral communication skills, and (iii) students learn various ways in which information is organized and structured and the process of finding and using information. By examining information from resources available on the Internet, students learn to evaluate the quality of information and to use information ethically and professionally.
The following schedule is tentative and will be regularly updated. It is your responsibility to check the schedule regularly.
Note: “+” indicates an optional reading.
Date | Topic/Reading | Assignment Due |
---|---|---|
Module #1: Shell/Git | ||
Aug 28 |
Course Overview, Required Setup for Assignments, Git
|
hw00 due Aug.28 (on Blackboard) |
Sep 04 |
Unix File Structure & Permissions, Shell Basics, Redirection, Expansion, Processes, Environment
|
hw01 due Sep.04 |
Sep 11 |
Scripting the Shell, File Search, Text Processing
|
|
Module #2: C Programming | ||
Sep 18 |
C Types, Operations, Control Structures, Complex Data Types, Functions, Advanced Pointer Concepts, Command Line Arguments
|
hw02 due Sep.17 |
Sep 25 |
C I/O, Multi-File Programs, GCC, Make
|
hw03 due Sep.24 |
Oct 02 |
Debugging, Compiling, Assembling, Linking
|
hw04 due Oct.4 |
Oct 09 | Midterm Exam | |
Module #3: POSIX/Linux Programming | ||
Oct 16 | System Calls, File I/O | Project Team Formation due Oct.16 |
Oct 23 |
Processes, Executing Programs
|
|
Oct 30 |
Signals, Pipes, FIFOs
|
hw05 due Oct.30 |
Nov 06 |
Threads
|
Project Progress Report due Nov.08 |
Nov 13 |
Networking
|
hw06 (optional) due Nov.15 |
Module #4: Misc./Advanced Topics | ||
Nov 20 |
Rust, Recap & Review
|
|
Nov 27 | Thanksgiving Break | |
Dec 04 | Project Submission & Demos | |
Dec 11 | Final Exam (5:45-7:45) |
You can also review your graded midterm exam paper either after class or in the office hours for a 5-day period after grades are announced. It is not possible to re-grade your paper after the end of that period.
Please do not disrupt the class by entering late or leaving early without instructor’s approval.
For all assignments and papers, you must submit your own work, except where collaboration is explicitly permitted or required. Also, you must properly cite any resources from which you borrow ideas and clearly distinguish them from your contributions.