View Theme Diagram
The Bash shell is a command-line interface used in Unix-based operating systems such as Linux and macOS. This course will introduce you to the basics of using the Bash shell.
This course introduces the basics of version control using the Git version control system. We will learn how to setup Git, and use it to track changes in our code. The final modules are optional and marked "(Advanced)": newcomers can safely skip them and return once the everyday Git workflow feels comfortable.
This course introduces the basics of packaging and dependency management in Python. We introduce `venv` for virtual environments, and `pip` for package management and how to structure a modern Python package and publish it to PyPI.
CMake is a widely used, cross-platform build system generator for C++ projects. This course introduces the basics of CMake: writing CMakeLists.txt files to configure and build executables and libraries, structuring larger projects across subdirectories, finding and linking external dependencies, and using the CMake language to make builds portable and reproducible. It then moves on to presets, reproducible dependency management, testing with CTest, and installing and packaging a library so it can be reused by other projects.
This course covers how to style your Python code, and use linters to enforce a consistent style and highlight any code that can lead to commonly encountered bugs or problems.
Integrated Development Environments (IDEs) provide programmers with a complete development environment to write, edit, debug, and deploy their code. This course introduces the popular VSCode IDE, both for Python and C++ development.
This course introduces the basics of automated testing and debugging in Python, using the Pytest framework.
This course aims to introduce the use of Docker containers with the goal of using them to effect reproducible computational environments.
This course introduces the text-based workflow system Snakemake. Snakemake is a general-purpose workflow management system for any discipline.