Modern Programming Practices

Learning outcomes:

On successful completion of this module, students will be able to:

  1. Produce software for sustainable and reproducible research.

  2. Carry out test-driven software development and continuous integration.

  3. Develop software using a version control system.

  4. Create software using the Python programming language.

Description of contents:

The module will include cover the following topics:

  1. Software version control: This is necessary to maintain a detailed record of software as it is developed, including how to work collaboratively. While the skills are portable across many software version control systems, this modules will use git with GitHub.

  2. Test driven development and continuous integration: Software development is planned around the tests that can be written to ensure correctness, while software version control is integrated with automated testing to monitor software health on a continuous basis.

  3. Students will be taught how to program in Python and how to use a range of Python modules to perform compute-intensive and data-intensive tasks.

Lecture schedule

Date

Lecture

Instructor

Moderator

2020-10-12 9:00-12:00 Mon

Python development

J. Percival

G. Gorman

2020-10-13 9:00-12:00 Tue

Scipy, Sympy, etc.

G. Gorman

R. Nelson

2020-10-14 9:00-12:00 Wed

Environments

R. Nelson

J. Percival

2020-10-15 9:00-12:00 Thu

Software Testing

J. Percival

R. Nelson

2020-10-16 16:00 Fri

Assessment One

2020-10-19 9:00-12:00 Mon

The Cloud & Azure I

J. Percival

G. Gorman

2020-10-20 9:00-12:00 Tue

The Cloud & Azure II

J. Percival

R. Nelson

2020-10-21 9:00-12:00 Wed

Continuous Integration & Delivery

R. Nelson

J. Percival

2020-10-22 9:00-12:00 Thu

Pandas - Python Data Processing

Ruairi Dunne (guest lecturer from BP)

J. Percival

2020-10-23 16:00 Fri

Assessment Two

2020-10-26 9:00-12:00 Mon

Floating Point Representation

N. Kukreja

J. Percival

2020-10-27 9:00-12:00 Tue

Debugging

R. Nelson

J. Percival

2020-10-28 9:00-12:00 Wed

Code Optimization & Profiling

N. Kukreja

J. Percival

2020-10-29 9:00-12:00 Thu

Parallel Processing in Python & Dask

J. Percival

N. Kukreja

2020-10-30 16:00 Fri

Assessment Three

Assessment exercises

Assessment will be 100% by coursework. Exercises will be distributed and submitted via GitHub

Release Date

Due Date

Topic

2020-10-14 Wed

2020-10-16 16:00 Fri

Python modules & Testing

2020-10-22 Thu

2020-10-23 16:00 Fri

Pandas/Azure

2020-10-28 Wed

2020-10-30 16:00 Fri

Debugging/ CI