Concurrent Algorithms

Anyone can write concurrent code using Test Driven Design? Inconceivable!

Experience TDD and concurrent programming from inside a Parallel Human Computer

Session objectives:

  • Understand concurrent systems problems and solutions.
  • Learn how you can apply Test Driven Design to concurrent code.
  • Experience how a parallel computer works and is programmed.
  • Discover how simple rules and collaboration can solve complicated problems

Intended audience and prerequisites

This session is relevant to developers, testers and architects and everybody who’s interested in organisation, communication, emergent behaviour, solving puzzles, simulations, acting and playing. No programming experience required.

Short description:

Being able to work on concurrent problems and systems is becoming mandatory for everyone in IT. But it looks insanely hard and our familiar tools (like TDD) don’t seem to work.

Come and play part of our Parallel Human Computer. We’ll “program” (teach) you using TDD. Once programmed, you’ll solve a complicated puzzle easily by collaborating with the other participants “inside” the computer.

You’ll see that it’s not so hard and really good fun! And maybe you’ll start to think differently about systems.

No computers or programming experience required!

Format: 90 minutes experiential learning session

Long description:

The world around us is concurrent: lots of things happen at the same time all the time. We need to be able to work with concurrent systems to correctly understand and model the world, to create high-performance and scalable systems, to create responsive applications or to make good use of our increasingly multi-core computers. And it’s a useful technique to design teams and organisations around simple rules, communication and collaboration.

But, surely, writing concurrent programs using Test Driven Design is inconceivable, because:

  • It’s insanely hard, only accessible to genius uber-nerds
  • You can only do it well with exotic and esoteric programming languages
  • You can’t unit test concurrent programs
  • A fortiori, you can’t apply Test-Driven Design (TDD) on concurrent applications
  • It’s painstaking and boring work
  • Normal people like me can’t understand it

On the contrary! It’s easy and fun. You don’t even have to know anything about programming to play a part in our “Communicating Smart People” simulation!

Our company “Communicating Smart People” (CSP inc) has just created a Parallel Human Computer to solve puzzles. We’d like for you to become one of the parts of this computer. We will use Test Driven Design to teach you how to perform simple tasks and how to communicate with the other players inside the computer.

By the end of the session you’ll have solved a complicated puzzle, by each working on a small and simple part of the problem.

After the simulation, we’ll explain what you experienced with some simple theory and tools you can apply immediately.

You don’t need programming experience or a computer. We just need a few people who want to play and learn.

“Programming concurrent systems with non-programmers and without computers? Inconceivable!”

“You keep using that word. I do not think it means what you think it means”

If you feel the urge to program this on a real computer after the session, let us know. We have a number of implementations in different programming languages on GitHub and we’re looking for more implementations.

Session materials

References:

Implementations