​​​Principles of Software Engineering for Applied Mathematical Sciences (SEAMS) 


29 July - 2 August

Register here.

Target audience 

The course is suitable for postgraduate students, staff and professionals who have actively programmed on a scientific project and have a current project they are seeking to improve. It is assumed that course participants are familiar with general quantitative scientific practice and at least one programming language, and routinely use those skills in their daily work. No particular scientific field or programming language is required. 


Participants will understand software engineering perspectives and apply these to their project work. They should leave with a plan for future development. 

Expected outcomes 

Participants will acquire the skills to: 

  • Think about the overall architecture of scientific programming workflows, and make design choices that improve scientific output reproduce-ability, maintainability, and flexibility 
  • Apply foundational software engineering principles for requirements elicitation, software architecture design and quality assurance. 
  • Use various software engineering tools--e.g. version control, automated testing--to improve their productivity, work quality, and ability to collaborate 
  • Evaluate the benefits and costs of re-using existing libraries, and make their code usable by other scientists 
  • Evaluate the data component of a scientific project, and make informed choices about input and output products and formats for that work 
  • Think about parallelization and how a scientific project might best leverage high performance computing resources 

Course format 

The course is divided into five topics, with a day devoted to each. Each day begins with an interactive discussion with the faculty, followed by a structured practical exercise to emphasize the concepts covered in that discussion. Then participants receive a series tasks associated with the topic to apply to their personal projects, with feedback from faculty provided on the results. 


Carl Pearson is a research fellow at the London School of Hygiene & Tropical Medicine with over a decade of experience in applied scientific software development. Ina Schaefer is full professor and head of the Institute of Software Engineering and Automotive Informatics at Technische Universität Braunschweig, Germany with almost a decade experience in teaching software engineering, software architecture and software quality assurance in industrial and academic contexts.  The teaching assistants for the workshop are active junior scientists and past SEAMS workshop participants.