This interdisciplinary seminar offers training for aspects of both research software engineering and research data management.
Abstract:
This seminar introduces core principles of research software engineering and data management in the context of applied mathematics. It outlines a roadmap for the topics to be covered in the seminar series and invites participants to provide feedback and suggest additional themes to guide future sessions.
We will start by looking at how we can test locally on our own laptop and then set up a workflow such that these tests run automatically for every change we do on a GitLab repository.
Prerequisites: Setup of an SSH key for working with GitLab is highly recommended but optional. For information on how to set it up see https://docs.gitlab.com/ee/user/ssh.html . If you have any questions on this don't hesitate to ask!
In this seminar we will learn some basics about testing and test driven development. Both from the theoretical site of test design and scopes of tests and the practical site of setting up a testing environment and writing some first tests. Prerequisites for this weeks seminar: The exercises are prepared in Python, Julia, R and C++ so you should ideally have one of these installed. But the test design can also be done theoretically.
In this first workshop in a series on software quality, we will look at some tools where you don't need to write additional code to use them. The tools and example we use will be in Python, but you won't need a lot of knowledge about python to participate. Additionally, many things can be transferred to other languages (including LaTeX) and we will name respective tools. The workshop will answer the following questions: What is a linter and how do I use it? How can I ensure that code written by multiple people looks coherent? How can I write comments for my functions so they show up in the help menu? How can I find spelling mistakes? How can I run all these checks whenever I want to commit my code in git?
Prerequisites: Bring your own laptop with Python installed.
In this workshop we will learn some more advanced techniques and commands in git and answer the following questions. How do I manage urgent fixes interrupting my current work? How can I undo my most recent work? How do I incorporate changes done by others in the meantime? How can I rewrite the git history to tell a cohesive story? How do I find out at which commit a bug was actually introduced?
Prerequisites: Bring your own laptop with git installed. This is an advanced course so having some experience with git is recommended, more specifically How do I record changes in a commit? How can I see what happened before / inspect my git history? How can I branch off my work? How do I synchronize between my machine and a remote machine/server?
This seminar will answer the following questions: How do I download a repository, so I can contribute my changes to it? What is a fork? How do I synchronize changes between different machines (laptop, GitLab, workstation)? How can I present and offer my changes to be added in a merge request? How can we discuss merge requests and suggest changes? How do two of the most common workflows for collaborating on a repository work?
Prerequisites: You will need to have an SSH key set up with our local GitLab instance, see: docs.gitlab.com/ee/user/ssh.html#generate-an-ssh-key-pair and https://docs.gitlab.com/ee/user/ssh.html#add-an-ssh-key-to-your-gitlab-account but don't hesitate to ask! I will also be at A406 a few minutes earlier to help. This is an intermediate course so having some experience with git is recommended, more specifically: - How do I record changes in a commit - How can I branch off my work
This seminar will answer the following questions: How can I set up a public/private ssh key pair? How can I run commands on a remote machine using ssh? How can I register a public key with a remote computer? How can I register a public key with GitLab and GitHub How does authentication with a public/private key pair work?
Prerequisites: You should know the answers to these questions from the introduction course: How can I move around and inspect files and folders on the computer? How can I run shell commands?
As a deeper dive into the command line (Terminal/Konsole) we will answer the following questions: How can I perform the same actions on many different files? How can I save and reuse commands? How can I find files? How can I find things in files?
Prerequisites: As this is a continuation of last weeks seminar you will need to follow the instructions under 'Download files' and possibly under 'Install software' (directly below) on https://swcarpentry.github.io/shell-novice/#download-files Additionally, you should know the ansers to the questions covered last week: What is a command line interface and why should I use one? How can I move around and inspect files and folders on the computer? How can I create, edit, copy and delete files? How can I combine existing commands? If not don't hesitate to ask, or look through the material on https://swcarpentry.github.io/shell-novice/ up to and including 04 Pipes and Filters.
In this hands-on workshop, we will look into the Unix shell, which allows us to navigate our computers file system, inspect and modify files and folders as well as using the so called command line interfaces (CLI) of many programs.
Prerequisites: You should bring your own laptop with a Bash shell installed. You can follow the instructions for your operating system for The Bash Shell here to install both git and a bash terminal (if not already present).
In this hands-on workshop, we will look into git, a version control system. We will start by learning the basic ideas of tracking changes with git. Then, we will look at using so called branches to organize in-progress work as an individual and finish with learning how to resolve conflicting changes.
Prerequisites: You should bring your own laptop with git installed. You can follow the instructions for your operating system for The Bash Shell here to install both git and a bash terminal (if not already present).
JuliaCon 24 has just ended (9th-13th July) and we will give a recap on interesting new developments within the wider community. Additionally, the release of the new Julia version (1.11) is just around the corner so we will have a look at some new features it will provide.
This meeting will features talks by Maximilian: A schort introduction to FEniCSx Tom: Spherically symmetric Cahn-Hilliard equations on multiple coupled domains. More information and source resources can be found at the WIAS internal gitlab website https://lab.wias-berlin.de/fenicsuser/meetings .
We will explore a few ways of how you can backup your data from your Laptop to the WIAS servers. And we will also give you some time to set it up if you need to and help you with it.
Prerequisites: If you want to setup a backup during the seminar you should bring your laptop.
We will start by learning how working with a remote git repository works on our institutes laptop. Afterwards, we will look at two typical collaboration workflows and how to practically do them on GitLab.
Prerequisites: You should set up an SSH key for working with GitLab before the seminar (see https://docs.gitlab.com/ee/user/ssh.html ). If you have any questions on this don't hesitate to ask!
The Julia language comes with a standardized infrastructure for testing and documentation generation. We describe and demonstrate the main elements of this infrastructure, cover supporting Julia packages and give practical hints from package development experience.
Prerequisites: Bring Your Own Laptop.
In the hands-on workshop, we will introduce the preparation of mathematical models using MarkDown templates for the integration into MaRDI's MathModDB (database of mathematical models). In the interactive part of the seminar you will be able to practice this preparation using the templates for your own mathematical model. We kindly ask you to bring a mathematical model that is relevant for you as a paper, preprint or manuscript (e.g. as PDF).
Prerequisites: Bring Your Own Mathematical Model (Paper, Preprint, Manuscript) Bring Your Own Laptop with MarkDown-Editor. We recommend Visual Studio Code.
This meeting will features talks by Anant on Reusing LU factorization in FEniCS Janina on Neural Networks for Parametric PDEs - Learning FE Coefficients Dirk on Solving and visualising axisymmetric PDEs in FEniCS More information and source resources can be found at the WIAS internal gitlab website https://lab.wias-berlin.de/fenicsuser/meetings .
In this workshop we will learn some more advanced techniques and commands in git like Managing interrupted work Integrating work from other branches Rewriting git history Bug hunting
Prerequisites: Some basic knowledge about using git. Bring your own laptop with git installed.
In this workshop, we will introduce the tool MaRDMO for the research data management organizer (RDMO).
Prerequisites: Bring Your Own Laptop, no need to have anything special installed.
Pluto's mission statement is to make scientific computing more accessible and fun ! We all know that computers are fun, but what does it mean for computing to be accessible ? More info: This talk highlights different areas of accessibility in scientific computing: - Taking skills into account: easy installation, simple API. - Taking learning backgrounds into account: documentation like "Julia for Matlab users" or "Pluto for Excel users". - Web accessibility: screen reader support, high-contrast mode. - Availability: free and open source, easy to find.
In this three part workshop, we will start by a general look into the user interface of VSCode. Afterwards, we will look at a useful extension for writing LaTeX source files and its features and end with a look into the git integration of VSCode.
Prerequisites: You should bring your own laptop with VSCode or VSCodium installed and some thesis or paper to use as a playground to try out features.
Prerequisites: You should bring your own laptop with git installed You can follow the instructions for your operating system for The Bash Shell here to install both git and a bash terminal (if not already present).