+++ title = "Core CodeRefinery lessons" description = "These are the ones we teach during our standard workshops and include good self-study possibilities. You probably want to start here." +++ 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](@/lessons/from-coderefinery.md). - [Introduction to version control](https://coderefinery.github.io/git-intro/) (day 1-2): This lesson brings you from zero to using Git and GitHub for own projects. - [Collaborative distributed version control](https://coderefinery.github.io/git-collaborative/) (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](https://coderefinery.github.io/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](https://coderefinery.github.io/social-coding/) (day 4): We motivate and give an overview over software and data licensing and software citation best practices. - [Documentation](https://coderefinery.github.io/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](https://coderefinery.github.io/jupyter/) (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 notebooks. - [Automated testing](https://coderefinery.github.io/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 software. - [Modular code development type-along](https://coderefinery.github.io/modular-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. ## Self-study workshop 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 September workshop: * The lesson material is linked above, and is probably more up-to-date than the chat/playlist below. * [Parallel chat](https://coderefinery.github.io/2022-09-20-workshop/questions/) * [YouTube playlist](https://www.youtube.com/playlist?list=PLpLblYHCzJACqaFsfQiCWp0Wqy6qG4iau) For self-study purposes, you may need the [installation instructions](https://coderefinery.github.io/installation/). Note 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 options: * Most of the tools in these lessons are pretty standard. Ask your friends and colleagues for help - you will probably both learn something. * You may get local support from our [partner organizations](@/about/partners.md) if you are in their community. * There is a #help stream in [CodeRefinery chat](https://coderefinery.zulipchat.com/) where we welcome general questions and provide support on a best-effort basis. ## CodeRefinery in one hour If you want to get an impression of the topics discussed in this workshop, check out the materials of the CodeRefinery in one hour workshop: * [Exercises](https://coderefinery.github.io/research-software-engineering/) * [Slides](https://zenodo.org/records/8242055)