Software Development for Environmental Scientists

Software engineering is a large and complex discipline and so this short course will focus on the most important and relevant elements for scientists, crucial among 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
6, 7, 13 and 14 February 2020

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 can be found here.

Level 2
Postponed due to the coronavirus crisis.  Will reschedule for Autumn 2020.

Scenario Students: see the Software Development Forum on the Scenario Team for support in the meantime.

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.

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 will be supplied later.

Feedback form for both courses here.

 

 

Login to Twitter to see feed.