Tutorials

Improve the benefits of coming to the conference further by attending our tutorials, all given by well-known experts.

09:00-10:30 11:00-12:30 14:00-15:30 16:00-17:30
Tuesday,
13th June
Tutorial 1:
The HAC Ada Compiler

(Gautier de Montmollin)
Tutorial 2:
Controlling I/O Devices with Ada and the Linux Simple I/O Library

(Philip Munts)
Tutorial 3:
Everything you always wanted to know about characters and strings

(Jean-Pierre Rosen)
Tutorial 4:
Introduction to the development of safety critical software

(Jean-Pierre Rosen)
Tutorial 5:
Rust Fundamentals

(Luis Miguel Pinho and
Tiago Carvalho)
Tutorial 6:
Concurrency and Parallelism in Rust

(Luis Miguel Pinho and
Tiago Carvalho)

T1 - The HAC Compiler

Gautier de Montmollin, Ada Switzerland

Sometimes, you would like to write a small program - typically, a text parser, a file converter, a shell script launching various applications, or maybe a numerical algorithm. You would like to use your preferred "full Ada" compiler in order apply the same know-how as for large-scale development and to keep doors open in case the small program/script/snippet develops into a large, resource- and performance- intensive application, or a new component of an existing large application. However, for a starter, you notice that your "full Ada" system is too heavy for the job. Perhaps it is because the compiler produces more intermediate files than your program itself would. Or, the build time is a bit too long for experimenting. Therefore, you actually miss an adequate tool. The goal of the HAC Ada Compiler project is to fill that gap. In the tutorial, we explore the present possibilities offered by HAC. Additionally, an important share of the tutorial is interactive and dedicated to brainstorming, trying small programs, discussing potential developments, saying what you like, do not like, or would like with HAC.

Level: Basic knowledge of Ada

Reason for attending

  • Discover a different way of programming Ada, for different purposes
  • Seize the opportunity to influence the future development of HAC: bring your ideas, use-cases, examples, wishes...
  • Discover the new features introduced since the 2022 tutorial
  • Fun!

Presenter

Gautier de Montmollin is a software developer. He holds a PhD in mathematics from the University of Neuch√Ętel, Switzerland. His quest for both run time and development time efficiency has trapped him with the Ada language which he has the chance to use professionally (formerly in finance, now in robotics) and for private projects. He has presented professional and private projects at various Ada-Europe and FOSDEM conferences.

T2 - Controlling I/O Devices with Ada and the Linux Simple I/O Library

Philip Munts, Sweden

This educational tutorial will teach attendees how to write Ada programs for a small embedded system, using the Linux Simple I/O Library. Attendees will gain hands-on experience with with a tutorial kit containing a Raspberry Pi Zero W and some peripheral devices. Tutorial hardware kits will be available, each kit consists of a Raspberry Pi Zero Wireless target computer (preloaded with MuntsOS Embedded Linux) attached to a MUNTS-0018 Raspberry Pi Tutorial I/O Board, and a small collection of Grove System compatible peripherals including a potentiometer, a miniature RC servo, and the like.

Level: Intermediate

Attendees should have a basic familiarity with the Ada programming language and should be able to write simple Ada programs with Alire.

Reason for attending

Attendees to this educational tutorial will learn how easy it is to develop Ada programs for an embedded Linux microcomputer, given high productivity frameworks like MuntsOS Embedded Linux and the Linux Simple I/O Library.

Presenter

Philip Munts has been an Ada practitioner since 1983. His career has concentrated on embedded systems development, ranging from single chip microcontrollers to a NASA satellite tracking station. He currently works as a software engineer consultant based in Malmoe, Sweden. He is particularly interested in running programs written in Ada for very small Linux-based computers such as the PocketBeagle and the Raspberry Pi. Philip will enjoy sharing his passion with tutorial attendees.

T3 - Everything you always wanted to know about characters and strings

Jean-Pierre Rosen, Adalog, France

Characters represent an incredibly difficult issue, in general and in programming languages. The extent of the problems is hard to appreciate, as seen from the English language which needs only simple characters, but becomes apparent when you consider accented letters, ideograms, and even music notes or emojis... This tutorial explains all the issues with characters, their encoding and representation, the various corresponding standards, collating sequences, etc. In addition, it addresses character strings in programming languages in general, and in Ada in particular, showing why various forms of strings are provided and how to use them.

Level: Intermediate

Expected audience experience: Casual knowledge of Ada.

Reason for attending

  • Understand (at last!) all the issues with characters, and the precise meaning of confusing notions like code-points, encoding, character sets
  • Learn how to account for character issues in your Ada programs
  • Understand the differences between the various kinds of strings provided by Ada, and be able to choose the most appropriate one according to your needs

Presenter

JP Rosen is a professional teacher, teaching Ada (since 1979, it was preliminary Ada!), methods, and software engineering. He runs Adalog, a company specialized in providing training, consultancy, and services in all areas connected to the Ada language and software engineering. He is chairman of Ada-France. He participated in the design of the extension of the character set for Ada 95, and is the author of AI05-0137-2 that provided UTF support in Ada 2012. Adalog offers regularly on-site and off-site training sessions in Ada.

T4 - Introduction to the development of safety critical software

Jean-Pierre Rosen, Adalog, France

This tutorial presents the fundamental notions that make the development of safety critical software different from the development of more casual software. It presents the context, the applicable standards, and the techniques used for achieving high reliability. It explains why Ada and Spark are especially suited for writing safety critical software. Although required for demanding applications, the general principles tha tailed can be applied to, and help improve, all kinds of software development.

Level: Intermediate

Expected audience experience: Casual knowledge of Ada.

Reason for attending

  • Understand the stakes of the development of safety critical software
  • Learn the various rules governing the development of safe software, and understand their motivation
  • Consider the tools that are available to improve quality and safety of software
  • Apply some principles to more casual software for higher reliability

Presenter

JP Rosen is a professional teacher, teaching Ada (since 1979, it was preliminary Ada!), methods, and software engineering. He runs Adalog, a company specialized in providing training, consultancy, and services in all areas connected to the Ada language and software engineering. He is chairman of Ada-France. He participated in the design of the extension of the character set for Ada 95, and is the author of AI05-0137-2 that provided UTF support in Ada 2012. Adalog offers regularly on-site and off-site training sessions in Ada.

T5 - Rust Fundamentals

Luis Miguel Pinho and Tiago Carvalho, ISEP, Portugal

This tutorial will provide attendees with the basics of programming in the small in Rust, covering data types, control-flow constructs, statements, expressions and functions, as well as some aspects of object- oriented programming and generics. The tutorial will then focus on the (somehow) complex mechanisms of Rust for mutability and ownership of variables, showing how Rust tracks the lifetime and scope of all references in a program during compilation, enforcing memory safety and preventing concurrent data races, providing flexibility without requiring the use of a garbage collector. The tutorial will also present two of the most relevant concepts used for functional style of programming in Rust: closures and iterators, showing how these concepts can be used together to implement programs in a declarative style.

Level: Intermediate

Attendees should be familiar with programming languages in general.

Reason for attending

  • Understand the main concepts behind the Rust programming language
  • Learn how Rust addresses memory safety and programming in the small
  • Learn the most relevant concepts used for functional style of programming in Rust

Presenters

Luis Miguel Pinho is a Professor at the Department of Computer Engineering - School of Engineering of the Polytechnic Institute of Porto, and Senior Researcher at the INESC TEC Associated Laboratory. He promotes and leads activities in, among others, real-time parallel programming models, reliable software, and edge computing. He has published more than 150 papers in international conferences and journals in the area of real-time embedded systems, and has been general/program chair of several international conferences. He is a member of ISO/IEC JTC1/SC22/WG9, and senior member of ACM and IEEE. He was Editor-in-Chief of the Ada User Journal, and is currently Technical Editor of ACM SIGAda Ada Letters.

Tiago Carvalho is a researcher and invited professor at the School of Engineering of the Polytechnic Institute of Porto, where he works in activities related to real-time parallel programming and timing analysis. He has a PhD in Compilers and a MSc degree in Computer Engineering from the Faculty of Engineering of the University of Porto (FEUP), where he is an invited assistant professor. Tiago has experience in compiler-related topics such as domain-specific languages and compiler optimizations.

T6 - Concurrency and Parallelism in Rust

Luis Miguel Pinho and Tiago Carvalho, ISEP, Portugal

This tutorial will provide attendees with some of the available mechanisms and libraries of Rust to program concurrent and parallel applications. The tutorial will start with the basic concurrency mechanisms provided in the Rust language and its standard library: threads, channels, shared data support with the Atomically Reference Counted type, and thread synchronization. The Rust language provides by itself a limited set of mechanisms for concurrency, giving preference to the implementation of more advanced mechanisms through libraries. Therefore, the tutorial will briefly present some of the common libraries for concurrency (such as parking_lot or crossbeam), focusing afterwards in more advanced libraries for concurrent and parallel applications: the Threadpool library, which provides a simple thread pool approach to execute lightweight tasks and Rayon, a data-parallelism library that makes it easy to convert sequential computations into parallel by using iterators.

Level: Advanced

Attendees should be familiar with the Rust programming language (possibly by attending the morning tutorial).

Reason for attending

  • Learn the main features provided by the Rust language to support safe concurrency
  • Learn some of the main libraries available for concurrent and parallel programming in Rust

Presenters

Luis Miguel Pinho is a Professor at the Department of Computer Engineering - School of Engineering of the Polytechnic Institute of Porto, and Senior Researcher at the INESC TEC Associated Laboratory. He promotes and leads activities in, among others, real-time parallel programming models, reliable software, and edge computing. He has published more than 150 papers in international conferences and journals in the area of real-time embedded systems, and has been general/program chair of several international conferences. He is a member of ISO/IEC JTC1/SC22/WG9, and senior member of ACM and IEEE. He was Editor-in-Chief of the Ada User Journal, and is currently Technical Editor of ACM SIGAda Ada Letters.

Tiago Carvalho is a researcher and invited professor at the School of Engineering of the Polytechnic Institute of Porto, where he works in activities related to real-time parallel programming and timing analysis. He has a PhD in Compilers and a MSc degree in Computer Engineering from the Faculty of Engineering of the University of Porto (FEUP), where he is an invited assistant professor. Tiago has experience in compiler-related topics such as domain-specific languages and compiler optimizations.