ReSC : Training Courses : UoR, Dept Of Meteorology

Training Courses

Software Development for Environmental Scientists

Software engineering is a large and complex discipline and so this NERC short course will focus on the most important and relevant elements for scientists, crucial amongst which are usability, maintainability, accuracy, and readability. These are the foundations of professional code development skills.  We will teach and demonstrate the benefits of good initial design, thorough testing, algorithm re-use and code progression, the ideas of elegance, abstraction, performance and scalability.

There are two levels available with the caveat that applicants for the second level must demonstrate competence at the first level.

Level 1

1st/2nd & 8th/9th Feb 2018

(0930 - 1700 daily, except 2nd Feb when we start at 1100)

Harry Pitt: HP175 (1/2 Feb), Met GU10 (8/9 Feb)

14 fully funded places supported by

First level topics will include:

  • revision of fundamentals (shells, syntax, concepts etc.)
  • basic design methodologies
  • simple data structures
  • version control
  • unit and integration testing
  • basic diagramming
  • commenting and coding standards
  • requirements capture
  • error handling and basic debugging

Course Instructions are here.


************************** Course feedback is here *****************************


Level 2

next course dates coming soon

~12 fully funded places, competence at Level 1 tasks a pre-requisite but attendance of previous course not required.

It will be assumed that you are fully conversant with using PyCharm as a development environment, and familiar with writing and running Python's 'nosetests' test framework. You should also be competent using 'git' version control.

Second level topics will include:

  • team version control & GitHub
  • the OO paradigm: analysis, design and implementation
  • design patterns and advanced design methodologies
  • exception handling and exception classes
  • testing strategies, testing classes
  • debugging with classes
Additional material provided on:

  • XML and JSON
  • software process
  • MPI

Course Instructions are here.


The topics will be taught using widely employed industry standard techniques such as Jackson structured programming; Unified Modelling Language activity, data, class and sequence diagrams; functional and object oriented design patterns. The course will be language neutral as far as practicable but will use Python for examples as necessary, and CF-netCDF data. The theme of robust re-usable scientific code will be highlighted through the practical application of all the topics in exercises and an environmental science software project. The participants will also write modules for data processing and visualisation which they will be able to adapt for their own research. We will teach and demonstrate the benefits of good initial design, thorough testing, algorithm re-use and code progression, the ideas of elegance, abstraction, performance and scalability.

The courses are aimed principally at PhD students and early career scientists, but all applications will be considered.

Course instructor: Jane Lewis has an MSc in Computing Science from Imperial College, London and has worked in software and systems engineering in the telecomms and defence industry sectors, gaining experience in system design & architecture, documentation, code & testing, team and engineering management, and latterly with a strong emphasis on quality process improvement whilst running the technical team delivering an urgent complex defence project. After a short break in 2011/12 to do an MSc in meteorology at Reading University, Jane now works at ReSC in the role of deputy technical director which requires the application of engineering skills to the software work packages in research projects undertaken in the department, and where she is able to combine industrial experience in mapping systems and in the software delivery process with meteorological subjects such as environmental and climate data.

LinkedIn: janetrishlewis