Skip to content

Commit 0673298

Browse files
authored
1 parent e2c15fe commit 0673298

File tree

1 file changed

+33
-34
lines changed

1 file changed

+33
-34
lines changed

docs/course-content.md

Lines changed: 33 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -17,58 +17,57 @@ The lecture and the accompanying lab assignments are organized in 7 chapters.
1717

1818
### 1. [Version Control](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/01_version_control/README.md)
1919

20-
- 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.
2424

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)
2626

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.
3331

3432
### 3. [Building and Packaging](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/03_building_and_packaging/README.md)
3533

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.
4140

4241
### 4. [Documentation](https://github.com/Simulation-Software-Engineering/Lecture-Material/blob/main/04_documentation/README.md)
4342

44-
- Understand what you want to document and that there are different aspects (code, development, API, usage).
45-
- The students can choose the right tool for the documentation needs.
46-
- The students know common documentation tools for C++ and Python.
47-
- The students know fundamentals of technical writing.
48-
- Students understand the importance of documentation for themselves and others.
43+
- Be aware that documentation is crucial in RSE.
44+
- Understand that there is a difference between documentation and good documentation.
45+
- Know the purpose and basic structure of several standard documentation building blocks (README, commit message, changelog, ...).
46+
- Read and write common lightweight markup languages and generate PDF files from them.
47+
- Know about the most important website generators and hosting options for research software documentation.
4948

5049
### 5. [Testing and Continuous Integration](https://github.com/Simulation-Software-Engineering/Lecture-Material/tree/main/05_testing_and_ci)
5150

52-
- What type of test to use for what use case.
53-
- Why are tests important?
54-
- The students learn how to automate tests using GitHub and GitLab.
55-
- The students have an overview over different testing frameworks.
51+
- Justify the effort of developing testing infrastructure for simulation software.
52+
- Discern the concepts of unit testing, integration testing, and regression testing with the perspective of simulation software.
53+
- Work with the Python testing frameworks pytest and unittest.
54+
- Write simple tests for C++ toy codes with Boost.Test.
55+
- Know about general concepts of test frameworks such as fixtures and decorators.
56+
- Name and explain common workflows to automate in RSE.
57+
- Write basic automation scripts for GitHub Actions.
58+
- Read basic automation scripts for GitLab CI/CD and explain the necessary steps to host GitLab Runners yourself.
59+
- Use CTest to call tests from CMake.
5660

57-
### 6. [Legal, Archiving, Community, and More](https://github.com/Simulation-Software-Engineering/Lecture-Material/tree/main/06_miscellaneous)
61+
### 6. [Miscellaneous](https://github.com/Simulation-Software-Engineering/Lecture-Material/tree/main/06_miscellaneous)
5862

59-
- 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.
6564

6665
## The challenge
6766

6867
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:
6968

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).
7271
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).
7372

7473
We got amazing contributions when we did this lecture previously:

0 commit comments

Comments
 (0)