Modern Programming Practices¶
Learning outcomes:¶
On successful completion of this module, students will be able to:
Produce software for sustainable and reproducible research.
Carry out test-driven software development and continuous integration.
Develop software using a version control system.
Create software using the Python programming language.
Description of contents:¶
The module will include cover the following topics:
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.
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.
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.
Supplementary/recommended reading:¶
A Primer on Scientific Programming with Python, by Hans Petter Langtangen
Algorithms, by Robert Sedgewick and Kevin Wayne
Bits and bugs, by Thomas Huckle and Tobias Neckel
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 |