Erlang Express 11-13 June

Trainer: Roberto Aloi

Registration: 8.30am on 11 June

Venue: Erlang Solutions AB

Saltmätargatan 5

113 59

Stockholm

Sweden

Telephone: +46 8 120 424 00

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

Duration: Three days

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


Erlang Express is a three-day introductory course developed for software engineers. Its objectives are to give participants the knowledge to read, write and structure Erlang programs, providing all prerequisites to attend the OTP course.

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.

 


Introduction
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.

Records and Funs
"Records" are an Erlang data structure, similar to a struct in C, used for storing a fixed number of elements. "Funs", usually referred as "anonymous functions" in other programming languages, allow the creation of functions without binding them to a name. This section focuses on the syntax for creating and using records and funs.

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.

 

OTP Express 11-13 June

Trainer: Robert Virding

Target Audience: This course is aimed at experienced Erlang Software Developers and Designers who need to understand Behaviours.

Prerequisites: Existing experience using Sequential and Concurrent Programming with Erlang on projects.

Objectives:

• Use existing Design Patterns supported by Erlang and OTP.

• Apply Generic Behaviours, Finite State Machines and Event handler Patterns.

• Use the Supervisor and Applicaton Behaviours Patterns.

• Write your own Design Patterns.

• Structure large Erlang based systems.

Goal: Design fault-tolerant systems.

Duration: Three days

Registration: 08:30 on 11 June 

VenueBusiness Center Bilpalatset

Description:

You will learn the prevailing Erlang Design Patterns called OTP Behaviours. We will cover Erlang Design Patterns such as Generic Behaviours, Finite State Machines and Event Handlers. You will also learn how to develop systems using the Supervisor and Application Behaviours Patterns, so you can construct maintainable and fault tolerant software. Upon completion of this course, you will be able to extend it all, by devising your very own Behaviours.

Course Contents:



Introduction
This section introduces the need and advantages of using middleware in the developmentof massively concurrent, distributed, fault tolerant real time systems in Erlang. It looks at Erlang's evolution, and how it helped form OTP. Further this gives an overview of the components that make up OTP. They are Erlang, a set of behaviours, and rules and design principles to use them. OTP comes with many ready built applications and tools useful for large scale software design. They are introduced in this section.

Records and Funs
Records and funs are used extensively within OTP and a refresher of the concepts and use is provided in this section.

Behaviours
Erlang processes display similar properties. In the Open Telecom platforms, these properties have been abstracted in a group of generic library modules, also called OTP behaviours. This section introduces the concept of behaviours, and through examples of abstraction, shows their need and advantages.

Generic Servers
Generic servers implement the Client-Server behaviours in OTP. This section introduces the most commonly used behaviour in Erlang based applications.

Finite State Machines
The finite state machines behaviour in Erlang is used to implement state transitions in processes based on incoming events. This behaviour is commonly used when implementing protocol stacks.

Supervisors
Supervisors are a behaviour whose only task is to start other Erlang behaviours and monitor them for abnormal termination. This is a vital section in understanding start and restart strategies in Erlang.

Event Handlers
Erlang has ready built event managers. Event handlers are behaviours who subscribe to events sent to specific managers, allowing several actions to take place based on one single event. Event handlers can be changed on the fly, as well as added or deleted from a specific manager.

Applications
This section introduces the application behaviour, used for packaging Erlang resources. Resources can vary from libraries to process clusters, and can be configured to run on a single processor or be distributed on a set of nodes.

Special Processes
There will be times where we want to implement our own behaviours, or for efficiency reason, use simple Erlang processes. This section looks behind the scenes on how behaviours are implemented, and explains how to implement your own.

System Principles
The System Principles section describes how Erlang applications are coupled together in a release and started as a whole. Sections include creating release files, bundling up the software including the virtual machine, and running Erlang on target and embedded hosts.

System Architecture Support Library
The System Architecture Support Library was used in the first release of OTP to package tools needed for large scale software design. This section covers error logging, the report browser, alarm handler and overload module.