In this talk I'm going to discuss Algebraic Data Types I'm going to cover. Creating a model, relate this to types and objects in computer language and then to algebra Introduce two flavours of Algebraic Data Types Approaches in different languages Focus on Modern Java and something called the Expression Problem