Overall Course Structure and Pace
Overall Course Structure
The course is composed of four major sections. Each section builds on the content in the previous sections, so it is best to take the course in order. These are the major sections.
- Your First Test-Driven Development
- TDD for Code with Dependencies
- Test Doubles and Mocking the Hardware
- The Test-Driven Developer and Existing Legacy Code
The first three sections each take the better part of a day, with all the videos and exercises. Everyone works at a different pace, so take your time. I suggest immersing yourself, so try to complete a section over several consecutive days. In those sections, you learn what is possible with TDD and clean code from a greenfield starting point.
The last section is shorter, and not as focused on you doing stand-alone exercises. The most meaningful and valuable exercise will be for you to add tests to your own existing code. I'll give you the perspective of the test-driven developer, and the pragmatic way they apply the concepts of TDD to existing code, as well as some tools to help wrestle untested code into a test environment.
Learn by Doing!
You learn by doing, so it is important to do the exercises. If you get stuck, you can watch a demo of me doing the exercise. If you were taking a live course with me, I would give you feedback as you progress, doing real-time reviews. But you are not live with me. To get similar feedback, you should watch me do the demos once you have completed the exercise (or get stuck). Also, I automate some of the exercise build systems to catch you when you are not doing TDD.
Exercise Environment
Exercises are hosted on our custom cyber-dojo server. Here is the public cyber-dojo server where you can do programming practice alone or in a group.
If you find yourself stuck during an exercise, look at the hints or watch the demo video. If you dig a hole, revert back to the last time your code worked. Follow the First Law of Holes.
"If you find yourself in a hole, stop digging."

Have Fun! Let me know if I can help! Thanks for joining!
James Grenning -- Author of Test-Driven Development for Embedded C
![]() |
wingman-sw.com blog.wingman-sw.com @jwgrenning facebook.com/wingman.sw |