Erlang Express
Target Audience: Software Developers
Prerequisites: Good programming skills in another language
Objectives:
• Understanding of the basics of Erlang.
• Read/Write/Design Erlang Programs.
• Good knowledge of the development environment and tools.
• Provides basics needed to attend the Advanced Erlang/OTP course
Goal: Attend the Advanced Erlang/OTP course and eventually pass the Erlang certification exam.
Duration: Three days.
Registration: 08:30 on 21st March 2011.
Venue: Hilton San Francisco Airport Hotel.
Description:
The course contains all the Erlang basics such as sequential and
concurrent programming, along side error handling. The Erlang
development environment is presented, with a special emphasis on the
Erlang mode for Emacs alongside the major debugging tools. Good and bad
programming practices are discussed, as are tools used to profile the
system. OTP design principles and concepts are sneaked into the
material as well as the exercises.
Course Contents:
- Introduction
- Basic Erlang
- Sequential Programming
- Concurrent Programming
- Process Design Patterns
- Process Error Handling
- Code Updating
- ETS tables
- Distributed Programming
- Ports and Sockets
Introduction to the software needs of telecom control systems, followed by a history of Erlang, its features, and product and research examples within and outside Ericsson.
Basic Erlang
This section deals with Erlang data types and pattern matching. Functions, modules, and BIFs are discussed. Before the exercises, the Erlang shell, useful shell commands as well as Emacs and its Erlang mode are introduced.
Sequential Programming
The Sequential Programming section comprehends conditional evaluations, guards and scope of variables. It then introduces recursion, with a special emphasis on different recursive patterns, tail recursion, and space saving optimizations. Before the exercises, libraries and their manual pages, possible run time errors and the debugger are demonstrated.
Concurrent Programming
This section describes the creation of processes and their life span. It looks at sending and receiving messages, selective reception, and passing data in the messages. It continues with the various uses of time outs and registering processes, and terminates by showing the generic process code structure. Before the exercises, a demonstration of the Process Manager tool is given.
Process Design Patterns
This section introduces the concept of process patterns, preparing the students for the OTP behaviours. It gives a detailed example of a client server system, looks at finite state machines and event handlers. Synchronous versus asynchronous message passing is discussed.
Process Error Handling
This section introduces the simple but powerful error handling mechanisms in processes. It looks at process links, exit signals and their propagation semantics. How robust systems are built in Erlang are discussed, and an example from the Process Design Patterns section is re-implemented, making it robust.
Code Updating
The section introduces software upgrade during run time. The error handler, the code server, and code search paths are covered, as is the .erlang file.
ETS tables
An introduction to the Erlang Term Storage is given, together with its different table options. Examples on when to use and not to use ETS tables are covered. A demonstration of the table visualizer is provided.
Distributed Programming
An introduction to the requirements of distributed systems is given, and how Erlang is able to fill these requirements. The distribution syntax and semantics are covered, followed by the BIFs and the net kernel.
Ports and Sockets
An introduction of the mechanisms used to make Erlang more open are taken up in this section. Ports, for external communication within the same machine, and Sockets, for communication on IP networks are discussed. The difference between TCP and UDP is described.
Teacher(s):
Simon Thompson
Simon Thompson is Professor of Logic and Computation in the Computing
Laboratory of the University of Kent, where he has taught computing at
undergraduate and postgraduate levels for the past twenty five years,
and where he has been department head for the last six.
His
research work has centered on functional programming: program
verification, type systems, and most recently development of software
tools for functional programming languages. His team has built the HaRe
tool for refactoring Haskell programs, and is currently developing
Wrangler to do the same for Erlang. His research has been funded by
various agencies including EPSRC and the European Framework programme.
His training is as a mathematician: he has an MA in Mathematics from
Cambridge and a D.Phil. in mathematical logic from Oxford.
He has
written four books in his field of interest; Type Theory and Functional
Programming published in 1991; Miranda: The Craft of Functional
Programming (1995), Haskell: The Craft of Functional Programming (2nd
ed. 1999) and Erlang Programming (with Francesco Cesarini, 2009). Apart
from the last, which is published by O'Reilly, these are all published
by Addison Wesley.
Simon's book