# 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