Please, see latest news in issue #92 (from April 03).
- Lab #1: Agenda, Linux as GUI-oriented end-user system (February 17 - February 21)
- Lab #2: Introduction to Linux command-line interface (February 24 - February 28)
- Lab #3: Basic Linux shell scripting and data crunching (March 3 - March 7)
- Lab #4: Local Git (and more about shell too) (March 10 - March 14)
- Lab #5: Remote access over SSH (and a bit of networking too) (March 17 - March 21)
- Lab #6: Git branches and their everyday use (March 24 - March 28)
- Lab #7: Shell scripting (March 31 - April 4)
- Lab #8: Basic maintenance of Linux machines, on-site test I (Git) (April 7 - April 11)
- Lab #9: Shell scripting (loops, ifs and other bits) (April 14 - April 18)
- Lab #10: Build tools (make basics) and regular expressions (April 21 - April 25)
- Lab #11: Processes, signals and files (April 28 - May 2)
Other materials
Teasers :-)
The following summaries should give you an idea of how the landscape looks like and what will be covered by each lab.
Lab #1: Agenda, Linux as GUI-oriented end-user system (February 17 - February 21). We will briefly introduce the course goals, rules and grading requirements. We will then explore the graphical interfaces offered by Linux so that we can select the most appealing and further customize it.
Lab #2: Introduction to Linux command-line interface (February 24 - February 28). The true power behind Linux systems lies in their command-line interface. We will see how we can use it for file manipulation – which is super important because nearly everything is a file – but also for advanced tasks such as system monitoring using only few command available on every Unix-based system.
Lab #3: Basic Linux shell scripting and data crunching (March 3 - March 7). In this lab we will uncover the power of shell scripts: the universal and rather powerful duct tape that simplifies repeated everyday tasks but is also able to perform coarse data manipulation (before they are passed to domain specific tools for finer analysis).
Lab #4: Local Git (and more about shell too) (March 10 - March 14). We will start using Git locally (and also from the command-line) to unleash its full power. We will also advance our knowledge of shell scripts by introducing exit codes that we will later use to control them.
Lab #5: Remote access over SSH (and a bit of networking too) (March 17 - March 21). The true power of Linux shell comes when used remotely: we will see how working on servers is easy over SSH and why the command-line interface is so prevalent in the server world. We will also speed-up Git usage by setting up password-less authentication.
Lab #6: Git branches and their everyday use (March 24 - March 28). Git branches are the thing that allows multiple developers work on the same project. Without needs for explicit synchronization or fear of overwriting someone elses work. But also without disrupting your normal Git flow and virtually with no practical overhead (end of commercial).
Lab #7: Shell scripting (March 31 - April 4). We will make our shell scripts more readable by introducing functions and variables and more powerful ways how individual programs communication with each other (such as command substitution). We will also use ShellCheck and other automated tools to detect issues in our scripts even before they are executed for the first time.
Lab #8: Basic maintenance of Linux machines, on-site test I (Git) (April 7 - April 11). While Linux systems can run for years uninterrupted, they still require some maintenance: this lab will guide you through the basics of Linux maintenance. The lab will start with an on-site test.
Lab #9: Shell scripting (loops, ifs and other bits) (April 14 - April 18). This lab contains the final chapter for shell scripting: we will see how loops and conditions are done in shell. And we will do a lot of examples as a preparation for the shell on-site test.
Lab #10: Build tools (make basics) and regular expressions (April 21 - April 25). We will introduce the concepts of build tools in this lab: they are used to capture the process of building complex software so that the developer does not have to remember all the tiny details. We will focus our attention to the make tool. We will also look at regular expressions that can be used for basic as well as rather crazy filtering and modifications of textual data.
Lab #11: Processes, signals and files (April 28 - May 2). We will look a bit more how processes are organized on a Linux system and how they can communicate with each other using signals. We will also have a look at file archival and basic disk utilities. We will also have at find
that can be used to search for certain files.
Lab #12: Advanced Python development tools, on-site test II (shell) (May 5 - May 9). We will see how Python virtual environment can be used to develop programs in isolation and how to prepare them for further distribution. We will also quickly look at SSH port forwarding. The lab will start with an on-site test.
Lab #13: Containers with Podman and continuous integration (May 12 - May 16). T2 examination will be held for Thursday labs. We will demonstrate how Podman can be used to effectively test programs in various environments yet in isolation without affecting your system. And we will also explain why there are so many tools with similar purpose. We will see that setting up continuous integration that runs automated tests of your program on every commit is super easy in GitLab and you will be able to configure it for your own projects.
Lab #14: Testing and other bits, on-site test III (make) (May 19 - May 23). The last lab will be devoted to various smaller topics that did not fit into any other lab. The lab will start with an on-site test.