Core CodeRefinery lessons
These are the lessons which are included in the "standard" CodeRefinery
workshop, and what we believe that every computational scientist (even those
with very small amounts of computation) should know. But there is more: Also
see all of our online lessons.
Introduction to version control (day 1-2):
This lesson brings you from zero to using Git and GitHub for own projects.
Collaborative distributed version control (day 3):
This lesson builds on "Introduction to version control" and we apply branching and learn about pull requests
(merge requests), forks, and collaboration using Git and GitHub.
Reproducible research (day 4):
We focus here on 3 aspects of reproducible programs and computations: documenting dependencies,
environments, and computational steps in a reproducible way. We touch on containers.
Social coding and open software (day 4):
We motivate and give an overview over software and data licensing and software citation best practices.
Documentation (day 5):
Here we give an overview of the different ways how a code project can be documented: from small projects to larger projects.
Markdown and Sphinx are central tools in this lesson.
Jupyter notebooks (day 5):
This lesson gives an overview of what Jupyter notebooks are, when they can be
particularly useful, and shows best practices for reusable and reproducible
Automated testing (day 6):
In this lesson we talk about motivation for testing, about test design, but
also about some tools that are typically used for automated testing of
Modular code development type-along (day 6):
The focus of this lesson is how to partition and organize projects as they
grow from one screen-full to larger and how to make code portions reusable
across projects and across notebooks.
Want to study this material yourself? No problem! The CodeRefinery
teaching style tries to make this accessible to you. All the
lessons above are designed to be self-sufficient for self-study. We
also have video recordings and archived "parallel chat Q&A" (which can
go into other both basic and advanced questions) which may
optionally be useful for other teaching styles.
The following are the video recordings + parallel chat of the 2022
For self-study purposes, you may need the installation
that you may want to see what is necessary for each lesson, before
going and installing everything there.
Support in self-study is very important. There are several
- Most of the tools in these lessons are pretty standard. Ask your
friends and colleagues for help - you will probably both learn
- You may get local support from our partner
organizations if you are in their community.
- There is a #help stream in CodeRefinery
chat where we welcome
general questions and provide support on a best-effort basis.