# 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.