CodeRefinery workshop
Date
16 Nov 2020
Time
09:00 - 13:00
Location
Online
CodeRefinery workshops teach software best practices, tools and skills for efficiently developing and maintaining research software.
The key objective of a CodeRefinery workshop is to grow researchers’ software best practices skills to facilitate open and reproducible research. The workshops focus on methods to build modular, reusable, maintainable, sustainable, reproducible, testable, and robust software. It is assumed that participants already write code for their research, but no expertise is required. Some experience in navigating the file tree and editing files in a terminal session is recommended. Familiarity with Python programming basics is expected.
These workshops are usually attended by MSc and PhD students, postdocs, researchers’ and more senior staff from a wide range of scientific backgrounds and with different programming experiences.
Requirements: Participants must work on a computer with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) on which they have administrative privileges. They should have a few specific software packages installed. Please follow the videoconferencing setup guidelines.
More information about this event can be found on the workshop website.
Certification: For this workshop, upon request, we issue attendance certificates. The participation is equivalent to 2 GS or ECTS points.
Syllabus
Documentation
Different solutions for implementing and deploying code documentation.
How to build documentation with the documentation generator Sphinx (and compare it with others) and how to deploy it to Read the Docs, a service which hosts open documentation for free.
How to deploy a project website or personal homepage to GitHub Pages. The approach that we will learn will be transferable to GitLab Pages and Bitbucket Pages.
Modular code development.
What best practices can you recommend to arrive at well structured, modular code in your favourite programming language?
What would you recommend your colleague who starts in the same programming language?
How do you deal with code complexity in your projects?
Social Coding & Open Software
- Social Coding
- Licensing
- Software citation
Git Branch Design
Wat branching strategies are advisable to simplify collaboration and code maintenance.
- Rebase vs Merge
- Branch Hygiene
- Avoiding Conflicts
- Branching Models
Automated testing
Why testing needs to be part of the software development cycle and how such a cycle can be implemented.
A collaborative testing/code review workflow.