Software Engineering for Scientists & Engineers

20 Hours

In this course on the critical art of writing maintainable software, learn best practices for making quality software that can be used, referenced, and kept in working order.

Course Overview

Software Engineering for Scientists and Engineers is a short course on the art of writing maintainable software.

Software that is not written with maintenance in mind can be a source of pain for years or decades.

This course will teach you best practices, recommend good habits, and get you thinking about how to make quality software that can be used, referenced, and kept in working order long after the original author(s) have moved on.


This course requires basic proficiency with Python and the scientific Python stack. Some practical experience with standard Python, NumPy (ndarrays), and Pandas (DataFrames) are essential to working with the code and concepts presented in this course. All the examples and exercises use Python code and Python tools, even though many of the principles are useful for all languages.

If you have taken Enthought’s Python Foundations for Scientists and Engineers, you have the requisite background knowledge for this course.


Why Software Engineering? – Introduction, General Applicability
Readable Code – PEP-8, Linting, Naming, Comments
Documenting Code – Docstrings, Publishing Documentation
Refactoring– Functions, __main__(), Classes, API
Profiling & Debugging – When to Optimize, cProfile, pdb
Monitoring Execution – Command Line, Logging, Auditing
Unit Testing – unittest, Test Suites, Edge Cases
Source Control – Git, GitHub, Issues, Pull Requests
Effective Code Reviews – Mentoring New Coders, Leveraging Experience
Development Models –Agile, Waterfall


black, click, flake8, logging, pdb, profile, sphinx, unittest

Download the syllabus for this course here.

Updated December 2023