Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
64 changes: 43 additions & 21 deletions 00_organization/challenge_intro_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,26 +47,41 @@ slideOptions:
- Examples: feature, tutorial, documentation, new packaging, bugfix, ...
- Run through complete cycle (issue, discussion, PR, review, merge)

### Timeline
---

## Timeline

1. Pick a software (till **Oct 23**, evening)
2. Present the software: how you got it, what are main features, some tutorials you did, ... (**Nov 6**)
3. Present *"RSE infrastructure"* of the software: Which CI / documentation / building / git workflow ... does it use? How do contributions work? (**Dec 11**)
4. Suggest contribution (**Dec 16**)
5. Present the contribution (**Feb 5**)
- Pick a software (till **Oct 22**, evening)
- **Step 1**: Present the software: how you got it, what are main features, some tutorials you did, ... (**Nov 5**)
- **Step 2**: Present *"RSE infrastructure"* of the software: Which CI / documentation / building / git workflow ... does it use? How do contributions work? (**Dec 17**)
- Suggest contribution (**Dec 17**)
- **Step 3**: Present the contribution (**Feb 4**)

---

## Grading

Challenge / exercises / engagement = 45% / 50% / 5%
Challenge / exercises / other = 45% / 50% / 5%

The challenge part:

- All 3 reports: 3/8
- Presentation: 1/8
- Actual contribution: 2/8 difficulty, 2/8 quality (*"net benefit"* for maintainers?)
- *"outstanding"* / *"passed"* / *"failed"*
- All 3 reports: **3/9**
- Presentation: **2/9**
- Actual contribution: **2/9** difficulty + **2/9** quality
- **difficulty**: extent / difficulty of the contribution
- **quality**: how well executed? Communication, documentation, tests, ... (*"net benefit"* for maintainers?)
- *"outstanding"* / *"good"* / *"ok"* / *"not enough"* (*"good"* -> 1.0)
- You need to pass (at least *"ok"*) all steps individually

---

## Example Contributions

1. Ported several demo cases ([see one](https://github.com/FEniCS/dolfinx/pull/2508)) from FEniCS to [FEniCSx](https://fenicsproject.org/): difficulty *"outstanding"*
2. [Improved website search](https://github.com/MakieOrg/Makie.jl/pull/2474) of [Makie](https://makie.org/website/): difficulty *"good"*
3. [Solved a simple good first issue](https://github.com/pymor/pymor/pull/1898) in [pyMOR](https://pymor.org/): difficulty *"ok"*

(all did a good or outstanding job in terms of quality)

---

Expand All @@ -75,7 +90,6 @@ The challenge part:
- Something in the simulation universe (this includes equation solvers, meshing, scientific visualization, (AI), ...)
- Truly open source, all development in public
- Uses Git
- Written in Python or C++ (not a strict must)
- Real community project (not 1-2 PhD students developing, but multiple research groups behind project)
- A project that is open for contributions (`CONTRIBUTING.md` or similar)
- Ideally a software you have not worked with before (if you have, please discuss with us)
Expand All @@ -90,10 +104,9 @@ The challenge part:
- [DUNE](https://www.dune-project.org/): Modular toolbox for PDEs
- [Eigen](https://eigen.tuxfamily.org): LA library in C++
- [ESPResSo](https://espressomd.org): MD Simulator with Python API (Stuttgart)
- [FEniCS(-X)](https://fenicsproject.org/): FEM library in C++ with Python interface
- [Firedrake](https://www.firedrakeproject.org/): FEM library in Python
- [Gmsh](https://gmsh.info/): Mesh generator
- [LAMMPS](https://www.lammps.org/): MD simulator
- [MercuryDPM](https://www.mercurydpm.org/home): particle code
- [Nalu-Wind](https://github.com/Exawind/nalu-wind): CFD solver for wind farms
- [Palabos](https://palabos.unige.ch/): Lattice Boltzmann method solver

Expand All @@ -106,36 +119,45 @@ The challenge part:
- [preCICE](https://precice.org/): Coupling library (Stuttgart)
- [pyiron](https://pyiron.org/): Workflow manager in Python
- [pyMOR](https://pymor.org/): MOR library in Python
- [pyLife](https://pylife.readthedocs.io/en/stable/): fatigue of mechanical components in Python
- [SU2](https://su2code.github.io/): CFD code in C++
- [SUNDIALS](https://computing.llnl.gov/projects/sundials): Nonlinear solvers, ODEs
- [TRILINOS](https://trilinos.github.io/): Collection of scientific software libraries, mainly solvers
- [VisIt](https://visit-dav.github.io/visit-website/index.html): Scientific visualization software
- more projects in [xSDK](https://xsdk.info/packages/) or [NumFOCUS](https://numfocus.org/sponsored-projects)
- more projects in [xSDK](https://xsdk.info/packages/), [NumFOCUS](https://numfocus.org/sponsored-projects), or [HiRSE Code Promotion](https://www.helmholtz-hirse.de/promo.html)
- **Or your suggestion** (also agent-based or discrete event simulation software)

---

## What Happens if Maintainers do not React in Time?

- Give them time, contact early
- Not your fault
- Keep all communication public, then easy for us to review

---

## How to Submit my Choice?

- [https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2425/challenge](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2425/challenge)
- Comment in [issue #1](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2425/challenge/-/issues/1) till **23rd of October** (next Wednesday) evening (no FCFS)
- [https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2526/challenge](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2526/challenge)
- Comment in [issue #1](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2526/challenge/-/issues/1) till **22rd of October** (next Wednesday) evening (no FCFS)
- Priority list with at least three choices
- If **not** on our suggestion list, write short paragraph what the software does and give links

---

## Role of Advisor

- Benjamin, Frédéric, Gerasimos, or Ishaan
- Use, for example, exercise blocks and time after lectures for discussions
- Benjamin, Felix, Frédéric, Gerasimos, or Ishaan
- Use, for example, exercise blocks and time before and after lectures for discussions
- Share links etc. to issues and PRs (or tag us)

---

## Presentations

- Length depends on number of students in course (maybe 5-10 mins)
- Everybody has to present at least once
- Everybody has to present once or twice (depending on number of students)
- Everybody should learn something from every presentation
- Style: like a presentation in a team meeting, not like a presentation at a conference

Expand All @@ -146,7 +168,7 @@ The challenge part:
- Submit a report for each step
- 1-2 pages (2500-5000 chars)
- Written in markdown
- Submission via a merge request to the [GitLab challenge repo](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2425/challenge)
- Submission via a merge request to the [GitLab challenge repo](https://gitlab-sim.informatik.uni-stuttgart.de/simulation-software-engineering-wite2526/challenge)
- Add links, instructions, ... should work like a compact summary for everybody in the end
- Will be visible to everybody in SSE group
- We will prepare templates
62 changes: 35 additions & 27 deletions 00_organization/course_intro_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,11 @@ slideOptions:
- Gerasimos (Chourdakis) [`@MakisH`](https://github.com/MakisH)
- Ishaan (Desai) [`@IshaanDesai`](https://github.com/IshaanDesai)

Additional challenge advisors:

- Frédéric (Simonis) [`@fsimonis`](https://github.com/fsimonis)
- Felix (Neubauer) [`@Logende`](https://github.com/Logende)

SSE Hall of Fame:

- Alexander (Jaust) [`@ajaust`](https://github.com/ajaust)
Expand All @@ -71,15 +76,13 @@ SSE Hall of Fame:
Two parallel branches:

- **Weekly lectures** (90 mins) and **exercises** (90 mins) to learn and train concepts and tools
- Wednesdays, 09:45–11:15 and 15:45–17:15
- This room: 38-0.108
- No strict distinction between lecture and exercise
- Interactive style (not a theory course)
- Wednesdays, 09:45–11:15 (in V47.05) and 15:45–17:15 (in 38-0.108, might be too small in first week)
- Typically lecture in the morning and exercise in the afternoon
- **Individual challenge**: contribute to real simulation software :rocket:
- List of software candidates: this afternoon
- 3 rounds of presentations from you (more later)
- You get a direct advisor
- Use exercise blocks and time after lectures for discussions
- Use time before and after lectures for discussions

---

Expand All @@ -88,6 +91,8 @@ Two parallel branches:
- Basic programming (Python, C++)
- Basic software development skills (bash, Git, md, ...)
- Some simulation background
- SimTech, COMMAS students: no issue
- CS, SE: ideally through Numerical Fundamentals (NumGL) and Fundamentals of Scientific Computing (WissRech)

---

Expand All @@ -100,22 +105,13 @@ Two parallel branches:

---

## Waiting List

- Students who have a fixed spot (top 40) in either the lecture or the exercise get in.
- We take 50 students in total.
- Remaining spots are filled by waiting list provided presence or excused today.
- We manually add these students at the end of this week.

---

## Material

- Great open-source book to recap: Irving, Hertweck, Johnston, Ostblom, Wickham, and Wilson: [Research Software Engineering with Python](https://third-bit.com/py-rse/)
- All our material is on [https://github.com/Simulation-Software-Engineering](https://github.com/Simulation-Software-Engineering)
- Mainly markdown ... use your favorite tool to render (simply GitHub viewer, [GWDG Hedgedoc](https://pad.gwdg.de/), [stuvus Hedgedoc](https://pad.stuvus.de/), [pandoc](https://pandoc.org/), [PDFs generated in CI](https://github.com/Simulation-Software-Engineering/Lecture-Material/actions/workflows/create-pdfs-from-markdown.yml), [Marp example](https://github.com/uekerman/sse-marp-example), ...)
- We rework the material as the semester goes.
- We give many links to videos, docs, blog posts, podcasts, ...
- We give links to docs, videos, blog posts, podcasts, ...

---

Expand All @@ -132,6 +128,15 @@ Two parallel branches:

---

## Use of Generative AI

- Also changes RSE rapidly
- Even more important: having a good overview of technology and being able to **read** code (what we teach in this course)
- If you use generative AI for your exercises or your challenge: **mandatory** to make this transparent (which parts of your code, how, ...)
- It is important, experiment! But also build a firm understanding of the basics of technology!

---

## Chapters

1. Version Control
Expand All @@ -155,11 +160,11 @@ Two parallel branches:

### Timeline

1. Pick a software (till **Oct 23**, evening)
2. Present the software: how you got it, what are main features, some tutorials you did, ... (**Nov 6**)
3. Present *"RSE infrastructure"* of the software: Which CI / documentation / building / git workflow ... does it use? How do contributions work? (**Dec 11**)
4. Suggest contribution (**Dec 16**)
5. Present the contribution (**Feb 5**)
- Pick a software (till **Oct 22**, evening)
- **Step 1**: Present the software: how you got it, what are main features, some tutorials you did, ... (**Nov 5**)
- **Step 2**: Present *"RSE infrastructure"* of the software: Which CI / documentation / building / git workflow ... does it use? How do contributions work? (**Dec 17**)
- Suggest contribution (**Dec 17**)
- **Step 3**: Present the contribution (**Feb 4**)

---

Expand Down Expand Up @@ -196,8 +201,8 @@ td {
| ---- | ---- | ------- |------ | -------- |
| 12.11. |Lecture | 3 | Intro packaging, Python packaging | Ishaan |
| 12.11. |Lab | 3 | Python packaging | Ishaan |
| 19.11. |Lecture | 3 | Linux fundamentals, Make, CMake | Benjamin |
| 19.11. |Lab | 3 | CMake and Docker | Benjamin |
| 19.11. |Lecture | 3 | Linux fundamentals, Make, CMake | Gerasimos |
| 19.11. |Lab | 3 | CMake and Docker | Gerasimos |
| 26.11. |Lecture | 3 | Spack | Ishaan |
| 26.11. |Lab | 3 | Spack | Ishaan |
| 03.12. |Lecture | 3 | CPack and more CMake | Benjamin |
Expand Down Expand Up @@ -235,13 +240,16 @@ td {
## Examination

- *"Course accompanying examination"*: no exam, but continuous examination (more like a lab course or a seminar)
- Attendance is mandatory.
- Attendance is mandatory
- We look at:
- Challenge (reports, presentations, contribution) (45%)
- Exercises (not every detail, but *"outstanding"* / *"passed"* / *"failed"* ) (50%)
- Overall engagement (interactive lecture, discussions, small presentations, contributions, ...) (5%)
- Challenge (reports, presentations, contribution; more in the afternoon) (45%)
- Exercises (not every detail, but *"outstanding"* / *"good"* / *"ok"* / *"not enough"* ) (50%)
- Other (e.g. contributions to lecture material, ...) (5%)
- *"good"* everywhere leads to 1.0.
- We give (brief) feedback after every exercise.
- You will need to register yourself to the *"exam"* on C@MPUS.
- Point of no return: Once you handed in the first report (Nov 6), you have to register.
- Last in: The deadline to pick a software (**Oct 22**, evening)
- Last out: Once you handed in the first report (**Nov 6**)

---

Expand Down
2 changes: 1 addition & 1 deletion 00_organization/rse_basics_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ slideOptions:
> A Research Software Engineer (RSE) combines professional software engineering expertise with an intimate understanding of research.

- *"Movement"* started in the UK, first UK RSE conference in 2016
- First conferences in Germany and the Netherlands in 2019
- First conferences in Germany and the Netherlands in 2019 ([deRSE 2026](https://events.hifis.net/event/2945/) is in Stuttgart, March 3-5)
- [First de-RSE position paper](https://f1000research.com/articles/9-295/v2) in 2020, [several working groups](https://de-rse.org/en/working_groups.html)
- [Learning and teaching RSE](https://de-rse.org/learn-and-teach/), [foundational competencies](https://de-rse.org/blog/2024/10/08/identifying-the-foundational-competencies-of-an-RSE-en.html)
- [Why be an RSE?](https://researchit.blogs.bristol.ac.uk/2021/10/14/international-rse-day-why-be-an-rse/) Interesting and novel projects, technical freedom, RSEs come from varied backgrounds, development for social good
Expand Down