Kent Master Classes
Within our K-MOOCs Beacon Project, we have developed the concept of a 'Master Class'. We are looking to ensure that our MOOCs include opportunities to explore how concepts are used in the 'real world' with contributions not just from our leading academics but also from our partners within business, government and industry. We want to go beyond the introductory, basic or 'academic' presentation of ideas to include larger scale examples and case studies. We are also keen that our MOOCs should include resources that will be re-usable within our taught courses or as standalone learning objects. The 'Master Classes' will fulfil all of these, providing 'capstones' on different sections of our MOOCs where participants will be able to draw on expert experience to explore how the ideas and issues they've been discussing are used in practice.
The Erlang Master Classes
As part of our pilot MOOC in 'Functional Programming with Erlang' we have created a series of video Master Classes. These three Master Classes in Erlang will show you how Erlang can be used in practice to solve larger problems. We have chosen to give examples that provide 'capstones' for different aspects of Erlang: functional programming, concurrent programming and larger-scale programming with OTP.
The master classes are presented by Joe Armstrong, Ericsson AB and KTH, Stockholm, and one of the inventors of Erlang; Francesco Cesarini, CTO and founder of Erlang Solutions Ltd; and Simon Thompson, functional programming teacher and researcher at the University of Kent. Each Master Class ends with a discussion between the three presenters on some of the issues raised by the Master Class.
In this first master class we look at language processing in general, and in particular we focus on processing arithmetical expressions in a language like Erlang; of course, this is a model for processing all sorts of other languages: XML, domain-specific languages, test and “make” systems and so on. Once a representation is established, we show how this representation can be interpreted, or compiled and run on a virtual machine. Expressions can also be simplified symbolically, as well as converted to and from a textual form.
Simon is Professor of Logic and Computation at the University of Kent. He has been a teacher and researcher in functional programming for most of his career. Recent research has concentrated on refactoring programs in Erlang and Haskell, and he is the author of textbooks on Erlang (with Francesco), Haskell, Miranda and type theory.
- Introduction to language processing
- Representing structured data
- Using recursion: pretty printing
- Evaluation expressions
- Compiling and running on a virtual machine
Erlang is best known for its “share nothing” concurrency model that supports separate lightweight processes that communicate by message passing. This master class shows how sequential code – from the expression example – can be made concurrent. Building on this is a discussion of patterns for systems built on communicating processes. Erlang is built to be fault tolerant, and its “let if fail” philosophy is supported by its approach to process errors. Key to the successful use of Erlang in practice is the recognition that many of the components that programmers naturally build – for example servers – follow a similar pattern, and this is illustrated by making a more generic version of the calculator, serving as a bridge to the final master class.
Joe is one of the “gang of three” Erlang inventors, and a champion of the Erlang approach to programming large complex systems. He has worked for Ericsson, as well as in startups, and is also professor at KTH, Stockholm. He is the author of Programming Erlang (2ed).
- Turning sequential code into concurrent code
- Abstracting patterns of concurrency
- Handling errors
- The road to generics
- Client-server: name-server and resolver
There is a lot more to Erlang than the language – there is a wide ecosystem of tools, for example – but the key productivity tool is OTP (the Open Telecom Platform), which provides generic behaviours, such as a generic server, that can be used again and again with no changes to the generic part. This is explored in depth in this master class, and it is shown how, together with supervision, OTP provides the behaviours from which complex systems can be built quickly and reliably. These systems are packaged as applications and releases, and an overview of these completes the final master class.
Francesco is founder and Technical Director of Erlang Solutions Ltd, the company focused on building scalable, reliable systems based on Erlang/OTP. ESL is based in the UK and has branches in Sweden, Poland, Hungary, USA and Argentina. Francesco is also author (with Simon) of Erlang Programming and the forthcoming Designing for Scalability with Erlang/OTP with Steve Vinoski.