Try   HackMD

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

  • Installation & setup instructions (to be sent before summer school) -> link to CR install instructions from material
  • Schedule
  • Materials
  • Zenodo
  • exercises + solutions
  • connect materials to HPC
  • add collaborative git?
  • add sharing?
  • 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)

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
    • Focus on concept
  • Sharing (licensing and publishing)
  • (Testing)
  • (Automation and reproducible workflows)
  • When what is needed

Exercises (to be updated)

  • Why we are here talking about RSE
    • x
  • Introduction of the example project
    • make it run?
  • Version control
    • Git-1: Turn your project to a Git repo and share it
    • Git-2: Create a new branch and a new commit
    • Git-3: Archaeology using Git annotate (“blame”)
  • Documentation
    • Documentation-1: Improve the README of your project
    • Documentation-2: In-code documentation
  • Reproducibile dependencies and environments
    • Reproducibility-1: Time-capsule of dependencies
    • Reproducibility-2: Time-travel with containers
    • Reproducibility-3: Build a container and run it on a cluster
    • Reproducibility-4: Building a container on GitHub and running it on a cluster
    • Reproducibility-5: Building a container on a cluster
  • (Testing)
    • Testing-1: Design an end-to-end test
    • Testing-2: Add a unit test
  • (Automation and reproducible workflows)
  • Sharing (licensing and publishing)
    • Sharing-1: Add a license file to your project
    • Sharing-2: CITATION.cff and Zenodo sandbox
    • Sharing-3: What constitutes derivative work?
    • Sharing-4: Licensing situations

Schedule

14.30 - 14.40 context break
14.40 - 14.50 Why are we talking about this
14.50 - 15.10 Version control
15.10 - 15.30 Exercises
15.30 - 15.20 Reproducible dependencies
xx - xx
16.00 - 16.20 Break
16.20 - xx Documentation
xx - xx Exercises
xx - 17.15
17.15 - 17.30 wrapup