Synopsis of an Ada Course

Christoph Grein

Mail to
christ-usch.grein@t-online.de

Overview

You need an in-house course for your employess?

These courses provide an extensive introduction into the programming language Ada. Prerequisite for the basic course is knowledge of a higher programming language; prerequisite for the advanced courses is knowledge of Ada's basics. Modern Lady Ada
Image created by
Christine Anderson
Number of Participants: A maximum of 6 persons
Basic course – prerequisite: Knowledge of a higher programming language
   Duration: 1 week (Monday afternoon to Friday morning);
                     Basics of the Ada language
                     daily 9-12 and 13-16
   Contents: Basic Ada features
                    Ada 83, 95, 2005, 2012 (partially)
Advanced courses – prerequisite: Firm knowledge of the basics of the Ada language as tought in the basic course
   Duration: 1 week (Monday afternoon to Friday morning);
                     Advanced topics
                     daily 9-12 and 13-16
   Contents: OOP; Tasking (Concurrent Processing)
                    Ada 83, 95, 2005, 2012 (partially)

These courses are currently in German only, but if you're interested, I can also provide an English version.
See here the Deutsch German synopsis.


Objective of the courses

Software penetrates more and more our daily life and guaranties directly the safety of persons and the security of property. Widely used programming languages have only a few or even no security and safety mechanisms. This leads to safety and security vulnerabilities which have to be closed with frequent software updates. High maintenance costs for the software manufacturer and inconveniences for the clients are the consequences.

Ada in contrast to other programming languages provides the means to recognize design and programming bugs early in the development cycle or even to completely avoid them. Consequently, international safety and security standards recommend Ada as the preferred language. She supports in a unique way modern analysis, design, and programming methods for the development of highly reliable software systems.

In a paper well worth reading Software Engineering Education: On the Right Track, John W. McCormick (University of Northern Iowa) found the following basic properties to be responsible for students' success with Ada in contrast to C in the development of real-time software for an electric toy train:

For these reasons, the Basic Course will place emphasis on the above mentioned properties (except for the last one, which will be handled in an Advanced Course). Knowledge of these basic features of Ada 83 definitly improve programming results. As published at different places, alone 80% of all bugs in C/C++ programs may be attributed to inappropriate handling of scalar items.

One Advanced Course deals with object oriented programming as introduced with Ada 95.

The other Advanced Course provides an introduction to tasking, i.e. the programming of concurrent processes, especially the concept of rendezvous for data exchange.

There are application centred exercises for each language feature providing participants the opportunity to consolidate their newly acquired knowledge. They get a copy of the PowerPoint foils in PDF format and coding examples as well as best practice solutions. At the end, they have developed a concept about the structure and contents of the Ada Reference Manual and about Ada's development since 1980.


Course Contents

Basics

  1. Type concept as exemplified with whole numbers
    Strong Typing
    Subtypes
    Named Numbers
  2. Composite Types
    Arrays and Record
    Aggregates
  3. Control Structures
    Loops, Conditional Statements, etc.
  4. Subprograms
    Procedures and Functions
    Separation of Specification and Implementation
    Parameter Transfer
    Recursion
  5. Enumerations
    Literals are Functions
    Overloading
  6. Packages
    Contract Model
    Strict separation of Specification and Implementation
    Use Clauses and Visibility
  7. Input/Output
  8. Ada 83 Inheritance Rules
    Overriding Inherited Operations
  9. Generics
    Generic Parameter Types
  10. Exceptions
  11. Elaboration
    Elaboration Control
  12. Access Types
    Avoidance of Access Types via Ada.Containers
    Access Types and Addresses
    Memory Deallocation
    Storage Pools
  13. Representation Clauses
    Little Endian vs. Big Endian
  14. As a conclusion of the first part:
    In-depth treatment of Ada's Numeric Model
    Pitfalls with Unchecked_Conversion
    Abstract Operations and their Re-emergence

Advanced Course OOP

  1. Inheritance Rules Ada 83 vs. Ada 95
  2. Abstract Types and Interfaces
    Multiple Inheritance
    Classwide Operations
    Dispatching and Redispatching
  3. Hierarchical Packages and Visibility
  4. Initialization and Finalization
  5. Iterators Ada 83 to Ada 2012
  6. Representation Clauses
    Little Endian vs. Big Endian

Representation clauses are already handled in the basic course, but since they are rarely needed in common programs, they are repeated here.

Advanced Course Concurrent Processes

  1. Global Data vs. Rendezvous
  2. Processes
    Selective Wait
    Timed Entry Call
    Conditional Entry Call
    Asynchronous Transfer of Control
    Requeue
  3. Protected Objects
  4. Entry Families
  5. Priorities
  6. (Restrictions and Program Profile
    Ravenscar)
  7. (Predefined Libraries
    Container)
  8. (Special Needs Annexes)

(The topics in parentheses are only shortly mentioned.)


English nach Hause
Deutsch
Welcome Homepage

Valid HTML 4.0!