CodeRefinery at PDC summer school 2025
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
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
- Reproducibile dependencies and environments
- Sharing (licensing and publishing)
- (Testing)
- (Automation and reproducible workflows)
- When what is needed
Preparation instructions
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)
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-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