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
-
You need to be competent in at least one programming language, including concepts like variables, control flow, and functions. This could be through a formal course, a shorter workshop like Software Carpentry, or previous experiences.
- You need to be familiar with the basics of Git and GitHub. A good resource for attendees who are not familiar with Git and GitHub -
- First 8 chapters of Version Control with Git by Software Carpentry
- You need to be familiar with the foundational libraries of PyData and Scientific Python ecosystem. A good resource for attendees who are not familiar with the Scientific Python ecosystem -
If curious, one can also go through the remaining of the 1.3. NumPy: creating and manipulating numerical data section and 1.5. SciPy: high-level scientific computing.
- You are required to bring your own laptop. We have also provided setup instructions for you to install the software needed for the course on your computer.
Registration
TODO
Synopsis
Day 1: Version Control
|
Day 2: Research Data and Design Patterns in Python
|
Day 3: Testing and Code Smell
|
Day 4: Packaging and Documenting Software Projects
|
Day 5: Programming for Speed
|
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.