From Intent to Implementation
This course is aimed at master's and PhD 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.
This course is for you if
- You want to learn more about software engineering best practices to get your code to the next level.
- You'd appreciate more feedback on both your code and your overall approach to your thesis.
- You think a structured process and regular check-ins could help you stay on track and make steady progress.
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're fluent in English (all materials are in English, however, 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 this project anyways.
Agenda
This course is based on my book Clarity-Driven Development of Scientific Software and consists of two parts, a two-day workshop and individual coaching sessions.
The course takes 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.
Part 1: Clarity-Driven Development Workshop
This two-day workshop introduces the core ideas of Clarity-Driven Development (CDD) and guides you in gaining clarity and developing a practical implementation plan.
Day 1
[9:00 - 10:00] Group Session
- Welcome
- Participants introduce themselves (incl. thesis topic & programming ambitions)
- Introduction to CDD: Clarity on Outcomes
[10:00 - 13:30] Self-Study
- Read the chapter: "Outcome: Why?"
- "Draw your Idea" to illustrate the research purpose of your thesis
- Identify relevant evaluation metrics to quantify your approach and "Draw your Advantage"
- Find some related work, i.e., the baselines that you should compare your approach to
[13:30 - 15:00] Group Session
- Q&A
- Presentation and discussion of results
- Introduction to Clarity on Outputs
[15:00 - 17:00] Self-Study
- Read the chapter: "Output: What?"
- "Draw your Output" to gain clarity on the tables and figures you want to include in your thesis
Day 2
[9:00 - 10:30] Group Session
- Q&A
- Breakout sessions in small groups to critique data visualization sketches
- Group discussion
- Introduction to Clarity on States & Flows
[10:30 - 14:00] Self-Study
- Read the chapter: "State & Flow: How?"
- "Draw your Code" to outline what you want to program
- Plan your experiments
[14:00 - 15:00] Group Session
- Q&A
- Reflection on the process and group discussion
- Outlook & Goodbyes
Part 2: Individual Coaching Sessions
In these individual coaching sessions you get feedback on your implementation.
Please note that these sessions are only available for students who plan to implement their project (primarily) in Python.
Preparation
- Read Part 2 of the book: "Writing Code"
- 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
Coaching Sessions
- In the first session, we review the plan for your implementation and define how we want to work together
- For followup sessions, you send me your changes in advance (preferably as a merge request) and in the session we discuss the feedback and next steps