ECE 3220 Introduction to Operating Systems
A systems course on how operating systems virtualize CPU, memory, and storage resources.
For definitive and up-to-date course details, deadlines, and announcements, please refer to the syllabus and Canvas.
Course overview
Operating systems manage hardware resources and provide abstractions that make applications practical, efficient, and secure. This course examines how operating systems virtualize the CPU, memory, and storage—and how those mechanisms shape performance, reliability, and security.
What you will learn
- Explain how operating systems virtualize CPU, memory, and storage resources.
- Analyze scheduling, memory-management, synchronization, and file-system trade-offs.
- Implement and debug systems programs using processes, threads, synchronization, and file-system interfaces.
- Evaluate how operating-system mechanisms affect performance, reliability, and security.
Prerequisites
Students should have completed ECE 2230 (Data Structures and Algorithms) and ECE 2720 (Computer Organization), and should be comfortable with C, the Linux shell, and gcc.
Materials
The lecture slides are self-contained. Students should bring a laptop capable of running a Unix-like development environment for in-class exercises and programming activities.
The recommended textbook is Operating Systems: Three Easy Pieces by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, which is freely available online.
Grading
- Three programming assignments: 30%
- Three in-class quizzes: 30%
- Final exam: 35%
- Participation: 5%
Late submissions incur a 20% deduction per 24-hour period, with submissions accepted up to four days late. Quiz and final-exam dates will be announced in class and on Canvas.