Research Software Engineering 101
This course is aimed at master's students who just started with their thesis and want to learn more about software development best practices because they have to do a fair amount of coding for their thesis.
Prerequisites
- You already know the topic of your thesis and started with some initial research.
- Your thesis will require a fair bit of programming (e.g., running a simulation, training machine learning models, etc).
- You have a basic understanding of the programming language that you'll use for your thesis.
- You want to learn more about software engineering best practices to get your code to the next level.
- You're fluent in English (all materials are in English, thought the sessions themselves can also be held in German if all participants agree).
The course is meant to support you as you're writing your thesis and should not result in a lot of additional work besides what you have to do for your thesis anyways.
Agenda
The course is based on my book Research Software Engineering: A Primer and we will cover approximately one chapter every 1-2 weeks.
The sessions take place remotely via Google Meet, Zoom, or similar. Please join the calls with your camera turned on so the sessions feel a bit more personal.
We meet on Tuesdays 14:15-15:45 and homework has to be submitted by the following Sunday 23:59 via email to hey@franziskahorn.de.
- Three things you learned / "aha"-moments (or, if nothing was new for you, state where you learned this before).
- What this chapter is missing, i.e., any additional topics that you think should be covered here (if any).
- Any other suggestions for improvements, e.g., anything that was unclear or requires further elaboration, typos, etc.
- Open questions that we should discuss in the next session.
Session 1: Introduction
- Introduction to the course
- Participants introduce themselves and their thesis topic
Homework:
- Read the chapter: "Research Purpose"
- "Draw your Why" to illustrate the research purpose of your thesis
- Identify relevant evaluation metrics to quantify your approach
- Find some related work, i.e., the baselines that you should compare your approach to
Session 2: Research Purpose
- Q&A
- Participants present their "Why"
Homework:
- Read the chapter: "Data & Results"
- "Draw your What" to get clarity on the results you want for your thesis
- Describe the data you need to get these results
Session 3: Data & Results
- Q&A
- Participants present their "What"
Homework:
- Read the chapter: "Tools"
- Familiarize yourself with the programming language and IDE/editor you're planning to use (and tell me which one you chose)
- Set up your repository and host it on GitHub or GitLab and send me a link (if it's public) or invite me so I can see the code
Session 4: Tools
- Q&A
- Create pairs for code reviews
Homework:
- Read the chapter: "Software Design"
- Draw your "How"
- Make a plan for what you need to implement
Session 5: Software Design
- Q&A
- Participants present their "How"
Homework:
- Read the chapter: "Implementation"
- Start coding (and review your peer's code)
Session 6: Implementation Pt. 1
- Q&A
Homework:
- Keep coding and reviewing
Session 7: Implementation Pt. 2
- Q&A
Homework:
- Read the chapter: "From Research to Production"
- Prepare your final questions and feedback to help me improve this course!
Session 8: From Research to Production
- Q&A
- Feedback