## Training Calendar

This course is directed to absolute beginners in Linux / Unix and its command line. We will cover some basic properties of Linux OS (in comparison to MacOS and Windows), how to obtain and install Linux, the role of the shell (at the example of bash), and the most basic shell commands. At the end of the course, the participant will be able to use the shell for basic file system operations, search files for text, pipe commands, and also write very basic shell scripts. The course contains all material from the Software Carpentry course "The Unix Shell", but goes further.

The course will be held in person in PC-room 0.012 at the HRZ, Wegelerstr. 6. The course is limited to 30 participants. The course will be conducted in English.

**Next date: 5 July 2023 - 6 July 2023**

Using HPC systems like *Bonna* or *Bender* requires some basic understanding of the design and functionality of cluster architectures. In this course we cover topics such as:

- Basic design of clusters
- An overview of the (centrally maintained) clusters of the University of Bonn
- How to get access
- Connecting remotely to a cluster (example: bender)
- Functionality and usage of batch systems (example: slurm)
- Interactive jobs and basic job scripts
- Cross-compilation

Basic knowledge of the Linux / Unix shell is needed.

The course will be held online via Zoom. The course is limited to 20 participants. The course will be conducted in English.

**Next date: 12 July 2023 - 13 July 2023**

Using version control systems is one of the most basic methods to ensure the quality of your (coding) work, to organize cooperation with other developers, and to transparently add new features and bug fixes to existing projects. Surprisingly, it almost doesn't add any overhead to your work routine once you got accustomed to using version control and it quickly helps you save time and work. In this course, we use one of the most prominent version control systems (and the absolute standard in open source development), Git, to introduce the basic concepts behind version control, teach you the ten commands that are sufficient for doing (almost) everything you might want to do with Git. Finally we give an overview about the functionality of repository hosting services such as Bitbucket, GitLab and GitHub.

Basic knowledge of the Linux / Unix shell is needed.

The course will be held in person in PC-room 0.012 at the HRZ, Wegelerstr. 6. The course is limited to 30 participants. The course will be conducted in English. The course includes the material from Software Carpentries - Version Control with Git.

**Next date: TBA**

Python has become one of the most popular and most powerful programming languages used for anything from small script-like programs up to mobile applications, scientific data analyses, and even HPC modelling. Its power is mainly due to its simplicity and its strong community that continously develops open source packages for most tasks one might have to solve.

In this course, we use Python3 to introduce the participants to basic concepts of programming. We point out the main differences to shell scripting on one side, and using compiled code on the other side. At the end of the course, participants will have a basic understanding of Python programming and how to use python from the interactive shell and write basic Python code importing existing packages.

This course should be understood as a very basic introduction. The course includes the material from Software Carpentries - Programming in Python.

The course will be held online via Zoom. The course is limited to 12 participants. The course will be conducted in English.

**Next date: 14 June 2023 - 15 June 2023**

What could be a better way to understand how an HPC cluster is built than building one yourself? We throw dozens of Raspberry Pis, Cables, SD-cards and stuff on a big table and see what happens. At the end of the workshop you will have assembled a basic cluster, configured the network, and run the first MPI application on it, just like on one of its bigger siblings like *Bonna* or *Bender*.

Basic knowledge of the Linux / Unix shell is needed. Basic knowledge of git is helpful.

The course will be held in person in PC-room 0.012 at the HRZ, Wegelerstr. 6. The course is limited to 17 participants. The course will be conducted in English.

**Next date: 17 March 2023**

Three weeks, 15 days, a lecture and exercises every day. The three-week course takes place from 9:00-17:00 at the University IT and Data Center (Hochschulrechenzentrum HRZ). The course structure is 90 minutes of lecture 90 minutes exercises, followed by 4 hours of programming under guidance from the tutors.

Prerequisites:

Basic programming in Python. If you are not yet familiar with python, please consult https://docs.python.org/3/tutorial/ before the first session.

Course contents:

Week 1 – Basics

Day 1: Introduction

- What is machine learning, and what can it do for us?

Day 2: Optimization

- The derivative, gradients, and optimization via gradient descent.

Day 3: Linear Algebra:

- Matrix multiplication, Eigenvalues and singular value decomposition, Linear Regression

Day 4: Statistics - Probability Theory I

- random variable, mean and variance, conditional probability,

Day 5: Statistics - Probability Theory II

- common probability distributions, correlation and auto-correlation.

Week 2 – Foundations of machine learning

Day 1: Machine learning basics

- Overfitting/underfitting, classification, regression, k-nearest neighbours.

Day 2: Support vector machines

- Linear separable, non-linear separable, kernel trick.

Day 3: Decision trees and random forests:

- Decision trees, bias and variance problem, bagging, random forests.

Day 4: Clustering and density estimation

- K-means clustering, Gaussian mixture models, Expectation-Maximization.

Day 5: Principal component analysis (PCA)

- PCA for dimensionality reduction, PCA for compression and other applications.

Week 3 – Deep Learning

Day 11: Fully connected networks:

- The MNIST-data set, artificial neurons, forward and backward pass.

Day 12: Convolutional neural networks:

- The convolution operation, convolution layers, and convolutional neural networks.

Day 13: Optimization for deep neural networks:

- gradient descent with momentum, Adam, overfitting, early stopping, regularization.

Day 14: Interpretability:

- visualization of linear classifiers, input optimization, saliency maps, integrated gradients

Day 15: Sequence models:

- Elman-RNN, Long-Short-Term-Memory, Gated recurrent units, language models.

**Next date: 13 March 2023 - 31 March 2023.**