You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Refresh and organize students' existing knowledge on git (learn how to learn more).
21
-
-Students can explain difference between merge and rebase and when to use what.
22
-
-How to use git workflows to organize research software development in a team.
23
-
-Get to know a few useful GitHub/GitLab standards and a few helpful tools.
20
+
- Refresh and organize students' existing knowledge on Git (learn how to learn more).
21
+
-Explain difference between merge and rebase and when to use what.
22
+
-Use Git workflows to organize research software development in a team.
23
+
-Know about a few useful GitHub/GitLab standards and a few helpful tools.
24
24
25
-
### 2. [Virtualization and Containerization](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/02_virtualization_and_containers/README.md)
25
+
### 2. [Virtualization and Containers](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/02_virtualization_and_containers/README.md)
26
26
27
-
- What is the difference between virtualization and containers?
28
-
- When to use virtual machines and when containers.
29
-
- How to work with virtual machines (VirtualBox) and how to manage these with Vagrant.
30
-
- Building containers with Docker and Singularity.
31
-
- Understand pros and cons of different container technologies.
32
-
- Student can set up their own containers tailored to their requirements.
27
+
- Name differences between virtualization and containers and name use cases for each.
28
+
- Create and modify virtual machines with VirtualBox and generate them with Vagrant.
29
+
- Create and manage Docker containers.
30
+
- Name containerization technologies beyond Docker and name their main differences.
33
31
34
32
### 3. [Building and Packaging](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/03_building_and_packaging/README.md)
35
33
36
-
- Comprehending the necessity to package code
37
-
- Using package managers to package code and upload to a remote managing platform
38
-
- What package managers do exist for high-performance computing applications?
39
-
- How to easily add your code to package managers for reproducibility.
40
-
- How to create reproducible builds or environments?
34
+
- Explain why software is packaged.
35
+
- Create Python packages, publish on PyPI, and install with pip.
36
+
- Understand the difference between static and dynamic libraries and common ways of installation on Linux.
37
+
- Build C++ software and handle dependencies with Make and CMake.
38
+
- Package C++ software with CPack and create Debian packages.
39
+
- Create Spack packages, e.g., for high-performance computing systems with restricted access rights.
- Understand why it is important to add a license to one's code.
60
-
- Which license to pick for your code.
61
-
- Importance of long term storage/availability of data and ow to make it available.
62
-
- Data and metadata documentation using DataVerse ([DaRUS](https://darus.uni-stuttgart.de/)).
63
-
- Importance of reproducibility of research.
64
-
- How to build and interact with users to build a community.
63
+
- Know the basics about several other important things concerning research software engineering: FAIRness of research data and research software, FLOSS licenses, versioning schemes, repository layout standards, and more.
65
64
66
65
## The challenge
67
66
68
67
Parallel to the weekly lab work, you work on an individual challenge, where you apply the learned concepts and tools with the ultimate goal to contribute to a large-scale community simulation software package. The challenge is structured in three parts, whereas each part is completed by a short presentation of the intermediate results in class:
69
68
70
-
1. You get acquainted with the basic functionality of a large-scale simulation software package (such as FEniCS, PETSc, TRILINOS, DuMuX, preCICE, or SU2) by studying tutorials and documentation (first quarter of the course)
71
-
2. You analyze the RSE infrastructure and the development cycle of the software package (second quarter of the course).
69
+
1. You get acquainted with the basic functionality of a large-scale simulation software package (such as FEniCS, PETSc, TRILINOS, DuMuX, preCICE, or SU2) by studying tutorials and documentation (first third of the course)
70
+
2. You analyze the RSE infrastructure and the development cycle of the software package (second third of the course).
72
71
3. You contribute to the software package. The contribution can be small, but should not be trivial. Possible examples: Adding a new tutorial, extending the documentation, working on a "good first issue", adding support of a new package manager. Important is to properly go through all development steps if possible (contact community, open issue, open pull request, test, review, merge).
73
72
74
73
We got amazing contributions when we did this lecture previously:
0 commit comments