This page describes how the on-site tests will look like and eventually will also contain description of the (big) homework assignment.
Please, have a look at the course guide page for details how the grading works.
On-site tests
This is the schedule for the on-site tests. The test will be held at the beginning of the lab (duration of the test is 45 minutes).
| Week (date) | Topic |
|---|---|
| 09 (April 13 - April 17) | T01: Git versioning system |
| 12 (May 4 - May 7 + May 15) | T02: Shell scripting |
| 14 (May 18 - May 22) | T03: make build tool |
You are expected to come to the lab you have enrolled to.
Because of state holiday on May 8, the T2 examination for Friday labs will be postponed by a week. We are aware it is not optimal but the schedule for this semester has virtually no complete week (i.e., teaching in all days of a week) during the second half of the semester.
You are allowed to use our webpages, off-line manpages and you can consult your notes and solutions to examples that are part of the lab materials.
You are not allowed to use any other devices (cell phones, your own laptops etc.), consult other on-line resources (the machines will have restricted access to the Internet anyway) or communicate your solution to other students (and vice versa).
In other words, the on-site tests require that you can solve the tasks on your own with technical documentation only.
We kindly ask you to leave your devices in your backpacks during the exam and leave the backpacks in front of the blackboard or on some other visible (but unreachable) place to ensure equal conditions for everyone. Thank you!
Any attempt to bypass the above rules (e.g. trying to use AI assistant on your cell phone) means failing the course on the spot.
You are free to ask for clarification from your teacher if you do not understand the assignment, obviously. We can provide limited hints if it is clear that you are heading in the right direction and need only a little push.
Please, see also the general rules in the course guide.
Format of the exam
Your solution will be submitted to a Git repository: make sure you can perform a clone via a command-line client.
Test will be written on school machines. During the exam you will use a temporary account: you will not have access to any of your files from the AFS home. At the beginning of the exam, you will generate a new SSH key pair, upload it to our keyserver and then clone the Git repository with the actual exam.
The temporary account on the school machines will be prepared for the exam. There will be some shortcuts (see below) for easier access to the repositories you will need but for certain customizations your action will be needed.
Because you will be uploading the solution to a Git repository in Gitolite
(you have worked with it during lab 05), there will be an exam
alias available. Therefore, you will be able to clone the repositories
simply by calling
git clone exam:REPO
instead of
git clone gitolite3@linux.ms.mff.cuni.cz:REPO
Similarly, for uploading your SSH key (that you will need to generate at the beginning of the exam), you would be able to use a shortcut of
ssh-copy-id keyserver
instead of
ssh-copy-id -p 2222 LOGIN@linux.ms.mff.cuni.cz
You will also have a read-only access to the config-LOGIN repository
on Gitolite where you can store your own shell and Git customization
(e.g., aliases, own prompt etc.).
You can also store your notes into the config-LOGIN repository so
that you do not need to print them. Do not store there anything
that might be contrary to the course rules (this includes, for example,
AI agents or exam solutions from your colleagues). Also, please,
keep the repository small (under 5MB). Thank you.
Detailed information about the config-LOGIN repository
is on a separate page.
You can try to run the ssh-copy-id -p 2222 LOGIN@linux.ms.mff.cuni.cz
even before the exam to try it but you will need to generate a new
key pair during the exam anyway.
Notes for the Git CLI exam
Instructions for the exam will be provided in a printed form. They will also include a hint how to generate the SSH key pair and how to upload it to our keyserver.
You will be expected to perform the following tasks in Git from the command-line.
- Configure your Git environment (author and e-mail)
- Clone a repository (from
gitolite3@linux.ms.mff.cuni.czor generic HTTPS) - Create a commit
- Create a branch
- Switch between branches
- Merge a branch (and solve any conflicts)
- Push changes (branches) to server
You will not be required to write any script on your own from scratch but we will be working with a repository containing the following script for printing simple bar charts in the console. You will be required to make some small modifications (such as fixing typos) but we will always guide you to the right place in the code.
import argparse
import sys
def parse_config():
args = argparse.ArgumentParser(description='Console bar plot')
args.add_argument('--columns', default=60, type=int, metavar='N')
return args.parse_args()
def load_input(inp):
values = []
for line_raw in inp:
line = line_raw.strip()
if line.startswith('#') or not line:
continue
try:
val = float(line)
except ValueError:
print(f"WARNING: ignoring invalid line '{line}'.", file=sys.stderr)
continue
values.append(val)
return values
def print_barplot(values, scale, symbol):
for val in values:
print(symbol * round(val / scale))
def main():
config = parse_config()
values = load_input(sys.stdin)
if not values:
sys.exit(0)
coef = max(values) / config.columns
print_barplot(values, coef, '#')
if __name__ == '__main__':
main()
Quizzes
Quizzes will be given on labs 02, 03, 04, 05, 06 and 07 (and 08 for Friday labs).
Small homework tasks
- First (forum reaction) (until 2026-03-08)
- Second (Git over SSH with keys) (until 2026-03-22)
- Third (regular expressions) (until 2026-05-03)
- Fourth (process signals) (until 2026-05-10)