# RISE bootcamp planning
Event description: https://hackmd.io/@enccs/RISE-software-bootcamp
Notes from training hackathon: https://hackmd.io/NjDCsuJGTTeyXLFWC7InOg#2.-RISE-Software-Bootcamp
Bootcamp main page with links to material: https://github.com/ENCCS/software-bootcamp/
## Plan (as of 15/10)
- Everyone should prepare their parts in detail before October 31
- create playbook for your sessions
- which parts to cover and which to skip
- which parts are type-along, which are demos, which are traditional lecturing (no live code)
- which exercises to do and how: individually in main room or in breakout rooms, how long
- Meeting 31/10 at 13-14:30?
- We don't all four need to attend at all times but should be at least 3
- Remember to really monitor hackMD and answer questions quickly
- Prepare yourself by going through the instructor training material: https://enccs.github.io/instructor-training/
## Meeting 18 Sept 2023
- contact Isabelle and ask how to include ICE
- use LUMI for demo-ing only
- RISE-GitLab
- try to find topics in the schedule where we can tell participants to use chatGPT or Bing to solve an exercise - showing how one can prompt the AI to help with programming tasks
- ~~add links to week 2~~
---
## Meeting 8 Sept 2023
- Survey results
- Split over two weeks with online half days
- Discuss content
- Learner personas, ILOs, backwards design
- How to unify all material
### Notes
Levels:
- 30% novice
- 50% intermediate
- 20% advanced
Include:
- short on containers - CR lesson enough
- python
-
Omit:
- parallelisation
- kubernetes
- XaaS
**We should point to good existing resources wherever possible**
- include links
**We fork all existing lesson material that we reuse**
- and set up repository with readme file that covers the whole bootcamp
### Resources
- https://aaltoscicomp.github.io/python-for-scicomp/
- CR lessons: https://coderefinery.org/lessons/core/
- https://github.com/ENCCS/software-bootcamp
### Schedule
~~3 hours each day, 9-12:30 or 13-16:00~~
4 hours each day: 10-12:00, 13-15:00
Day 1 - Unix and Python intro
- 2h Unix basics
- 2h Python intro
Day 2 - Python intermediate
- 1h basics
- variables, functions, loops
- 2h intermediate
- jupyter (parts of the CR lesson)
Day 3 - Python intermediate
- 2h Numpy and Pandas
- 2h
Day 4 - Python intermediate
Day 5 - Unix intermediate
- 2h intermediate (scripting)
- 2h HPC intro
RISE VD will visit the Luleå office, so Martin will not be available on the 10th of November
Day 6 - Git intro
- 4h git-intro
Day 7 - Git intro and intermediate
- 2h git-intro
- 2h social coding
Day 8 - Git intermediate
- 4h git-intermediate
Day 9 -
- 2h Reproducible research
- 2h Documentation
Day 10
- 2h Testing
- 2h Modular code development
# Scheduele
Day 1 - Unix and Python introduction
10:00-10:30 Welcome and general introduction (Everyone)
10:30-12:00 Unix basics
10:30-10:35 Introducing the Shell (AA and TW)
10:35-11:10 Navigating Files and Directories (AA and TW)
11:10-11:40 Working With Files and Directories (AA and TW)
11:40-12:00 Where to go from here: pipes, filters, loops, shell scripts, finding things.
13:00-15:00 Python intro
13:00-13:30 Writing Python in Jupyter (AA and YW)
13:30-14:00 Writing Python in VSCode (AA and YW)
14:00-14:30 Basic introduction to Python (YW and AA)
14:30-15:00 Python scripts (YW and AA)
Day 2 - Python intermediate
10:00-10:10 Recap of what we learned yesterday
10:10-12:00 Python intermediate
10:10-11:00 Numpy (MS and YW)
11:00-12:00 Pandas (MS and YW)
13:00-15:00 Python intermediate
13:00-13:50 Visualisation with Matplotlib (YW and MS)
13:50-14:20 Data formats with Numpy and Pandas (YW and MS)
14:20-14:50 Web APIs with Python (AA and TW)
14:50-15:00 Where to go from here: advanced Numpy
Day 3 - Python intermediate
10:00-10:15 Recap of what we learned yesterday
10:15-12:00 Python intermediate
10:15-10:30 Scipy (MS and)
10:30-11:00 Library ecosystem (MS and)
13:00-15:00 Python intermediate
13:00-13:30 Parallel programming (TW and YW)
13:30-14:00 Dependency management (AA and TW)
14:00-14:50 Packaging (AA and TW)
14:50-15:00 Where to go from here: Accelerating Python, porting to GPUs.
Day 4 - Python intermediate, more Unix, and HPC
10:00-11:00 Buffer time, Q&A session and discussions.
11:00-12:00 Unix intermediate:
11:00-11:35 Pipes and filters (AA and TW)
11:35-12:00 Loops (AA and TW)
13:00-15:00 Intermediate Unix
13:00-13:25 Loops contd. (AA and TW)
13:25-14:10 Shell scripts (YW and AA)
14:10-14:50 Finding things (YW and AA)
14:50-15:00 Where to go from here: awk etc.
Day 5 - HPC and Cloud
10:00-12:00 High performance computing
10:00-10:20 Why use a cluster? (YW and TW)
10:20-10:55 Connecting to a remote HPC system - using LUMI (YW and TW)
10:55-11:20 Exploring Remote Resources (YW and AA)
11:20-11:50 Scheduler fundamentals - Interactive SLURM playground (TW and AA)
11:50-12:00 Where to go from here: Getting EuroHPC access via ENCCS, Module systems, Running parallel jobs, Transferring files to remote computers (TW)
13:00-15:00 Cloud
13:00-15:00 ICE data center (Johan Kristiansson)
Day 6 - Introduction to Git
10:00-12:00 Git introduction
10:00-10:15 Motivation (AA and MS)
10:15-11:10 Basics (AA and MS)
11:10-12:00 Branching and merging (MS and AA)
13:00-15:00
13:00-13:30 Conflict resolution (MS and TW)
13:30-14:00 Sharing repositories online (TW and MS)
14:00-14:45 Inspecting history (TW and AA)
14:45-15:00 How much Git is necessary? (TW and AA)
Day 7 - Introductory and intermediate Git
10:00-12:00 Git introduction
10:00-10:10 What to avoid (YW and AA)
10:10-10:30 Using the Git staging area (YW and AA)
10:30-11:00 Where to go from here: Undoing and recovering, Interupted work, Aliases and configuration, Git under the hood (AA and YW)
11:00-12:00 Social coding and open software (MS and YW)
13:00-15:00 Git intermediate
13:00-13:15 Concepts around collaboration (TW and MS)
13:15-14:15 Centralised workflow (TW and MS)
14:10-15:00 Distributed version control and forking workflow I (TW and MS)
Day 8 - Intermediate Git, Jupyter, Reproducibility
10:00-12:00 Git intermediate
10:00-10:30 Distributed version control and forking workflow II (TW and YW)
10:30-11:00 How to contribute changes to somebody else’s project (TW and YW)
11:00-12:00 Buffer time, Q&A session, discussions and where to go from here: Git cheatsheet.
13:00-15:00 Jupyter and Reproducibility
13:00-13:20 Notebooks and version control (AA and TW)
13:20-13:50 Sharing notebooks (AA and TW)
13:50-14:00 Reproducible research - Motivation (TW)
14:00-14:10 Organising your projects (AA and TW)
14:10-14:40 Recording computational steps (AA and TW)
14:40-15:00 Buffer time, Q&A session and discussions.
Day 9 - Reproducibility and Documentation
10:00-12:00 Reproducibility
10:00-10:30 Recording dependencies (TW and AA)
10:30-11:00 Recording environments - containers (TW and AA)
11:00-11:30 Q&A, where to go from here: More on containers.
11:30-11:45 Documentation - motivation and wish list (TW and AA)
11:45-12:00 Documentation - Popular tools and solutions (TW and AA)
13:00-15:00 Documentation
13:00-13:20 In-code documentation (TW and AA)
13:20-13:50 Writing good README files (TW and AA)
13:50-14:20 Sphinx and Markdown (TW and AA)
14:20-14:50 Deploying Sphinx documentation to GitHub Pages (TW and AA)
14:50-15:00 Where to go from here: Hosting websites/homepages on GitHub Pages
Day 10 - Testing and Modular code development
10:00-12:00 Software testing
10:00-10:15 Motivation (TW and MS)
10:15-10:40 Testing locally (TW and MS)
10:40-11:10 Automated testing (TW and MS)
11:10-11:40 Test design (TW and MS)
11:40-11:50 Conclusions and recommendations (TW and MS)
11:50-12:00 Where to go from here: full-cycle collaborative workflow
13:00-15:00 Modular code development and wrap-up
13:00-14:00 Slides or Type-along (TW and MS)
14:00-15:00 Q&A, discussion, final words.