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
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
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.
mcorranger) - browse through a filesystem using commands
lsandcd - use basic switches of the
lscommand such as-l,-hor-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
catutility - view contents of binary files in hexadecimal using the
hexdumputility - identify file type by using
fileutility - 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
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.txtandcat <foo.txtdiffers - explain how standard inputs/outputs of several programs can be chained together
- optional: explain why
cdcannot be a normal executable file like/usr/bin/ls
Practical skills
- create a Linux script with correct shebang
- set the executable script using the
chmodutility - 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 -Fto filter lines matching provided pattern
Lab #4
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
EDITORin~/.bashrc) - clone a Git repository over HTTPS in shell
- review changes in a Git working copy (
git statuscommand) - create a Git commit from command-line (
git addandgit commitcommands) - upload new commits to Git server or download new ones to a working copy\n(assuming single user project,
git pushandgit pullcommands)\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
PS1variable