Dr. Surly's School for Mad Scientists is a series of courses to promote good embedded software practices and techniques. The series uses real-world examples, free open source tools, and humor to guide you through unit testing, interaction testing, and many other embedded software topics. 

  • COURSE 1: Unit Testing & Other Embedded Software Catalysts - AVAILABLE NOW!
    • Developing Embedded Software in C. 
    • Unit Testing. 
    • Test Driven Development.
    • Sharpening your Coding skills and your Architecture skills.
    • Using Free Tools like Unity.
  • COURSE 2: Interaction Testing, Mocking, & Embedded Software - AVAILABLE SOON!
    • Developing An Actual Embedded Software Project From Scratch in C
    • (In fact, this entire course is ONE large real-world project)
    • Interaction-Based Testing.
    • Mocks and Stubs and how they accelerate Testing
    • Using Free Tools like CMock and Ceedling.
  • COURSE 3: Advanced Unit Testing and Tool Wrangling for Embedded Systems - AVAILABLE LATER
    • Testing Those Hard-To-Reach Places
    • Don't Design Yourself Into A Corner
    • Integrating Unity and CMock into Your Systems

ENROLL & code real tests today


Sign up for the first course now for only $75... heck, use discount code SURLYSCIENCE and take 40% off to get in for only $45! When Courses 2 and 3 are released, we'll be sure to let you know!

The first course requires about 8 hours to complete. You will spend the majority of this time coding. The course materials include 3 hours of video in lectures and screencasts oriented around real world projects. You also get a variety of supplemental materials to support you beyond the main lectures.

We made a few lectures of the first course available for free preview to give you a good sampling of the material.


You are a developer of embedded and systems software. That’s especially challenging work.

You may or may not have heard of Test Driven Development (TDD).

But you do care about quality code. You care about meeting deadlines. You care about improving your skills and becoming even better at what you do.


We are Mark VanderVoord and Mike Karlesky.

We’ve been on a quest to improve embedded software for a long time. We’ve spent years working with TDD. We’re creators and contributors to open source testing tools. We’ve taught others at conferences, through blogs and books, and through onsite training and coaching.

Now we’re sharing what we know through this online course.

THIS SERIES is the Real Deal


You will code on your first day and develop real-world projects as you progress. No toy examples!


We’ve released the first course, including dozens of lectures, high-quality projects, plus a whole bunch of supplemental guides addressing issues outside the main lectures. We teach you the basics of unit testing. We introduce you to Unity, an open source testing framework for C. We show you how to test embedded and system software despite their unique challenges. And we organize everything around working with actual test code as quickly as possible.

We are now working on Course 2. This next course will get you started with a large-scale, end-to-end full project using all the techniques of good state-based testing from Course 1 and build upon these, training you in interaction-based unit testing with mocking. In the end, you will have built a well tested, useful, real-world application (on real hardware if you purchase it). 

Prepare to take over the world…