---
tags: workshop-2022-March
---
# March 2022 workshop planning
:::info
- Workshop page: https://coderefinery.github.io/2022-03-22-workshop/
- This document: https://hackmd.io/@coderefinery/2022-march-planning
:::
## Advertising
Templates (please do not hesitate to adapt also and please also share yours): https://github.com/coderefinery/2022-03-22-workshop/issues/1
- [x] Twitter: https://github.com/coderefinery/coderefinery-twitter/pull/34 (of course we need more tweets later)
- [x] Sigma2 newsletter (RB)
- [x] Notify-me list (RB)
- [x] SNIC newsletter (JH or DI)
- [x] ENCCS website (TW)
- [x] CSC training newsletter (SW)
- [x] [CSC training calendar](https://ssl.eventilla.com/event/6PQrJ) (SW)
- [ ] Aalto STEM students e-lists (EG) [one email sent]
- [ ] Aalto triton users (EG) [one email sent]
- [ ] Otaniemi posters at CS+U+NBE+PHYS+VAARE (EG)
- [ ] [Delta doctoral network](https://sites.tuni.fi/delta/) (LF)
- [x] Notify UiB researchers [one mail sent to faculties] (DP)
- [x] UiB hpc mailing list (DP)
- [x] NERSC, Bergen mailing list(DP)
- [X] University of Oslo computational biology mailing list (SR)
- [X] University of Oslo Phd and Postdocs mailing list (SR)
- [X] University of Oslo dDcince contact (SR)
### Tweets
- [x] The next CodeRefinery workshop has [x] instructors and helpers from [y] institutions, and so far [z] total registrations.
- The CodeRefiney workshop is not about programming, but tools for development. It's targeted towards scientists, and this year everyone can attend online
- This CodeRefinery workshop is livestreamed, anyone can attend. Imagine the possibilities: form your own watching party, watch in your own room, and do exercises together
- When you can reach thousands of people in a workshop (Twitch livestream), should we require registrations? In the end, we don't require, but recommend for our reporting: [link]
- CodeRefinery started emphasizing learning teams (leader + 5 learners) for its previous workshops. But that's hard with livestreams, any ideas?
- Wonder why we use livestream for massive courses? Many reasons, for example we need to teach teach anyway, and separating teaching from learners makes things very easy.
- Instructor point of view in a livestream: most amazing thing is that during breaks, you flip the scene and you can talk without everyone seeing your planning time. Very convenient!
- After you've done co-teaching (or seen it), you'll never want to teach alone again. Watch our course to see how it works
- Or if you want to know now, watch our livestream sample video [youtube lin]
## Role distribution
- Anything, just let me know (expert helpers):
- Luca
- Video production (streaming, scene selection, video editing and archiving)
- lead: Richard
- backup and help: Enrico (I will be in Otaniemi for the hybrid CR, so I cannot run "the studio", however I can help for post-processing part)
- Luca: I have very rudimental skills in video processing/editing etc., but would be glad to help and maybe learn something on the way)
- Zoom host (all Zoom logistics and breakoutroom setup)
- lead: Radovan
- backup: Enrico
- Communication (email communication with participants)
- lead: Radovan (I changed this only because a lot of communication has to happen already before the workshop)
- backup, helps reviewing: Diana, Enrico
- HackMD editors (edit and archive notes each day)
- prepares it for the workshop: Radovan
- day 1: Thor
- day 2: Thor
- day 3: Thor
- day 4: Diana
- day 5: Diana
- day 6: Diana
- Exercise leads onboarding & EL communication ([onboarding material](https://hackmd.io/@coderefinery/March22_EL_onboarding) and [EL HackMD](https://hackmd.io/@coderefinery/EL_hackmd_22))
- Samantha
- Radovan
- Luca (only Mar 16)
- Johan (only Mar 16)
- Enrico (only Mar 17)
- Thomas (only Mar 17)
- Richard (if Jarno and Thomas are in Aalto garage)
- Sabry
- Diana (only March 16)
- Install help (be present during install help session, see workshop page for times):
- Radovan
- Enrico
- Thomas
- Pavlin
- Johan (only Mar 16)
- Luca (only Mar 16)
- Jarno (only Mar 17)
- Sabry
- Teaching lead (coordinates schedule, finds instructors, schedules a call with each lesson pair and leads exercise lead onboarding)
- Radovan
- Instructors (**work together on lesson issues, create a list of their exercises, and teach**)
- (add your preferences, each lesson needs two people for co-teaching/backup)
- Git intro day 1: Radovan and Diana
- Git intro day 2: Radovan and Diana
- Collaborate Git: Jarno and Radovan
- Reproducible research and FAIR data: Thor and Samantha
- Social coding and open software: Richard and Sabry
- Jupyter: Thor and Johan
- Documentation: Jarno and Samantha
- Software testing: Johan and Luca
- Modular code development Radovan and Luca
- Can do anything left over: Richard, Luca (cannot attend 29th and 30th)
# Schedule - time given in CET
**Day 1 - tentative (March 22, Tuesday)**
* 08:50 - 09:00 (10 min) Soft start and icebreaker question
* 09:00 - 09:20 (20 min) Welcome and practical information Richard
* 09:20 - 12:30 [Introduction to version control (part 1/2)](https://coderefinery.org/git-intro/)
- 09:20 - 09:35 (15 min) [Motivation - teaching & demo](https://coderefinery.org/git-intro/motivation/#motivation) Radovan
- 09:35 - 09:50 (15 min) [Basics - teaching & type-along](https://coderefinery.org/git-intro/basics/#basics) Radovan
- 09:50 - 10:05 (15 min) [Basics - breakout room exercises](https://coderefinery.org/git-intro/basics/#exercise-record-changes) Radovan and ELs/EHs
1. [Record changes](https://coderefinery.org/git-intro/basics/#exercise-record-changes)
2. [Optional: Comparing, renaming, and removing](https://coderefinery.org/git-intro/basics/#optional-exercises-comparing-renaming-and-removing) - to be done if time allows
- 10:05 - 10:15 :coffee: :walking: :tea: Break
- 10:15 - 10:35 (20 min) [Basics - History, commit log, ignoring - teaching](https://coderefinery.org/git-intro/basics/#git-history-and-log) - Radovan
- 10:35 - 10:55 (20 min) [Branching and merging - teaching/type-along](https://coderefinery.org/git-intro/branches/#branching-and-merging) Diana
- 10:55 - 11:10 (15 min) [Branching and merging - breakout room exercises](https://coderefinery.org/git-intro/branches/#exercise-create-and-commit-to-branches) Diana and ELs/EHs
1. [Create and commit to branches](https://coderefinery.org/git-intro/branches/#exercise-create-and-commit-to-branches) Teaching resumed before merging branches.
3. [Optional exercies with branches: Fast-forward merge and Rebasing](https://coderefinery.org/git-intro/branches/#optional-exercises-with-branches) - to be done if time allows
- 11:10 - 11:20 :coffee: :walking: :tea: Break
- 11:20 - 11:30 (10 min) Summarize branching and merging
- 11:30 - 11:45 (15 min) [Conflict resolution - teaching/type-along](https://coderefinery.org/git-intro/conflicts/#conflict-resolution) Radovan
- 11:45 - 12:00 (15 min) [Conflict resolution - breakout room exercises](https://coderefinery.org/git-intro/conflicts/#exercise-create-and-resolve-a-conflict) Radovan and ELs/EHs
1. [Create and resolve a conflict](https://coderefinery.org/git-intro/conflicts/#exercise-create-and-resolve-a-conflict)
2. [Optional exercise with conflict resolution](https://coderefinery.org/git-intro/conflicts/#optional-exercises-with-conflict-resolution) - to be done if time allows
- 12:00 - 12:10 (10 min) Discuss conflicts
- 12:10 - 12:25 (15 min) Buffer, Q&A session
- 12:25 - 12:30 (05 min) Feedback & What will we be doing tomorrow?
**Day 2 - tentative (March 23, Wednesday)**
* 08:50 - 09:00 (10 min) Soft start and icebreaker question
* 09:00 - 09:10 (10 min) Recap and Q&A from day 1
* 09:10 - 12:30 [Introduction to version control (part 2/2)](https://coderefinery.org/git-intro/)
- 09:10 - 09:40 (30 min) [Sharing repositories online - teaching/type-along](https://coderefinery.org/git-intro/remotes/#sharing-repositories-online) Diana
- 09:40 - 09:55 (15 min) [Inspecting history - teaching/type-along](https://coderefinery.org/git-intro/archaeology/#inspecting-history) Radovan
- 09:55 - 10:10 :coffee: :walking: :tea: Break
- 10:10 - 10:40 (30 min) [Inspecting history - breakout room exercises](https://coderefinery.org/git-intro/archaeology/#exercise-basic-archaeology-commands) Radovan and ELs/EHs
1. [Basic archeology commands](https://coderefinery.org/git-intro/archaeology/#exercise-basic-archaeology-commands)
2. [Optional: Git bisect](https://coderefinery.org/git-intro/archaeology/#optional-exercise-git-bisect) - to be done if time allows
- 10:40 - 10:45 (05 min) Summarize inspecting history
- 10:45 - 11:00 (15 min) [Undoing and recovering - teaching/type-along](https://coderefinery.org/git-intro/recovering/#undoing-and-recovering) Diana
- 11:00 - 11:10 :coffee: :walking: :tea: Break
- 11:10 - 11:30 (20 min) [Undoing and recovering - breakout room exercises](https://coderefinery.org/git-intro/recovering/#exercise-revert-a-commit) Diana and ELs/EHs
1. [Revert a commit](https://coderefinery.org/git-intro/recovering/#exercise-revert-a-commit)
2. [Modify a previous commit](https://coderefinery.org/git-intro/recovering/#exercise-modify-a-previous-commit)
3. [Git reset](https://coderefinery.org/git-intro/recovering/#exercise-git-reset)
- 11:30 - 11:35 (05 min) Summarize undoing and recovering
- 11:35 - 12:00 (25 min) [Using the Git staging area - teaching/type-along](https://coderefinery.org/git-intro/staging-area/#) Radovan
- 12:00 - 12:10 (10 min) [How much Git is neccessary?](https://coderefinery.org/git-intro/level/#practical-advice-how-much-git-is-necessary) Radovan
- 12:10 - 12:25 (15 min) Q&A session
- 12:25 - 12:30 (05 min) Feedback & What will we be doing tomorrow?
**Day 4 - tentative (March 29, Tuesday)**
* 08:50 - 09:00 Soft start and icebreaker question
* 09:00 - 11:15 [Reproducible research](https://coderefinery.org/reproducible-research/) (Thor, Samantha)
- 09:00 - 09:10 [Motivation](https://coderefinery.org/reproducible-research/motivation/) (Thor)
- 09:10 - 09:20 [Organizing your projects](https://coderefinery.org/reproducible-research/organizing-projects/) (Samantha)
- 09:20 - 09:50 [Recording dependencies](https://coderefinery.org/reproducible-research/dependencies/) (Samantha)
- discussion (15 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/dependencies/#exploring-conda-environments)
- 09:50 - 10:00 Break
- 10:00 - 10:30 [Recording computational steps](https://coderefinery.org/reproducible-research/workflow-management/) (Thor)
- discussion (15 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/workflow-management/#using-snakemake)
- 10:30 - 10:45 [Recording environments](https://coderefinery.org/reproducible-research/environments/) (Samantha)
- 10:45 - 11:10 [Sharing code and data](https://coderefinery.org/reproducible-research/sharing/) (Thor)
- discussion (10 min) and [breakout room exercise (15 min)](https://coderefinery.org/reproducible-research/sharing/#connecting-repositories-to-zenodo)
- 11:10 - 11:15 Break/buffer
**Day 5 - tentative (March 30, Wednesday)**
* 08:50 - 09:00 Soft start and icebreaker question
* 09:00 - 10:45 [Jupyter](https://coderefinery.org/jupyter/) (Thor, Johan)
- 09:00 - 09:10 [Jupyter notebooks](https://coderefinery.org/jupyter/motivation/) (Johan)
- 09:10 - 09:25 [JupyterLab and notebook interface](https://coderefinery.org/jupyter/interface/) (Johan)
- 09:25 - 09:45 [A first computational notebook](https://coderefinery.org/jupyter/first-notebook/) (Johan)
discussion (5 min) and [breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/first-notebook/#exercise)
- 09:45 - 10:00 Notebooks and version control (Thor)
- demo, 10-15 min
- 10:00 - 10:10 Break
- 10:10 - 10:30 Sharing notebooks (Thor)
- Binder [Breakout room exercise (15 min)](https://coderefinery.github.io/jupyter/sharing/#sharing-dynamic-notebooks-on-binder)
- 10:30 - 10:40 Wrap-up
- 10:40 - 10:45 Break/buffer
* 10:45 - 12:30 Documentation (Jarno, Samantha)
- 10:45 - 11:00 Motivation and tools (Samantha)
- create a wishlist in HackMD
- 11:00 - 11:30 Writing good README files (Jarno)
- (mention in Tuesday after course email to get familiar with README exercises)
- 15 minutes for exercises, choosing either 1, 2 or 3 (or do multiple of time allows)
- Check that you have Sphinx before break
- 11:30 - 11:40 BREAK
- 11:40 - 12:10 Sphinx and markdown (Samantha)
- look at Lesson source (briefly)
- Exercise 1 as type along (10min)
- Exercise 2 in groups (20 min), Exercise -3 as optional if time allows
- 12:10 - 12:25 Deploying (Jarno)
- Exercise 1 as demo
- 12:25 - 12:30 Summary (Samantha)
**Day 6 (March 31, Thursday)**
* 9:00 - 10:45 Software testing (Luca, Johan)
- 9:00-9:05 Short info about today's breakout rooms and possible questions from yesterday
- 9:05-9:10 [Motivation](https://coderefinery.github.io/testing/motivation/) Johan
- 9:10-9:20 [Concepts](https://coderefinery.github.io/testing/concepts/) Johan
- 9:20-9:45 [Testing locally](https://coderefinery.github.io/testing/pytest/) Luca
- 15 minute breakout session, normal rooms
- 9:45-9:55 Break
- 9:55-10:20 [Automated testing](https://coderefinery.github.io/testing/continuous-integration/)
- type-along session Johan live codes, Luca comments and asks questions and DJs comments from hackmd
- 10:20-10:45 [Test design](https://coderefinery.github.io/testing/test-design/)
- main room: Luca live codes, Johan comments and asks questions and DJs comments from hackmd
- live demo in Julia (emphasis that the session is not about a specific language but about test design strategy)
- 10:45-11:00 Break
* 11:00 - 12:15 Modular code development ()
* break around 11:40, at a good breakpoint
* all as demo in main room
* 12:15 - 12:30 Summary and where to go from here
Exercises planning (possibly outdated): https://hackmd.io/@coderefinery/CR_May21_Exercises
Contents can be migrated to here also from the May 2021 workshop coordination note: https://hackmd.io/l7VDOAyESLuOABRDVLQsvA?both
## Exercise groups
Link to here: https://hackmd.io/@coderefinery/2022-march-planning#Exercise-groups
groups that need an exercise lead today:
- team-3: Pedro (1-3) (missing EL days 4-6)
- seems empty
- DigiEco-VTT: Luca (1-2) Sabry (3-5) (missing EL day 6)
- Radovan there
groups without EL:
- SINTEF
- was empty on Tue
- BloodCounts!
- RB was there and going well
- ntnu-2
- was empty on Tue
- xtra-room-...
- all empty
groups that have an exercise lead:
- Potatisgratäng: Ingrid
- WindTUD: Manuel
- Lund-KI: Juan Sebastian
- AAU_plan: Agneta
- bio-microcnb: Toby (1-3) Diana (4-6)
- bio-uib: Niharika (1-2) Dhanya (3-6)
- chem-UiBKvant: Marco
- CiTG: Lora
- Code-heirs: Heather
- GU-team: Romain
- ntnu-1: Bjørn
- sdu-dtu-itu: Stephan
- team-1: Thor (1) Thomas (2-4) (needs EL days 5 and 6)
- team-2: Björn
- the refiners: Jose
- TUD_DCC_ALEKS: Aleksandra
- TUDelft04: Susan
- tudelftdcc: Niket
- tudelft-maurits: Maurits
groups working on their own or working in-person:
- SSCRG-Abel: Abel
- SSCRG-Inigo: Inigo
- Otaniemi: Enrico and Jarno
- Marbhl