RISE Software Bootcamp
[!NOTE]
- Online via Zoom
- Dates: November 6-10 and 13-17
- Time: 10:00-12:00 and 13:00-15:00 every day
Target audience
The RISE Software Development Bootcamp is a practical training program meant for both new and experienced RISE team members. It's meant to help newcomers understand programming and good software practices, and for our seasoned researchers to gain new skills to solve new types of problems.
The bootcamp covers several topics: we start with the basics of the Unix shell and move on to beginner and intermediate programming in Python or Julia (in parallel tracks). We also teach how to use Git for version control, especially when working with a team. We moreover focus on good practices in software testing, writing documentation, developing modular code, and understanding licensing. These skills will help you make software that's easy to maintain, reuse, and share - what we call FAIR software.
Our bootcamp offers a welcoming and useful environment for learning many necessary practical skills that are typically not taught in university education. We're looking forward to having you with us!
Prerequisites
- You should be prepared to install software on your own laptop and bring it to the bootcamp - see below.
- Some previous experience with programming is advantageous but not mandatory - the first day is devoted to introductory topics.
Before the bootcamp
Before attending the bootcamp, please follow carefully the installation instructions below (click the arrow) to make sure that all tools and packages that will be needed during the bootcamp are installed correctly on your computer.
Installation instructions
You will need the following tools installed on the computer you will use during the bootcamp. Please go through this list carefully and make
sure to install everything that you don't already have installed. The links take you to external installation instructions for different operating systems.
- Shell and Git - [instructions](https://coderefinery.github.io/installation/shell-and-git/)
- A GitHub account - [instructions](https://coderefinery.github.io/installation/github/)
- SSH connection to GitHub - [instructions](https://coderefinery.github.io/installation/ssh/)
- A text editor - [instructions](https://coderefinery.github.io/installation/editors/)
- **Sublime Text** is also a good text-based code editor to use for Win, Linux, and Mac OS - [instruction](https://www.sublimetext.com/download)
- Python via one of two ways:
- through the Anaconda distribution - [instructions](https://carpentries.github.io/workshop-template/install_instructions/#python-1)
- or if you already have a Python installation and the `conda` package manager on your computer, make sure to install the required packages listed in the following yaml file by saving it to a file `env.yml` and then run `conda env create -f env.yml`:
```yaml
name: bootcamp
channels:
- conda-forge
- defaults
- bioconda
dependencies:
- python>3.9
- click
- ipywidgets
- jupyterlab
- jupyterlab-git
- matplotlib
- myst-parser
- nbdime
- numpy
- pandas
- pytest
- pytest-cov
- snakemake-minimal
- sphinx
- sphinx-autobuild
- sphinx_rtd_theme
- jsonlines
- notebook
- requests
- seaborn
- setuptools
- twine
- poetry
- flit
```
Learning objectives
By attending this bootcamp, you will:
- Gain confidence in developing software and using modern tools for collaborative software engineering.
- Become comfortable with working in the Unix terminal.
- Understand how Git enables transformative workflows for collaborative software development.
- Understand the importance of good software development practices such as testing, documentation and dependency management.
- Reflect on how FAIR principles can be applied to software.
- Know which factors contribute to reproducible and reusable software.
- Obtain hands-on experience in using modern software development tools and practices.
- Know where to go next to further develop your skills.
After attending the bootcamp and completing all hands-on exercises, you will be well equipped to contribute to programming tasks in your projects at RISE.
Course leaders
- Anastasiia Andriievska
- Martin Simonsson
- Yonglei Wang
- Thor Wikfeldt
Schedule
Day 1 - Unix and Python introduction
- 10:00-10:30 Welcome and general introduction (Everyone)
- 10:30-12:00 Unix basics
- 13:00-15:00 Python intro
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
Day 3 - Python intermediate
- 10:00-10:15 Recap of what we learned yesterday
- 10:15-12:00 Python intermediate
- 13:00-15:00 Python intermediate
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:
- 13:00-15:00 Intermediate Unix
Day 5 - HPC and Cloud
- 10:00-12:00 High performance computing
- 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
- 13:00-15:00
Day 7 - Introductory and intermediate Git
- 10:00-12:00 Git introduction
- 13:00-15:00 Git intermediate
Day 8 - Intermediate Git, Jupyter, Reproducibility
- 10:00-12:00 Git intermediate
- 13:00-15:00 Jupyter and Reproducibility
Day 9 - Reproducibility and Documentation
- 10:00-12:00 Reproducibility
- 13:00-15:00 Documentation
Day 10 - Testing and Modular code development
- 10:00-12:00 Software testing
- 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.