General information¶

This repository contains the information related to a train-the-trainer session running in Delft University of Technology on the 24th and 25th of June. We merely adjusted the content of the workshop proposed by Barbara Vreede, from the University of Utrecht. Many thanks to her and her team for this material.

Best Practices for Writing Reproducible Code¶

If you are looking at a GitHub README, please note that the slides are best viewed via GitHub pages.

A gitbook is under development as well: [check it out]https://nzr.github.io/workshop-computational-reproducibility/docs/index.html)!

Ensuring your research is reproducible can be a difficult task. Scripting your analysis is a start, but this in and of itself is no guarantee that you, or someone else, can faithfully repeat your work at a later stage. In this workshop, we will help you not only to make your work reproducible, but also to increase the efficiency of your workflow. We do this by teaching you a few good programming habits: how to set up a good project structure, how to code and comment well, and how to document your code so that it can be used by others. We will furthermore introduce you to Git and GitHub, which are essential tools in managing and publishing code. Reproducibility requires extra effort, but we will focus on teaching you skills that will save you much more time in the long run than they cost to implement.

Preparation¶

If you are attending this workshop, you can prepare a few things so we can hit the ground running! We have more details on this page

Schedule¶

Note on the breakout rooms - we will decide the composition of the group based on your choice of code to bring (or borrow from our teachers).

Day 1¶

Time

Activity

12:00

Last minute setup/environment fix for those who didn’t manage to install everything.

13:00

Welcome & introduction (slides) (Connie)

13:15

Questions on: Project setup (link)(Heather)

13:30

(breakout) Excerise on Project setup (Heather - Eirini)

13:45

Questions on Version control with Git (link)

14:00

(breakout) Exercise on version control (Heather - Nicolas)

14:15

Questions on Publication and Licensing (link) (Santosh)

14:30

Break!

14:45

Answering questions on Code Readability (link) (Nicolas)

14:55

(breakout) Exercise on Readability (Nicolas - )

15:15

Answering questions on Reusability (link) (Nicolas)

15:25

(breakout) Exercise on Readability (Nicolas - )

15:45

Break!

16.00

Answering qustions on Robustness (link) (Nicolas)

16.15

Demonstration: Robustness (Nicolas - )

16.35

Q&A - General discussion

16:45

End

Day 2¶

Time

Activity

13:00

Day 1 review, and Q&A Time

13:10

Answering questions on Comments and Docstring (link) (Eirini)

13:25

(breakout) Exercise on comments/docstrings (Eirini - Nicolas)

13:45

Answering questions on README (link) (Eirini)

13.55

(breakout) Exercise README (Eirini - )

14.15

Break!

14:30

Answering questions about dependencies (link) (Heather)

14:45

(breakout) Exercise on Dependencies (Heather - Nicolas)

15:00

Answering questions on Binder (link) (Eirini)

15:15

Answering questions on Video Archiving (link) (Santosh)

15:30

Break!

15.45

Big final exercise (link)

16.30

Q&A - discussion

17.00

End

Course materials (for reference, these are also linked in the schedule above!)¶

Slides¶

  1. Introduction

  2. Project setup and version control

  3. Code quality

  4. Project documentation

  5. Accessibility & Reproducibility

Exercises¶

  1. Project setup & version control with git

  2. Code quality

  3. Project documentation

  4. Accessibility & reproducibility

License¶

All workshop material is licensed under a Creative Commons Attribution 4.0 International License. View the license here.

History and acknowledgements¶

This course was developed at Utrecht University, supported by the Open Science Community Utrecht (OSCU) and Research Data Management (RDM) support.

Workshop development is being coordinated by Neha Moopen, and the course received contributions from (in alphabetical order): Armel Lefebvre | Barbara Vreede | Bianca Kramer | Cedric Thieulot | Erik van Sebille | Jeroen Bosman | Jeroen Ooms | Jonathan de Bruin | Lukas van de Wiel | Mateusz Kuzak | Menno Fraters | Philippe Delandmeter | Renato Alves