Level: Medium/Hard
Teacher: Prof. Mohsen Sharifi


Course Information

The purpose of the course is to teach the concepts and principles of operating systems. Topics include principal concepts, systems programming, storage systems, multiple-program systems (processes, inter-process communication, and synchronization), memory allocation (segmentation, paging), resource allocation and scheduling, file systems, deadlock, virtualization technology and security



Grades will be determined roughly as follows:

  • 40% Final Exam
  • 40% Projects and Exercises
  • 15% Practical Exam (out of projects and exercises)
  • 5% Quizzes



It is assumed that all students are pretty familiar with Linux, C, Java, and data structures have done some assembly language programming, and also know preliminaries of series and products, logarithms, advanced algebra, some calculus, and basic probability (means, standard deviations, etc.). TAs will spend some time reminding some of the prerequisites.


Important notes

  • Students MUST attend all tutorials delivered by TAs that provide essential specifics on hands-on aspects of the projects and exercises, including tools, techniques, and concepts.
  • Students with more than 4 session absence will be deprived of all exams and their names will be reported to the School.
  • An automated system is used for detecting cheating by pairwise comparison of all project submissions and reporting any suspicious similarities. Odd similarities will result in zero scoring for copy-ers and the copy-ees.


Some of the course resources are available here:


Course Info