XClose

Research Software Engineering Summer School

Home
Menu

Introduction

In this summer school, you will move beyond programming, to learn how to construct reliable, readable, efficient research software in a collaborative environment. The emphasis is on practical techniques, tips, and technologies to effectively build and maintain complex code. This is an intensive and a practical summer school.

Pre-requisites

Registration

TODO

Synopsis

Day 1: Version Control

  • Branching
  • Rebasing and Merging
  • Debugging with GitBisect
  • Forks, Pull Requests and the GitHub Flow
  • Virtual Environments

Day 2: Research Data and Design Patterns in Python

  • Working with files on the disk
  • Interacting with the internet
  • JSON and YAML
  • Other Scientific Data Formats
  • Refactoring
  • Static Typing
  • Data Classes and Validation
  • Object Orientation
  • Design Patterns

Day 3: Testing and Code Smell

  • Why test?
  • Unit testing and regression testing
  • Negative testing
  • Advanced Testing Techniques
  • Debugging
  • Continuous Integration
  • Coding conventions

Day 4: Packaging and Documenting Software Projects

  • Turning your code into a package
  • Releasing code
  • Documentation

Day 5: Programming for Speed

  • Optimisation
  • Profiling
  • Scaling laws
  • NumPy
  • Miscellaneous libraries
  • Cython

Exercises

Examples and exercises for this course will be provided in Python. Python will not be introduced during this course, and we will assume you can already program in Python. That means that you may find supplementary python content useful.

Versions

You can find the course notes as HTML via the navigation bar to the left.