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
Object-Oriented Programming (OOP) with Ada 2005 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