Home | Contact | Pricing | News | Partners | Mailing List | Site Map

Gnat Pro - Professional Training

Get training from some of the foremost experts on the Ada programming language and GNAT Pro technology. Experience has shown that Ada is an extremely learnable language and that programmers with basic knowledge in other languages can quickly get up to speed with Ada. For programmers who already have some Ada experience, AdaCore offers advanced courses in Ada and GNAT Pro/GPS designed to help developers get the most out of the technology.

Training sessions can be given on-site or at AdaCore’s New York City headquarters. For information regarding scheduling, pricing or custom training sessions, please contact sales@adacore.com


Public Courses in NY and Paris

AdaCore periodically conducts public courses on Ada and the GNAT Pro development environment at its New York City and Paris offices. All courses combine lectures with hands-on workshops using the latest versions of the GNAT Pro tools.
Course and schedule details



Overview of Courses and Workshops

Introduction to GNAT Pro and GPS Course 1
Target Audience
Ada developers interested in learning the GNAT Pro technology
Course Duration
3 Days
Course Description
This course presents the GNAT Pro compilation system and the GNAT Programming Studio (GPS) integrated development environment (IDE). Students will be instructed in how to take best advantage of the compiler, tools, and IDE for effective system development. The course includes extensive hands-on use of the compiler and IDE.
Summary of topics covered
  • Building an executable on the command line
  • GNAT file naming rules and conventions
  • GNAT compilation environment
  • The GNAT elaboration model and legacy software systems
  • GNAT project files
  • Using GNAT projects to manage large systems
  • Using GNAT projects for legacy source file naming schemes
  • The GNAT Programming Studio (GPS) IDE
  • Managing projects with GPS
  • Developing software with GPS
  • Target independent debugging with GPS
Introduction to GNAT Pro and GPS for VxWorks 653 Course 2
Target Audience
Ada developers interested in learning the GNAT Pro technology on VxWorks 653.
Prior familiarity with VxWorks 653 is required, no prior familiarity with GNAT Pro or GPS is required.
Course Duration
3 Days
Course Description
This course presents the GNAT Pro compilation system and the GNAT Programming Studio (GPS) integrated development environment (IDE) for use with the Wind River Platform for Safety Critical ARINC 653 (”AE653″). Students will be instructed in how to take best advantage of the compiler, tools, and IDE for effective system development. The course includes extensive hands-on use of the compiler, the IDE, and the debugger using AE653 on a target board.
Summary of topics covered
  • Building an executable on the command line
  • GNAT file naming rules and conventions
  • GNAT compilation environment
  • Producing efficient executables
  • GNAT project files
  • Using GNAT projects to manage large systems
  • Using GNAT projects for legacy source file naming schemes
  • The GNAT Programming Studio (GPS) IDE
  • Managing projects with GPS
  • Developing software with GPS
  • Target independent debugging with GPS
  • Cross development tools
Ada Programming with GNAT Pro: Fundamentals Course 3
Target Audience
Programmers interested in learning the fundamentals of Ada software development
Course Duration
5 Days
Workshop
Hands-on exercises using the GNAT Pro toolsuite
Course Description

This course provides a full introduction to programming in Ada. Classic programming features are discussed, with an emphasis on Ada’s support for constructing modular, portable, and reliable systems. Although most of the course deals with Ada 83 features, a number of important facilities of Ada 95 are introduced, including the access type enhancements and child libraries.

This course also summarizes the new features added in Ada 2005. Students should have a basic grounding in one or more modern programming languages, such as C or Pascal, as a prerequisite.

Summary of Topics Covered
  • Fundamental data types: integer types, enumeration types, real types, record and array types
  • Basic algorithmic features (expressions, statements, subprograms)
  • Exceptions and exception handling
  • Access-to-object types; unchecked deallocation
  • Access parameters
  • Access-to-subprogram types
  • Modular program construction using packages, private types, and child library units
  • Generic units
  • Managing projects with GPS
  • Input-Output
  • Ada 83/95 compatibility issues
Ada Programming with GNAT Pro: Advanced Topics Course 4
Target Audience
Programmers interested in learning advanced Ada software development topics.
Programmers should be familiar with the content of Course 3.
Course Duration
5 Days
Workshop
Hands-on exercises using the GNAT Pro toolsuite
Course Description
This course is a continuation of Course 3. It covers Ada 95 and Ada 2005 support for Object-Oriented Programming, concurrency, and low-level and real-time programming. Students will understand how to use Ada effectively for systems programming and real-time applications, and how Ada fares as an Object-Oriented Language.
Summary of Topics Covered
  • Object oriented programming concepts (object, class, inheritance, polymorphism, dynamic binding)
  • Object-oriented programming using tagged types (type extensions, class-wide programming, abstract types)
  • Issues with concurrent programming
  • Protected objects/types
  • Task termination techniques
  • Rendezvous
  • Tasking idioms
  • Data-oriented synchronization using protected types
  • The predefined libraries
  • Mixed-language programming (Annex B support for interfacing)
  • Low-level programming
  • Systems Programming and Real-Time Systems Annex
  • Summary of other specialized needs annexes (distribution, information systems, numerics, high-integrity systems)
Ada Programming with GNAT Pro: Beyond Ada 83 Course 5
Target Audience
Programmers that know Ada 83 and are interested in learning Ada 95 / Ada 2005.
Programmers should be familiar with the content of Course 3.
Course Duration
5 Days
Workshop
Hands-on exercises using the GNAT Pro toolsuite
Course Description
This course provides in-depth coverage of the features introduced in Ada 95, and also covers some of the new facilities in Ada 2005. Particular emphasis is placed on the language’s support for object-oriented programming, hierarchical system development, and concurrent programming using protected types. Also presented are the standard libraries, support for foreign-language interfacing, and overviews of Ada 95’s Specialized Needs Annexes. As a prerequisite, students should have a good foundation in Ada 83 programming.
Summary of Topics Covered
  • General access types and access parameters
  • Access-to-subprogram types
  • Enhancements to generics
  • Child library units and hierarchical program construction
  • Object-oriented programming using tagged types (type extensions, class-wide programming, abstract types)
  • Data-oriented synchronization using protected types
  • The predefined libraries in Ada 95
  • Mixed-language programming (annex B support for interfacing)
  • Low-level programming
  • Specialized Need Annexes (systems programming, real-time, distribution, information systems, numerics)
  • Ada 83/95 compatibility issues
Object-Oriented Programming (OOP) with Ada 2005 Course 6
Target Audience
Developers interested in learning or perfecting their OOP skills.
Programming experience in a high-level language is required. Knowledge of Ada fundamentals is desirable but not strictly necessary.
Course Duration
5 Days
Workshop
Hands-on exercises using the GNAT Pro Ada 2005 toolset.
Course Description
This specialized course examines the concepts of object-oriented programming and software engineering and, within that context, fully explores the Ada support for OOP. Ada 2005 extends the Ada 95 support for traditional OOP and offers innovative new capabilities that go beyond those of other mainstream languages. For example, Ada defines “thread-safe interfaces” that extend the Java notion of interfaces.
Following a brief introduction to the pertinent fundamentals of Ada, the course examines in detail these language facilities and the idioms emerging from their use. Coverage of the approaches to expressing selected design patterns is also provided, as well as an overview of the new standard Containers data structures.
Summary of Topics Covered
  • Fundamental concepts: encapsulation, abstract data types, polymorphism, dynamic dispatching, inheritance, single and multiple inheritance, interface and implementation inheritance
  • Abstract types and subprograms and their use to define frameworks
  • Interfaces: expressing multiple inheritance, comparison to abstract types
  • Class-wide programming
  • Expressing inheritance idioms while controlling implementation visibility
  • Generic unit support for OOP and when to use generic units in OOP
  • Expressing automatic initialization and finalization
  • Concurrency: thread-safe interfaces, integrating objects and threads, the Inheritance Anomaly
  • Implementation of selected design patterns
  • OOP by value versus OOP by reference, advantages of each
  • Overview of the Ada 2005 standard Containers library
Hard Real-Time and Embedded Systems Programming Course 7
Target Audience
Developers interested in learning or perfecting their real-time and embedded programming skills with this state-of-the-art language. This course is intended for developers familiar with some of the more advanced features of Ada, including tasking and access types.
Course Duration
4 Days
Workshop
Hands-on exercises using the GNAT Pro Ada 2005 toolset for an embedded target
Course Description
Although the terms are often used interchangeably, real-time systems need not be embedded, and embedded systems need not have deadlines. However, applications in both domains are expensive and labor-intensive, especially because developers typically have only low-level tools available and must use techniques that are more ad hoc than analytical. Ada 2005 represents the state-of-the-art in real-time programming languages and offers a high-level model for low-level programming that is unsurpassed in expressive power. This intensive course covers the modern analytical techniques for determining whether deadlines will be met, the Ada language facilities required to support those analyses, and the high-level model Ada provides for embedded systems development. In addition, the issues involved in storage management are covered so that, in addition to time, equally important storage resources are available when required.
Summary of Topics Covered
Low-Level Programming
  • Querying Implementation Limits
  • Querying Representation Choices
  • Specifying Representation
  • Unchecked Programming
  • Machine Code Insertions (MCI)
  • When Ada Is Not the Main Language
  • Interacting with Memory-Mapped Devices
  • Handling Interrupts
Schedulability Analysis
  • Cyclic Executives
  • Preference Scheduling
  • Rate Monotonic Analysis
  • Response Time Analysis
  • Transient Overloads
  • Period Transformations
  • Bandwidth-Preserving Algorithms
  • Priority Inversion
  • Priority Inheritance
  • Ceiling Protocols
Schedulability Analysis Support in Ada
  • The Real-Time Systems Annex
  • Dispatching Policies
  • Priority Ceiling Locking
  • Entry Queuing Policies
  • Preemptive Abort
Language-defined Tasking Facilities
  • High-Resolution Clock
  • Dynamic Ceilings for Mode Changes
  • Timing Events
  • Entry Queuing Policies
  • Monitoring Execution Time
  • Execution Time Events
  • Group Time Budgets
  • Partition Elaboration Control
  • Entry Queuing Policies
  • Task Termination
  • Synchronous Task Control
  • Asynchronous Task Control
  • Type-Independent Task Identification
  • Per-Task Data
  • Dynamic Priorities
  • User-defined Schedulers
  • The Ravenscar Profile
Reliable Storage Management
  • Storage Management Policies
  • Using Access Types
  • Reserving Storage
  • Handling Storage_Error
  • Allocating Values
  • Deallocating Values
  • Tuning the Run Time Library for Storage Conservation
  • User-Defined Storage Management
Performance Issues
  • Distributed Costs
  • Potential Hot Spots
  • Tuning the Run Time Library for Performance
  • Comparison of Ada with the POSIX Real-Time Extensions
Introduction to GNATbench Course 8
Target Audience
Ada programmers interested in using the GNAT Pro technology with WRS Workbench.
The developers should be familiar with Ada. No prior familiarity with GNAT Pro, Eclipse, or WRS Workbench is required.
Course Duration
3 Days
Course Description
This course will thoroughly cover GNATbench, the AdaCore Eclipse plug-in for GNAT Pro Ada used to develop applications with both standard Eclipse and Wind River Systems Workbench. Students will become thoroughly familiar with the use of GNATbench for building both native and VxWorks applications.
Summary of Topics Covered
  • Using GNAT Pro Ada in stand-alone mode
  • The standard Eclipse graphical user interface
  • The GNATbench plug-in for standard Eclipse: project creation, the language-sensitive editor, and browsing and navigation, building and debugging, getting help
  • WRS Workbench: additions to standard Eclipse and the GNATbench changes specific to Workbench, including project creation, building and debugging, getting help
  • Suggested further reading
Introduction to GtkAda Course 9
Target Audience
Ada programmers interested in learning graphical user interface (GUI) development
Course Duration
3 Days
Workshop
Hands-on exercises using the GNAT Pro toolsuite
Course Description
After the first day, students will have acquired a good knowledge of the building blocks and general principles of GtkAda, and will have built their first GtkAda application. The second day covers advanced features of the toolkit, along with “best practice” principles. At the end of this day, students will have enough knowledge to write and maintain GtkAda applications. The third day provides an advanced look at the most complex widgets of GtkAda, which are often the heart of GtkAda applications.
Summary of Topics Covered
  • Introduction to GtkAda
  • Building blocks of GtkAda: Glib, Gdk, Gtk, Pango
  • Configuring and installing GtkAda
  • Structure of a GtkAda application
  • Graphical layout: the Widgets hierarchy
  • The Gtk main loop: signals and events
  • Using the GUI builder
  • Layout of the widgets
  • Creating your own widgets
  • GtkAda and tasking
  • Good development practices with GtkAda
  • Advanced uses of the main loop: Idle and Timeout callbacks
  • GtkAda Widgets: Canvas and MDI
  • Using the Tree_View
  • Using the Text_View

For further information or registration forms, or to arrange for any of these courses to be delivered on site at your facility, please contact sales@adacore.com

Contact Training