The course consists of two parts dealing with operating systems and networks, and network programming. The goal of the course is to offer an overview of these topics. The course is designed for 21 two-hour classes, including at least 5 laboratory assignments. A written test is planned after the first part of the course (operating systems) and another one at the end. More organisational details are given here.
The course and the slides are in French.
The materials of this course are distributed under the Creative Commons Attribution Alone licence
This part introduces basic ideas used in the domains discussed in the course. The slides are available here.
The goal of this assignment is to introduce students to the Linux command line and also to the usual ways of finding information about available commands and applications. The text of the assignment can be found here.
This part deals with three subjects which are very important in managing a UNIX-type system: file access rights, symlinks and hardlinks, and transformations. We will a “transformation” a command that works well in command chains built using pipes. This part of the course lists a couple useful transformations (e.g.,
xargs) and finishes by explaining two very often used search commands:
find. The slides are available here.
Directory permissions work a bit differently from permissions for regular files. This section does not cover this difference, but interested students are invited to take a look at this article: http://www.hackinglinuxexposed.com/articles/20030424.html .
This assignment suggests a number of advanced use cases of the command line and has the goal to help students consolidate the practical skills in redirection of streams, pipes, and usage of transformations. The text of the assignment can be found here.
This section provides a quick overview of the shell scripting language as a full-fledged programming language. Some basic elements such as variables, arrays, control structures, and functions are covered. Several situations are covered in which the code is evaluated in unintuitive ways. The slides are available here.
This assignment considers several typical server administration tasks, like system monitoring, backup, or local messaging, and proposes to automate them. The students are also invited to reimplement a number of basic tools, including a simplified version of
xargs. The text of the assignment can be found here.
This section discusses the OSI model: the detailed formal specification of the organisation of the network stack. An overview of every layer is provided; the network and the transported layers are presented in some more detail. A short list of well-known network protocols concludes the presentation. The slides are available here.
This section briefly introduces some basic concepts behind the Domain Name System, and particularly the hierarchy of domain names and DNS servers. Several useful network commands are then listed, including
netcat. The slides are available here.
This lab assignment proposes a couple scenarios in which the network commands shown in the preceding section of the course are applied. This assignment focusses in particular upon
nc. The text of the assignment can be found here.
This course project proposes to apply the skills acquired in basic system administration and networking to implement a primitive text chatting system. The text of the assignment can be downloaded here.