Multithreading Operating Systems, Master1 in Computer Science, University of Rennes 1.
Because of the sanitary crises, this course will completely be given online this academic year. On this page, week by week, the didactic material is going to appear step by step, in a way to simulate the classical course approach, where concepts are introduced in a predefined order, and only a little is revealed in advance. Students wishing to follow this course should make sure that the concepts introduced this week will be clear before starting to consult the documents related to next week.
For the students of University of Rennes1 with inscription to the Master 1 in Computer Science: you'll receive additional information by email on how to contact me for questions related to this course: your official Rennes1 address should be used for this kind of communications. Please keep an eye on your Rennes1 email account because online meetings, as well as evaluations, will be organized throughout the entire semester for Rennes1 students. For students arriving after the beginning of the semester from abroad, your personal email address can be temporarily used.
Just to make things clear: in spite of the name of our course (which contains the two words "operating" and "systems"), we are not going to code a new operating system. This is out of the scope of the our course. However, programming assignments are planned where we'll try to explore some of the concepts, that we will introduce while studying operating systems, to actually improve the performances of software tools. Differently from other courses focusing on operating systems, we will not work at low level; instead of C programming language or even assembler, we'll code our assignments in Java. For these programming assignments, Rennes1 students are very encouraged to use the Linux distribution provided by ISTIC.
A lot of lectures, given and recorded by other colleagues, are freely available on the Internet. However, the covered topics, and the level of detail that is given, does not always respect the expectations of our course. Therefore, as a replacement to the classical lectures that I was used to give in the past years, I'll not ask you to follow the lectures given for one unique other course. Rather, I'll give you, week by week, a set of YouTube links, with videos and lectures extracted by various courses, given by different colleagues. The idea is to cover the topics of our course by combining this video material. The curious student may want to explore other videos provided by the same authors.
I propose to start by watching the following video, authored by Prof. Tami Sorgente, Florida Atlantic University, USA. It's an introductory video, just to get an idea of what we are going to do.
You can watch this video only one time; it's just to get an idea of the topics. We'll watch other videos by Prof. Sorgente later again for our course.
In order to get started for real, I propose now to watch the following two videos about memory and data storage, the very first step to understand how our computer works. These lectures were given and recorded by Prof. Gaetano Borriello, who was teaching topics related to our course at University of Washington, USA. Prof. Gaetano Borriello prematurely passed away in 2015.
In the first video, we'll see the first (simple) schematic representation of a computer machine. Some concepts are treated very quickly in this video, but don't worry, we'll come back and discuss them in more details.
Please notice that the physical description given in the video is for information only: it will not be part of the evaluations. Moreover, in several videos we'll be watching, there is a reference to both C and Java programming languages: as you may recall, the assignments that I will give you for this course will instead be exclusively in Java. It is however important for a computer scientist to know the pointed-out differences between the two languages.
Please keep in mind that these videos, unless taken from a classroom during a "standard" lecture (it is not the case for the three videos we are watching today), generally do not contain repetitions, and the time is not stretched with possible answers to questions from the audience. Therefore, consider that, even if these videos may be in time length much shorter than a lecture, it is possible that the number of concepts that are introduced is actually the same. For this same reason, since there are generally no breaks in these videos, consider to pause them and rewind when something is not completely clear to you. Another good approach: watch these videos more than once, possibly over different days.
In this second video, we'll explore in details bits, bytes and data words.
That's all by now. There will be no additional assignments for this week. However, soon we're going to code some programs in Java, and in particular in multi-threading. I'd suggest you therefore to start to make a simple online search for the possible ways to create and launch parallel threads in Java.