Intermediate Research Software Development Skills In Python (NERC Focus)

Room 6.212 University Place, University of Manchester (Hybrid)

27 - 31 March 2023

9:30 - 16:30 BST (UTC + 1)

Instructors: Doug Lowe

Helpers: Anja Le Blanc, Aman Goel, Aleksandra Nenadic, Emma Simpson, Scott Archer-Nicholls

General Information

This course aims to teach a core set of established, intermediate-level software development skills and best practices for working as part of a team in a research environment using Python as an example programming language. It focusses on researchers from the Natural Environment Research Council (NERC) domain as it uses the dataset from the river catchment study project but is general enough to be attended by participants without this specialism.

Where: For in person participants: Room 6.212 University Place, 176 Oxford Rd, Manchester M13 9PL (get directions with OpenStreetMap or Google Maps). Participants joining online will receive separate joining instructions via email.

When: 27 - 31 March 2023. Add to your Google Calendar.

Requirements: Participants must bring a laptop with a Mac, Linux, or Windows operating system (not a tablet, Chromebook, etc.) that they have administrative privileges on. They should have a few specific software packages installed (listed at the setup page).

Accessibility: We are committed to making this workshop accessible to everybody. The teaching room is wheelchair accessible and accessible restrooms are available.

Code of Conduct: Everyone who participates in the workshop is required to conform to the Code of Conduct. Please get in touch with the workshop contact in case of any incidents.

Contact: Please email anja.leblanc@manchester.ac.uk for more information.


Setup

You will need the following software installed and working correctly on your system to be able to follow the course.

If you are attending remotely, please make sure you also have the Zoom video conferencing tool installed.


Course Material

Course material is available online.


Schedule

The schedule below is approximate and subject to change.

Mon 27th

09:30 Introductions and Setup
10:30 Morning break
11:00 Project Introduction and Virtual Environments (1.1, 1.2)
12:30 Lunch break
13:30 Integrated Software Development Environments and Git (1.3, 1.4)
14:30 Afternoon break
15:00 Python Coding Conventions and Linters (1.5, 1.6)
16:30 END

Tue 28th

09:30 Software Requirements (3.1)
10:30 Morning break
11:00 Managing a Collaborative Software Project (5.1)
12:30 Lunch break
13:30 Automatic Testing, and Scaling up Unit Tests (2.1, 2.2)
14:30 Afternoon break
15:00 Continuous Integration for Testing, and Diagnosing Issues (2.3, 2.4)
16:30 END

Wed 29th

09:30 Software Architecture and Design (3.2)
10:30 Morning break
11:00 Programming Paradigms, and Functional Programming (3.3, 3.4)
12:30 Lunch break
13:30 Object Orientated Programming (3.5)
14:30 Afternoon break
15:00 Software Architecture Revisited (3.6)
15:30 Course Project Planning
16:30 END

Thur 30th

09:30 Developing Software in a Team (4.1)
10:30 Morning break
11:00 Code Review (4.1)
12:30 Lunch break
13:30 Preparing Software for reuse and release (4.2)
14:30 Afternoon break
15:00 Packaging Code (4.3)
15:30 Personal Project Time
16:30 END

Fri 31st

09:30 Assessing Software Suitability (5.2)
10:30 Morning break
11:00 Feedback and Software Improvement (5.3)
12:30 Lunch break
13:30 Personal Project Time
14:30 Afternoon break
15:00 Personal Project Time
16:30 END