CS2106 Introduction to Operating Systems

Module: CS2106 Introduction to Operating Systems

Semester taken: AY 2020/21 Semester 1

Lecturer: Dr. Cristina Carbunaru

Tutor: Mr Julius Sander Nugroho (tutorial) / Mr Alen Kandathumthodukayil Sabu (lab)

Textbook: Modern Operating System (4th Edition), by Andrew S. Tanenbaum, Pearson, 2009, and Operating System Concepts (8th Edition), by Abraham Silberschatz, Peter Baer Galvin & Greg Gagne, McGraw Hill, 2010

What it is about

This module introduces students on the concepts of the operating system and is taken after CS2100 Computer Organisation. It touches on how the operating system handles processes, memory and files. It also covers other concepts on operating system protection mechanisms, as well as operating system structures and architectures.

Assessment components

  • Tutorials: 10% (quizzes)

  • Lab Assignments: 35%

  • Take-at-home test: 15%

  • Exam: 40%

Comments

This module is known to be a tough module, and I wanted to take this module overseas via the Student Exchange Programme (SEP). Unfortunately, it was cancelled due to COVID-19 and I had no choice but to take it here. I then wanted to take this module under Uncle Soo, which I took CS2100 under, but unfortunately he has handed over this module to Dr Cristina. I dreaded this module, and was hoping for the best.

However, it was quite surprising, as Dr Cristina is a really good lecturer and tries her best to keep the class engaged even though it was conducted entirely on Zoom. The content is tough to absorb, but she uses various tools to encourage class participation, which overall made this module a little more enjoyable.

Some companies out there may ask content taught in this module, especially for backend-related roles. However, most do not ask too deeply and will probably ask some of the basic concepts.

Lectures and Tutorials

There are 2-hour lectures every week conducted entirely on Zoom. As it was the first semester where lectures are entirely online due to COVID-19, it was a little messy at the start as people were getting used to it, but eventually Dr Cristina found ways to keep us engaged, such as allowing annotations before the lecture starts to get some feedback from students.

The lecture notes are rather self-contained, which means that there is no need to refer to the textbook, as the materials that you need are all available in the lecture slides. Dr Cristina also followed Uncle Soo's presentation style by having a couple of extra slides during the lecture. Some of these extra slides can be rather important, and thankfully we were able to screenshot on Zoom to annotate on.

The tutorials are 1-hour long each week and often overrun, as there are lots of material to cover. The tutor will start with a recap of the week's concepts, followed by going through some of the tutorial questions, before ending with a multiple choice quiz where you need to get a certain number of questions right before you can get the 1% credit for that week. Most of the questions are simple and answers can be found in the lecture slides.

Lab Assignments

The lab assignments are not really assignments done in a laboratory setting, but more like programming assignments. There were a total of 5 lab assignments, where each assignment would span 2 weeks and will test a particular concept taught in class (mainly related to interacting with the operating system). All assignments are done in C.

The lab assignments are very difficult, and it is understandable as they are written in C and they deal directly with the OS internals, which can be difficult to debug. Not many people have experience writing C code, which adds to the difficulty as it is not immediately obvious which function you should be using. Unfortunately, my lab TA offered very little help, but I was lucky as I had a friend in another lab group and that lab TA provided a lot more guidance on tackling the assignments.

There is a 1-hour lab each week, and students will demonstrate part of their code for that week's lab assignment. The lab TA may also go through the lab itself (especially if it is released on that week). If you have already demonstrated your code in the first week, then often you do not need to attend the second week's lab session.

To tackle the lab assignments, it is better to work with friends, as the concepts can be very difficult to apply and the code is difficult to debug. This is especially true when it come to multithreading, where the order of your code matters a lot. There may even be functions that you are not aware of, but will make your life a lot easier when you use them.

Test and Final Exam

The take-at-home test is a midterm test with a mix of MCQ and short answer questions, for about 1 hour. The final exam is of a similar format, but for 2 hours. Both tests are open book, Zoom proctored with screen recording.

The questions are a good mix of easy and hard questions, and the "open book" concept is not limited to the lecture notes. We had one question where the answer is found in the Linux man pages, and Dr Cristina did say that the man pages are also available during the exam.

It is extremely vital to practice a lot for the exams, as there can be weird ways that a certain concept is asked. Make sure to completely understand the concepts taught in class and find lots of practice questions to prepare for the exams.

Other information

Assignment workload: There are 5 graded lab assignments.

Project workload: None

Readings: None

Recommended if: A compulsory module for Computer Science students, and if you are interested to know how to work directly with the operating system.

Rating: 4.0/5. A tough module but teaches concepts that are important, sometimes asked by companies during interviews.

Expected grade: A-

Actual grade: A (rather surprised but mostly carried by my friend for the lab assignments)

Last updated