Course Description

This course introduces the basic concepts and core principles in modern computer operating systems. It focuses on explaining fundamental ideas and design that have proven effective. Specifically, students will explore essential concepts such as processes, concurrency, synchronization, scheduling, multiprogramming, memory management (including virtual memory), resource allocation, and deadlocks. Additionally, the course covers file system structures, input/output management, secondary storage, and virtualization techniques. By providing a strong foundation in these topics, the course serves as a starting point for further research and study in operating and distributed systems.

Schedule

Lecture: Monday/Wednesday 4:30 – 6:15pm

Staff

  • Yigong Hu
    Address: PHO335
    Email: yigongh AT bu DOT edu
    Office Hours: TBD

Grading

Final grade will be based on the following weights:

  • Projects: 55% (4 projects)
    No partial credits. You must turn in working code.
  • Midterm: 15%
  • Final: 20%
  • Participation: 10%
    Piazza, class participation, and non-graded quizzes & handouts

Textbook

While no textbook is required, this book covers most of the material related to class:

Operating Systems: Three Easy Pieces Histogram by Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau, available online for free !

Outline

The course is structured around lectures, assigned readings, discussion sections, projects, and exams, all designed to reinforce your understanding of core operating system concepts. Lectures will present foundational concepts and essential information. The textbook and supplementary readings complement lectures and serve as valuable preparation, though they do not substitute for attending class.
We will evolve this course throughout the term, covering essential topics in operating systems, including:

  • Role and history of operating systems
  • Processes and threads
  • Synchronization
  • Scheduling
  • Memory Management
  • File systems
  • Virtualization

You will complete four programming projects individually or in groups (of no more than three students), enabling you to apply theoretical knowledge practically. Optional homework questions will be provided for exam preparation but are not required to be submitted. Two midterm exams will evaluate your understanding based on class material, assigned readings, and project work.

Acknowledgments

The course syllabus, lecture and project materials are heavily influenced by BU’s previous EC440, JHU CS318 and Michigan EECS482 class. Credits are particularly due to Manuel Egele(BU), Ryan Huang (UMichi), and Baris Kasikci (UW).