Essential Software Engineering for Researchers: About the RSE team

About the RSE team

Your instructors are part of Imperial’s central Research Software Engineering (RSE) team, whose role is to improve the quality, impact and sustainability of research software. While most of our work is as hired coders and consultants on research projects, we also offer a number of free services, including training courses such as this one and one-to-one code surgeries, where you can get advice and support with software development.

You can find more information about our work and the services we offer on our website.

Prerequisites

Any introductory (graduate school) level programming course

Schedule

Setup Download files required for the lesson
00:00 1. Course overview What will this course cover?
In what lesson-style is this course delivered?
00:05 2. Tools I: Packaging and virtual-environments How to use a package manager to install third party tools and libraries
00:20 3. Tools II: Code Formatters How to format code with no effort on the part of the coder?
00:30 4. Tools III: Linters How to make the editor pro-actively find errors and code-smells
00:45 5. Data Structures How can data structures simplify codes?
01:40 6. Structuring code How can we create simpler and more modular codes?
02:05 7. Testing Overview Why test my software?
How can I test my software?
How much testing is ‘enough’?
02:25 8. Writing unit tests What is a unit test?
How do I write and run unit tests?
How can I avoid test duplication and ensure isolation?
How can I run tests automatically and measure their coverage?
03:05 9. Unit Testing Challenge How do I apply unit tests to research code?
How can I use unit tests to improve my code?
04:05 10. Advanced Topic: Design Patterns How can we avoid re-inventing the wheel when designing code?
How can we transfer known solutions to our code?
05:05 Finish

The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.