Container technologies are rapidly becoming the preferred way to distribute, deploy, and run services by developers and system administrators. They provide the means to start a light-weight virtualization environment, i.e., a container, based on Linux kernel namespaces and control groups (cgroups). Such virtualization environment is cheap to create, manage, and destroy, requires a negligible...
Introduction
In this workshop, we will introduce the basics of programming in Go and then work our way up to concurrency programming with this relatively new language.
We'll start with the usual "Hello World" program, introduce functions, variables, packages and then interfaces.
Then, we will tackle the two main tools at the disposal of the Go programmer (colloquially known as a gopher):...
The course targets beginning Python developers and people familiar with scripting. The basics required to complete the course are covered, but ideally you already feel comfortable writing small scripts in any language. We highly recommend to use your own laptop (Linux, MacOS, Cygwin) for the exercises.
Data scientists must manage analyses that consist of multiple stages, large datasets and a great number of tools, all the while maintaining reproducibility of results. Amongst the variety of available tools to undertake parallel computations, Pachyderm is an open-source workflow-engine and distributed data processing tool that fulfils these needs by creating a data pipelining and data...
This workshop is an introduction to profiling a system or individual programs. We will concentrate on profiling to understand aspects of program performance. All discussion and examples are presented with Linux in mind, and some Intel specific information will be given.
Topics include:
Overview of
- CPU microarchitecture (Intel mainly)
- OS: processes and threads
- Parallel programming...
Writing maintainable software is a prerequisite in many fields. Especially when working in projects with many members it is essential to
- write readable software and documentation,
- enable versioning of software,
- ensure correctness of software,
- enable automated tests of software, and
- enable agile workflows based on issue tracking.
However, the goals of maintainable software are not...
Python provides a rich ecosystem of open-source software for mathematics, science, and engineering. This tutorial will introduce you to the fundamental packages of the SciPy stack.
You will learn how-to: perform fast numerical calculations in N dimensions using NumPy, analyze your data using Pandas, and visualize the results using Matplotlib. The exercises will be performed in the Jupyter...
Machine learning, and especially deep learning, is one of the current hot topics in computer science and engineering. It has not only experienced tremendous advancements in its theoretical foundations during the last few years, but is now also the state-of-the-art method in a broad range of applications. In this course, you will learn the
- basic terms and approaches in machine learning,
*...
A single plain C file is sufficient to express an embedded program.
As the Arm Cortex-M architecture is designed with C-Code in mind, no assembly level system bring up code is required. This workshop will teach you how to program C code on top of a bare metal CPU without an operating system or support libraries like libc.
It will give you insight on how linkers can be configured to run...
In this workshop, the students will (a) learn how to efficiently use
relational and non-relational databases for modern large-scale
scientific experiments, and (b) how to create database workflows suitable for analytics and machine learning.
First, the focus of the workshop is to teach efficient, safe, and
fault-tolerant principles when dealing with high-volume and
high-throughput database...
OpenMP (Open Multi-Processing) is a programming interface for shared memory parallelization on multiprocessor computers.
The Message Passing Interface (MPI) is a comunication standard describing the exchange of messages for distributed memory parallelization on parallel computers.
Both programming concepts will be introduced with simple examples.
In this course, you will learn to write simple...
OpenACC is a directive-based programming model for highly parallel systems, which allows for automated generation of portable GPU code. In this tutorial, we will get to know the programming model with examples, learn how to use the associated tools environment, and incorporate first strategies for performance optimization into our programs. Finally, we will integrate OpenACC with other GPU...
This Quantum Computing tutorial will enabling the participants to access and run calculations on real quantum computers from IBM. The course gives an introduction into the IBM Q Experience as well as to the open source Quantum Information and Science Kit (Qiskit), an open-source quantum computing framework for leveraging today's quantum processors and conducting research. Basic knowledge of...
Pandas is a Python package that provides data structures to work with heterogenous, relational/tabular data. It provides fundamental building blocks for a powerful and flexible data analysis. Pandas provides functionality to load a wide set of data formats, manipulate the resulting data and also visualize it using various plotting frameworks. We will show in the workshop how to clean and...