This session was not filmed.
This month we're very lucky to have Peter Marks talk to us about the surprising patterns and behaviour that can emerge from collections of even very simple automata. Don't miss it!
Automata are machines or control mechanisms whose behaviour follows predetermined instructions. An automaton acts entirely according to its own rules, possibly responding to its environment, but not under external control.
In this talk, we will explore software automata and how they can be used to create art. Specifically, we will limit our consideration to deterministic finite-state automata (DFA) – entirely predictable machines with no randomness in their actions.
One might imagine that simple machines with rigid, predictable behaviour would produce boring, predictable art, but we will demonstrate that that is not the case. We will look at chaotic systems where slight variations in initial conditions yield wildly diverging outcomes. Such systems, whilst completely deterministic, are not practically predictable at all.
Though chaotic, these systems can exhibit patterns - patterns not specifically encoded, but clearly observable. This is called emergent behaviour, and allows us to create complex images and animations from simple code.
We will show how software automata are built from three programming concepts: iteration, multiplicity and interaction. We will present and explain increasingly complex automata, and finish with a hands-on session where participants will build their own automata using a framework provided.
YOU MAY ALSO LIKE:
Automata, Chaos and Emergent Behaviour
Peter has been developing software for over 30 years. As an active member of the OO community, he was a regular speaker at the OT and SPA conferences. In 1999, he co-founded Connextra, pioneering many of today's main-stream Agile practices. For ten years, Peter's primary interest has been functional programming, and he now leads the FPF team at Barclays, developing languages for modelling Structured Products, and tools for pricing and managing trades, in Haskell.