# CodeRefinery at PDC summer school 2025
:::info
old materials:
- Last year materials: https://coderefinery.github.io/research-software-engineering
- Slides: https://cicero.xyz/v3/remark/0.14.0/github.com/coderefinery/research-software-engineering/main/presentation.md/
WIP materials: https://samumantha.github.io/research-software-engineering/
:::
PDC Summer school webpage: https://www.pdc.kth.se/summer-school/2025
Timing: 14:30-17:30 (- few minutes in beginning and 15 min break in middle)
Mix of lecture and hands-on!
- working with neighbor?
## Plan
- Samantha does lecture
- Johan assistant, asking questions and supporting answering of tricky questions
- Short break in beginning
- Longer break in middle
- 2 larger exercise sessions
- people run on own laptop (fallback: Dardel)
- Reconnect Tue 15.7
- Johan on vacation: 21.7-3.8
---
## Meeting notes
**16.7 Johan, Samantha**
- learners do not have any project work
- more exercises than time, mark as optional
- slides vs materials -> Samantha still undecided :/ but materials will stay availabe even if slides will be used for the presentation
- main exercises for the lesson: git & documentation
- "Let's bring us all to same level" instead of "this will be boring for some of you"
- dependency management for compiled languages ? (compiling etc is being discussed on Fri before by Johan)
- cmake: non-intrusive, separate machinery, define order in which to execute files to compile + buildtime and runtime availability, constraints are defined (between x and y), scans computer for availability: if not available it throws an error (for non-optional)
- Johan will add a brief info box on that
**during PASC25: Johan, Alessandra, Parasuram, Samantha**
People should understand:
- licensing as a concept
- collaborative coding
- documentation
- short on git
- testing as a concept (within a minute)
- packaging (no containers)
**7.3 Johan, Samantha**
- Plan: co-teaching
- We decided to go with slides
- And limit the content to really fit the timeframe, keep other stuff as extra reading material
- eg the course has no immediate need for containers
- Johan to discuss with Allessandra what are the most important aspects of this lecture + hands-on to see what to focus on
- After that another meeting to split the content "who does what" and then start preparing
---
## To do
- [ ] Installation & setup instructions (to be sent before summer school) -> link to CR install instructions from material
- [ ] Introduce point of exercises: Get hands dirty, no time to do all, so do not worry, all have solutions and can be done on own time
- [x] Schedule
- [ ] Materials
- [ ] Slides
- [] Remove what is covered in Exercises
- [ ] Exercises
- [ ] Test for timing
- [ ] Solutions
- [ ] Rest of materials
- [ ] Extra slides "what we did not talk about"
- [ ] Containers
- [ ] Testing
- [ ] connect materials to HPC
- [ ] add collaborative git?
- [ ] wrap up - what is needed when?
- [ ] Johan add something on reproducibility for compiled languages
- [ ] Note box in reproducibility: Module versioning (default often the latest version, often but not always stable)
- [ ] Zenodo
---
## Parts
- Why we are here talking about RSE
- PDC flagship codes will be presented (Gromacs, Veloxchem and neko) -> exemplary projects for implementation of what is taught here; all sizes!
-
- Introduction of the example project
- Share the link to the example repository
Ask questions:
- Would you know what to do with that?
- What would you wish for?
- Could you run it?
-> link to lessons!
- Version control
- Documentation
- connect to Sphinx of lesson material
- link to gromacs: https://manual.gromacs.org/current/index.html
- show it's textbased
- Reproducibile dependencies and environments
- Focus on concept
- Sharing (licensing and publishing)
- (Testing)
- (Automation and reproducible workflows)
- When what is needed
---
## Preparation instructions
- GitHub account
- Sphinx?
-
---
## Schedule
14.30 - 14.35 context break 5 min
14.35 - 14.50 Why are we talking about this + example intro 15 min
14.50 - 15.10 Version control 20 min
15.10 - 15.30 Exercise I 20 min (GitHub)
15.30 - 15.50 Reproducibility 20 min
15.50 - 16.10 Break 20 min
16.10 - 16.30 Documentation 20 min
16.30 - 16.50 Exercise II 20 min (ReadMe + Sphinx)
16.50 - 17.00 Sharing and reusing 10 min
17.00 - 17.20 Exercise III 20 min (own org, Derivative work, Licensing situation)
17.20 - 17.30 wrapup 10 min
## Exercise sessions
Exercise I (20 min)
- Version control
Git-1: Turn a project to a Git repo and share it
Git-2: Contribute to the example repository
Git-3: Archaeology using Git annotate (“blame”)
Exercise II (20 min)
- Documentation
Documentation-1: Comments
TODO: Documentation-2: ReadMe
Documentation-3a: Sphinx
Documentation-3b: Add more content to your example Sphinx documentation
Exercise III (20 min)
Sharing-1: Licensing
Sharing-2: CITATION.cff and Zenodo sandbox
Sharing-3: What constitutes derivative work?
Sharing-4: Licensing situations
## Mini exercises
- Example project
- Reproducibility
Reproducibility-1: Time-capsule of dependencies