Skip to main content
Software development for researchers

Lectures

Table of contents

Lecture outline

0. Hello World
Setup the development environment and write an Hello World program
1. Why this course?
Cover the motivation for learning software development and collaboration rather than just learning programming.
2. Python programming
This lecture will cover the basics of Python and ensure that the programming skills are on a sufficient level for learning software development
3. Your tools and environment
This lecture will go trough different approaches to setting up your development environment and the tools that can be used within it. More advanced tools and development patterns will be covered in later lectures.
4. Solving problems
The basic skill that is needed to develop any software is to solve the many smaller problems that the software is composed of. To solve a problem one applies ones programming skills, to choose what problems should solved and choosing between different solutions is software design.
5. Writing code for Humans to read and Machines to run
The title really says it all. Code is both read and executed more times than it is written - so one should be very careful with compromising on the reading and the running in favour of quick writing. This lectures covers how to write code for humans to read and machines to run.
6. Collaboration
Every large and successful software today is built in collaboration, either trough development or usage. Science itself has grown in complexity to where we need collaboration to be efficient and contemporary. Even if the code only has one developer, you will collaborate with your future self or the ones that eventually takes over or learns from you. This lecture covers vital requirements and tools for successful collaboration.
7. Styles of development
Developing a software is a process that everyone must go trough to go from start to stable. What this process is can greatly affect the quality of the software, the time it takes to complete, and how enjoyable the process is. This lecture covers different development methods, their pros and cons, and some situations where they can be suitable.
8. Software design and architecture
Everyone who has written software has designed it, but many designs are unconscious. We should strive to making the important decisions conscious, informed, and efficient. This lecture covers what software design is and what it is generally not, what consequences design decisions have and how to walk the line between just doing and over-engineering.
9. Making it work: debugging
10. Making it work: logging and profiling
11. Automate away friction
There is a classical tradeoff between the time spent automating something and the time taken to just do it manually. This lecture focuses on ways to quickly automate chores that exist, both in developing software and in using that software, in researchers everyday work.
12. Parallelization and foreign function interfaces
13. Optimization

Presentations

This section contains all the lecture presentations for this course.

They are made using revealjs and can run in the browser. As such, if anyone wants to view the slides after the lecture, simply click the link in the navigation to the lecture in question.

Live

Note!

A link to the recording of each lecture will be put here once it is live

  • Lecture 0: Setup environment

Hybrid

The lectures will be shared via a dedicated zoom room which main purpose is for screen sharing and recording but the possibility exists to attend these by remote if absolutely needed. The best learning experience will be if one attends in person and can engage in the discussion directly.

Important!

The link to the zoom room will be sent out to all participants via email

Lecture structure

The general lecture will be structured as

  1. Everyone joins the zoom room.
  2. Each lecture starts with reviewing the homework assignments from last lecture. Each student will in turn screen share their code, describe it, and run it live. After everyone has shown their solutions we will have a short discussion on the different approaches.
  3. The topic for the lectures is covered.
  4. Homework assignments are handed out for the topic at hand.
To top
× Zoomed Image