Please, see latest news in issue #92 (from April 03).
This page describes how the on-site tests will look like and eventually will also contain description of the (big) homework assignment. Small homework assignments are mentioned in the respective lab pages.
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 |
---|---|
08 (April 7 - April 11) | T1: Git versioning system |
12 (May 5 - May 7 + May 15) | T2: Shell scripting |
14 (May 19 - May 23) | T3: 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 Thursday 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.
Your solution will be submitted through GitLab or through other Git repository: make sure you can perform a clone via a command-line client.
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.
Any attempt to bypass the above rules (e.g. trying to search StackOverflow 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.
Notes for the Git CLI exam
You will be expected to perform the following tasks in Git from the command-line
(some might be required to execute on the remote machine linux.ms.mff.cuni.cz
).
- Configure your Git environment (author and e-mail)
- Clone a repository (from
gitolite3@linux.ms.mff.cuni.cz
or from GitLab or generic HTTPS) - Create a commit
- Create a branch
- Switch between branches
- Merge a branch (and solve any conflicts)
- Push changes (branches) to server
Ensure that you can clone from gitolite3@linux.ms.mff.cuni.cz
when using
the school machines.
Only authentication via public key will be available (i.e. upload your keys
to keys/key.[0-9].pub
files in your repository before the exam as explained
in Lab 05).
The focus of the exam is on working with Git. You will not be required to write any script on your own 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.
Small homework tasks
- First (forum reaction) (until 2025-03-09)
- Second (Git over SSH with keys) (until 2025-03-23)
- Third (regular expressions) (until 2025-05-04)
- Fourth (process signals) (until 2025-05-11)