UBI 506 - Operating Systems

Spring 2024

Course Description
[Architecture of OS]
[Windows OS]
[Linux OS]
[Mac OS]
[Android OS]
[iPhone OS]

This course introduces the fundamental concepts in the design and analysis of modern operating systems. Topics covered include batch, time-sharing, parallel, real-time systems, the evolution of operating systems, processes, threads, multicore and multithreading, critical section, semaphores, monitors, deadlock prevention, deadlock avoidance, deadlock detection, logical and physical memory space, memory partitioning, swapping, paging, segmentation, segmentation with paging, demand paging, page replacement algorithms, scheduling algorithms, uniprocessor scheduling, multiprocessor scheduling, multicore scheduling, and real-time scheduling. There will be an emphasis on both the algorithmic and design aspects of operating systems, as well as the ability to write fully functional operating systems kernel programs. In this course, the students will learn fundamental algorithms and techniques and gain the knowledge necessary to understand and augment the latest innovations in operating systems.

Pre-requisites for the course:
Data structures and algorithms will be used extensively.
Computer architecture fundamentals and programming languages are also needed.

Instructor's Announcement

Welcome to the UBI 506, Operating Systems! In this course, you will learn the fundamental concepts in operating systems. It is an assignment-based course in which students learn about and solve various problems in modern operating systems. The course covers a range of topics in operating systems, instead of providing a deep and highly detailed analysis of a particular topic.

The EgeDers page for the course will be primarily used for assignment submissions, announcements, and online discussions. If you are enrolled, you can find the Microsoft Teams links, lecture recordings, course slides, supplemenral course materials, and internal WhatsApp discussion group on our internal EgeDers page.


Murat Kurt
Email: murat.kurt@ege.edu.tr
Office hour: Wednesdays 1:00 PM - 2:00 PM (GMT+3), Office 220, International Computer Institute Building

Teaching Assistant

Barış Önk
Email: baris.onk@ege.edu.tr
Office hour: TBA

Please send an e-mail ahead of time if you would like to attend these office hours.

Time and Locations

1:00 PM - 4:00 PM (GMT+3), International Computer Institute Seminar Hall

Note: The lectures will be in person, and they will not be recorded. Some of the lectures may be conducted via Microsoft Teams, and we may need to switch from in person to Microsoft Teams lectures on short notice. Check our internal EgeDers page for all the Microsoft Teams links.

Books Recommended

William Stallings, "Operating Systems: Internals and Design Principles, Global Edition", 9th or later edition. (The main textbook of the course)

Optional references:
Abraham Silberschatz, Greg Gagne, and Peter B. Galvin, "Operating System Concepts", 10th or later edition. (Recommended as "Reading" of each lecture)
Andrew Tanenbaum, and Herbert Bos , "Modern Operating Systems", 4th or later edition. (Recommended as "Reading" of each lecture)

In addition to the main textbook of the course, the lecture slides and supplemental course materials will also be your main references. Other related reading materials will be available to access from our internal EgeDers page before lectures.

Assignments and Grading

There will be five or six assignments in this course. Documentation and organization should make your assignments easy to read and convey your understanding of the implemented functions. Poor documentation will result in a lower score. More detailed instructions regarding required documentation will be provided with each assignment. The assignments will require understanding and implementation of many of the following operating systems concepts: processes, threads, semaphores, monitors, deadlock prevention, deadlock avoidance, deadlock detection, paging, segmentation, segmentation with paging, demand paging, page replacement algorithms and scheduling algorithms. Use of these concepts in operating systems (UNIX, Linux, Solaris, Windows, Android, IOS) will also be explored.

All assignments are due by 11:59 PM (GMT+3) on the dates specified. You should plan ahead. Each late day will cause a 2% off the final score of the corresponding assignment. We will use our internal EgeDers page for submissions. Detailed submission guidelines will be in the assignment descriptions.

You will work on the assignments individually. The total of all assignments takes 25% of your final grade.

There will be one midterm exam and one final exam of this course. Currently, these exams are scheduled to be taken during the class time (either in-class or over our internal EgeDers page, TBA) on the Thursday of midterms and final weeks. These exams are closed-book. The midterm exam covers all course material up through (and including) Week 6. The final exam covers all course material. Students may be tested on any and all operating systems concepts touched on through lectures, readings, and assignments during this period. Students may also find the qualitative exercises available on our internal EgeDers page helpful when preparing for these exams, but they should expect more quantitative questions on the exams itself. The midterm exam takes 30% of your final grade. The final exam takes 40% of your final grade. All midterm and final exams anouncements are handled through our internal EgeDers page.

In summary, final grades are based on five or six assignments (25%), a midterm exam (30%), a final exam (40%), and course participation (5%). Throughout the semester, there will ample opportunities for extra credit and student participation.

Grading Scheme
Grading Component Percentage
Participation 5%
Assignments Reports ×5~6 10%
Assignments ×5~615%
Midterm Exam30%
Final Exam 40%

Course Syllabus

The following topics will be presented during the semester lectures. This is only a rough outline of the schedule and entire topics may be added or removed. Our internal EgeDers page will document the lecture schedule and provide access to the slides and the videos used for each lecture.

Week Date Topics Reading Slides Videos Assignment
1 February 15 Computer System Overview (Part1) Chapter 1 [Slides] [Video]
2 February 22 Computer System Overview (Part2) Chapter 1 [Slides] [Video]
3 February 29 Operating System Overview (Part1) Chapter 2 [Slides] [Video]
4 March 7 Operating System Overview (Part2) Chapter 2 [Slides] [Video]
5 March 14 Process Description and Control Chapter 3 [Slides] [Video]
6 March 21 Threads Chapter 4 [Slides] [Video]
7 March 28 Midterm Exam [Slides] [Video]
8 April 4 Concurrency: Mutual Exclusion and Synchronization (Part1) Chapter 5 [Slides] [Video]
9 April 11 Concurrency: Mutual Exclusion and Synchronization (Part2) Chapter 5 [Slides] [Video]
10 April 18 Concurrency: Deadlock and Starvation (Part1) Chapter 6 [Slides] [Video]
11 April 25 Concurrency: Deadlock and Starvation (Part2) Chapter 6 [Slides] [Video]
12 May 2 Memory Management Chapter 7 [Slides] [Video]
13 May 9 Virtual Memory Chapter 8 [Slides] [Video]
14 May 16 Uniprocessor Scheduling Chapter 9 [Slides] [Video]
15 May 23 Multiprocessor, Multicore and Real-Time Scheduling Chapter 10 [Slides] [Video]

Assignment and Collaboration Policy

Assignments are to be implemented individually from scratch. That is, you should not derive solutions from existing sources or previous instances of this course (including previous postings from the online course, at other universities etc.). Discussion of assignments is allowed and encouraged, but copying of solutions or code from other students, or from students who previously took this course in any university or online setting is not allowed. If you do obtain substantial help from the instructor, teaching assistant/tutor or another student, you must document this in your program. Furthermore, you should in general not copy code from other sources. If in doubt, please ask. Further specifics are given in the assignment specifications.

To repeat, you may not copy solutions or code from other students, or students who previously took this or a similar class at a university or online. You must clearly declare any code and ideas that came directly from others, as opposed to what you created yourself. If you fail to do so, we can only assume you are presenting your own work. Of course, presenting other people's work as your own is academic dishonesty. Students who engage in dishonest activities, with an intent to alter their grade, will receive an FF for the course and be reported to the University for further action. Note that you will also be held liable for publicly posting your code on Github or other public websites, if another student subsequently copies from it.