Course overview


Test-Driven Development (TDD) is an iterative programming technique where you first write a failing test, which describes what you want to achieve, and after that write production code to pass the test. This course is too short for learning TDD - that will take about 6-12 months of practice - but hopefully it will help you to get over the initial hurdle of getting started with TDD, and prepare you for a journey of mastering TDD.


Fewer bugs. Less debugging. Better design. More fun.

In the following 1-minute video, Dave Farley elaborates some more:


You are ready for this course if you have no problems writing small applications of a few thousand lines of code.

To do the extended version of this course (4+1 cr), some experience in writing web apps and using a database is recommended: you will need to implement a small full-stack web app. To that end, you are expected to know (or learn quickly) the things that are covered in the courses Full Stack (parts 0-5), DevOps with Docker (parts 0-2), Tietokantojen perusteet/any SQL tutorial.


This course consists of six exercises (or small projects) about using TDD, refactoring and writing tests. Exercise 5 (full-stack web app) is optional, but if you do it, you will get an extra study credit. For that purpose, this course is visible as two course units:

The exercises are in JavaScript, but for the exercises where you create a project from scratch, you may use any programming language. To do the exercises, you'll need Node.js, Git, Docker and an IDE or text editor (e.g. IntelliJ IDEA or VS Code). To submit the completed exercises, you'll need a GitHub account and a screen recording software (e.g. OBS Studio).


The next instance of this course will be from January until March 2023. There will be a Discord channel and weekly study groups. More details will be announced later.

Of course you can also use this course material for self-study whenever you want, even if the course is not active.

Proceed to Practicalities or Exercises and schedule