This page contains an overview of expected learning outcomes from all labs. It can be useful if you are searching for a particular topic but do not remember in which lab the topic was covered.

Lab #1

Go to lab page

Conceptual knowledge

  • explain why graphical user interface is not a fixed part of Linux
  • list several differences between various graphical interfaces available in Linux
  • explain in broad terms what is a Linux distribution
  • explain what can be understood under the term of unix family of operating systems
  • list a few types of assets that are typically needed for software projects
  • explain in broad terms what is a versioning tool
  • explain fundamental high-level operations of versioning tools

Practical skills

  • boot your own machine into Linux (either via USB, dual-boot or virtualized)
  • log in to a graphical Linux environment
  • log in to the faculty instance of GitLab
  • create a new project in GitLab
  • upload a new file to GitLab via its web user interface and create a commit from it
  • edit existing files in a GitLab project using its web interface
  • customize a selected graphical environment
  • create a basic GitLab issue in a given project

Lab #2

Go to lab page

Conceptual knowledge

  • list pros and cons of using a command-line interface vs a graphical one
  • explain the difference between a terminal (emulator) and a shell
  • explain what is a path to a file
  • explain difference between a relative and an absolute file path
  • explain what are shell (filename) wildcards
  • explain what are command-line options (switches)
  • explain usefulness of -- delimiter (when using wildcards on specifically named files)
  • explain what is a home directory

Practical skills

  • start and close (exit) a terminal emulator
  • customize a selected terminal emulator
  • browse through a filesystem via text user interface tools (e.g. mc or ranger)
  • browse through a filesystem using commands ls and cd
  • use basic switches of the ls command such as -l, -h or -a
  • use wildcards to apply commands to specific subsets of filenames
  • run own Python programs from the command line
  • view contents of text files using the cat utility
  • view contents of binary files in hexadecimal using the hexdump utility
  • identify file type by using file utility
  • use (basic operations) of the built-in manual pages
  • use clipboards available in a graphical interface on Linux
  • use tab completion to effectively write file names and paths
  • use irregularly named files

Lab #3

Go to lab page

Conceptual knowledge

  • explain what is a script in a Linux environment
  • explain what is a shebang (hashbang) and how it influences script execution
  • understand the difference when script has or does not have executable bit set
  • explain what is a working directory
  • explain why working directory is private to a running program
  • explain how are parameters (arguments) passed in a script with a shebang
  • explain what is standard input and output
  • explain why standard input or output redirection is not (directly) observable from within the program
  • explain how execution of cat foo.txt and cat <foo.txt differs
  • explain how standard inputs/outputs of several programs can be chained together
  • optional: explain why cd cannot be a normal executable file like /usr/bin/ls

Practical skills

  • create a Linux script with correct shebang
  • set the executable script using the chmod utility
  • access command-line arguments in a Python program
  • redirect standard input and standard output of a program in shell
  • use standard input and output in Python
  • use the pipe | to chain multiple programs together
  • use basic text filtering tools: cut, sort, …
  • use grep -F to filter lines matching provided pattern

Lab #4

Go to lab page

Conceptual knowledge

  • explain what is a Git working copy (clone)
  • explain why there are two output streams: stdout and stderr
  • explain what is program exit code
  • explain differences and typical uses for the main five interfaces of a\ncommand-line program: command-line arguments, stdin, stdout, stderr, and exit code\n
  • optional: explain what is a file descriptor (from the perspective of a userland developer)

Practical skills

  • configure author information in Git
  • setup default editor in a shell (set EDITOR in ~/.bashrc)
  • clone a Git repository over HTTPS in shell
  • review changes in a Git working copy (git status command)
  • create a Git commit from command-line (git add and git commit commands)
  • upload new commits to Git server or download new ones to a working copy\n(assuming single user project, git push and git pull commands)\n
  • view summary information about previous commits using git log
  • optional: customize Git with aliases
  • redirect standard output and standard error output of a program in shell
  • set exit code of a Python script
  • use the special file /dev/null
  • use standard error output in Python
  • optional: customize shell script with aliases
  • optional: store custom shell configuration in .bashrc (or .profile) scripts
  • optional: customize prompt with the PS1 variable