From: M.Kempe@ieee.org (Magnus Kempe)
Newsgroups: comp.lang.ada,comp.edu,comp.answers,news.answers
Distribution: world
Subject: Ada FAQ: Learning Ada
Followup-To: poster
Reply-To: M.Kempe@ieee.org (Magnus Kempe)
Summary: Learning Ada Frequently Asked Questions (and answers).
         Please read before posting.
         Does *not* get into Ada programming questions
           [for that see the companion Ada/programming FAQ].
Keywords: advanced language, artificial languages, computer software,
          data processing, programming languages, learning, tutorials, Ada
Organization: None

Archive-name: computer-lang/Ada/learning
Comp-lang-ada-archive-name: learning
Comp-edu-archive-name: learning-Ada
Posting-Frequency: monthly
Last-modified: 29 June 1997
Last-posted: 31 May 1996

This FAQ is maintained by Magnus Kempe
at the Ada Home, http://www.adahome.com/

Learning Ada
Frequently Asked Questions (FAQ)

Recent changes to this FAQ are listed in the first section after the table of contents. This document is under explicit copyright.

Introduction

This is a list of resources to learn Ada. This list includes interactive tutorials, books, source code collections, etc.

Ada is an advanced, modern programming language, designed and standardized to support and strongly encourage widely recognized software engineering principles: reliability, portability, modularity, reusability, programming as a human activity, efficiency, maintainability, information hiding, abstract data types, genericity, concurrent programming, object-oriented programming, etc.

All validated Ada compilers (i.e. a huge majority of the commercial Ada compilers) have passed a controlled validation process using an extensive validation suite. Ada is not a superset or extension of any other language. Ada does not allow the dangerous practices or effects of old languages, although it does provide standardized mechanisms to interface with other languages such as Fortran, Cobol, and C.

Ada is recognized as an excellent vehicle for education in programming and software engineering, including for a first programming course.

Ada is defined by an international standard (the language reference manual, or LRM), which has been revised in 1995. Ada is taught and used all around the world (not just in the USA). Ada is used in a very wide range of applications: banking, medical devices, telecommunications, air traffic control, airplanes, railroad signalling, satellites, rockets, etc.

Maintenance

This FAQ is maintained on an individual volunteer basis, by Magnus Kempe (M.Kempe@ieee.org).

The latest version of this FAQ is always accessible through the Web as http://www.adahome.com/FAQ/learning.html#title
hosted by the Ada Home, http://www.adahome.com/


Report of a product, service, or event, etc., does not constitute an endorsement. Opinions (if any) expressed are those of the submitters and/or maintainer.

Table of Contents:


1: Recent changes to this FAQ

(Up to Table of Contents)


2: Information about this document

This file is posted monthly to comp.lang.ada, comp.edu, comp.answers, and news.answers.

This document has a home on the Home of the Brave Ada Programmers (HBAP) WWW Server, in hypertext format, URL http://www.adahome.com/FAQ/learning.html#title

It is available --as posted in *.answers-- on rtfm.mit.edu, which archives all FAQ files posted to *.answers; see directory ftp://rtfm.mit.edu/pub/usenet-by-group/news.answers/computer-lang/Ada

The text-only version is also available in directory ftp://ftp.adahome.com/pub/FAQ

Magnus Kempe maintains this document; it's a hobby, not a job. Feedback (corrections, suggestions, ideas) about it is to be sent via e-mail to M.Kempe@ieee.org
Thanks.

In all cases, the most up-to-date version of the FAQ is the version maintained on the Ada Home WWW Server. Please excuse any formatting inconsistencies in the posted, text-only version of this document, as it is automatically generated from the on-line, hypertext version.

(Up to Table of Contents)


3: Are there computer-based Ada tutorials?

There are many ways to learn Ada.

Here are some on-line Ada tutorials expressly designed for self-study:

  1. Lovelace is a free (no charge) self-directed Ada 95 tutorial available on the World Wide Web (WWW), at http://www.adahome.com/Tutorials/Lovelace/lovelace.html

    Lovelace assumes that the user already knows some other algorithmic programming language (such as C, C++, or Pascal). Lovelace is interactive; it contains a number of short sections, and most short sections end with a question (to help ensure that you've understood the section's material). Lovelace can be used directly from the WWW (see above), downloaded from http://www.adahome.com/Tutorials/Lovelace/download.html

    or run from a CD-ROM, described at http://ftp.cdrom.com/titles/ada.html

    Lovelace was developed by David A. Wheeler.

  2. Learn Ada on the Web (LAW) by Dr. Fintan Culwin was developed to freely provide Ada training on the World Wide Web, at URL http://www.scism.sbu.ac.uk/law/lawhp.html

    LAW is concerned with initial software development education rather than with helping programmers who already know other computer languages. Also, LAW is concerned as much with providing software engineering tools over the Web as with presenting information regarding Ada. Dr. Culwin believes that the Lovelace and LAW projects are complementary rather than needless duplication of each other, since their target users are so different.

    LAW includes an interesting capability to interactively create Ada programs remotely over the Web; you might want to use this LAW capability even if you choose to use another tutorial.

    Dr. Culwin is at South Bank University, London, and may be contacted at fintan@vax.sbu.ac.uk

  3. Coronado Enterprises Tutorials are shareware tutorials. Their tutorial of interest to us is an Ada 83 tutorial located at http://www.swcp.com/~dodrill/adalist.html
    (the suggested fee is US$15)

  4. The C/C++ Programmers Ada Tutorial is a short hypertext tutorial, located at http://www.adahome.com/Ammo/cpp2ada.html

    for programmers who have a C or C++ style programming language background. It was written by Simon Johnson, with some additional text by Tucker Taft.

  5. Ada-Tutr is a shareware interactive Ada tutor developed by John Herro of Software Innovations Technology. You can download it from the Ada-Tutr web site, at http://members.aol.com/AdaTutor/sit.htm

    or the Ada-Tutr ftp site, located at ftp://members.aol.com/AdaTutor/sit.htm

    You can also download it by calling the SaddleBag BBS, 1-407-773-0831, and log in with the name Ada Tutor and the password tutor. The Public Ada Library's copy of Ada-Tutr (mirror) is another way to retrieve Ada-Tutr. There is also an older version of Ada-Tutr for Ada 83 (mirror). AdaTutr has a number of exercises that give a more complete understanding of Ada but will take more time to complete than a tutor without such exercises (such as Lovelace).

  6. HOT_Ada, a two-volume course/tutorial distributed on floppy disks, is available from Stage Harbor Software; it is not directly available via the WWW. It does not include a compiler. It is similar to a set of tutorial slides, except for the hyper-linking features and the fact that you can proceed at your own pace and accommodate your own learning style and needs.

    HOT_Ada is designed for individual, self-paced learning. One version runs on Macintoshes, another on PCs with Windows. The many hypertext and hypergraphic features allow you, for instance, to click on a "hot word" to see its definition in the Glossary or click on a "hot icon" in a diagram to jump to the corresponding line of Ada source code in a previously hidden listing.

    The regular price is $29 for a single volume, $49 for the two-volume set.

    E-mail inquiries welcomed at: bscrawford@aol.com. Regular mail inquiries or mail orders (specify Mac or Windows, personal checks accepted) can be sent to:

    	 Stage Harbor Software
    	 9 Patriots Drive
    	 Lexington, MA 02173
    

    What does the course cover?

    HOT_Ada is a two-volume course/tutorial, distributed on floppy disks. Volume 1, the "core" part of the course, provides a pictorial introduction to object technology (OOA and OOD presented in a language-independent manner) and a pictorial introduction to Ada 9X, with emphasis on its OOP features. Volume 2 provides an extended case study with a step-by-step illustration of the OOA, OOD and OOP concepts outlined in Volume 1. A mixture of classification and composition approaches is illustrated. The OOA and OOD material is strongly influenced by the Fusion Method, a fusion of OMT, Booch, Coad-Yourdon, et al. HOT_Ada is designed for individual, self-paced learning. One version runs on Macintoshes. Another version runs on PC's with Windows. There are many hypertext and hypergraphic features. For example, you can click on a "hot word" to see its definition in the Glossary, or click on a "hot icon" in a diagram to jump to the corresponding line of Ada source code in a previously hidden listing. A major theme of the course is the reuse of patterns and parts.

    Who can benefit from HOT_Ada?

    Several categories of people can benefit from self-study using HOT_Ada. If you are familiar with Ada 83, and have begun to study Ada 9X, you can supplement other efforts by reviewing this picture-based material and the case study. If, as an Ada software engineer, you want to learn more about object technology in general, especially the Fusion approach, HOT_Ada provides an ideal combination for learning and "tying it all together." If you are a newcomer to Ada, the visual approach of HOT_Ada may provide you with an excellent way to start your learning process -- to be followed up using traditional text and classroom methods.

    What are the System Requirements?

    How to Order by Mail?

    Write a personal check for $49 to Stage Harbor Software and mail it to Stage Harbor Software, 9 Patriots Drive, Lexington, MA 02173. Be sure to specify the Windows or Mac version of HOT_Ada, and include your e-mail address if you have one. (Credit card orders are not accepted.)

    To Order from Outside the USA

    To order from outside the USA, you can send an International Postal Money Order or have your bank wire funds to my account at
    	 The Cooperative Bank, 
    	 12 Nagog Park, Acton, MA, 01720-9890, USA,
    	 Account: Bard S. Crawford, Stage Harbor Software, 
    	 Account Number  03520457558  
    
    -- and let Bard Crawford know separately that you are doing so.

    [Source: Bard Crawford, Stage Harbor Software]

Here are some other Ada-related educational materials that you may find helpful:

  1. Introducing Ada95 is a set of slides about Ada 95 by Richard Conn, released without restrictions on its use and distribution. Here's a quote from Richard Conn:

    This is a day-long short course that introduces Ada95. The purpose of the course is to explore the Ada95 language, including its facilities for object-oriented design and programming, real-time programming, distributed processing, and other domains. The course will concentrate on the practical aspects of applying the features of Ada95 to the software development process. Numerous examples of the language are presented.

    Richard Conn's tutorial is available in Zipped Powerpoint Postscript format. (736K). A README file accompanies the tutorial.

    Free viewers for both Macintosh (602K) and PCs running Windows (1,092K) are available for those who do not own Powerpoint.

  2. Ada 95: The Next Generation, a slide set by Mike Kamrad, is available through the SIGAda server. It is available in both Powerpoint 4.0 for the Macintosh format (140K) and Powerpoint 4.0 for Windows format (84K). Free viewers for both Macintosh (602K) and PCs running Windows (1,092K) are available for those who do not own Powerpoint.

  3. ASSET maintains a collection of Ada-related courseware; see ASSET's WWW page for more information.

  4. Other PAL Courseware (mirror) products are available by FTP (in addition to AdaTutr and Lovelace, listed above). Walnut Creek mirrors the PAL onto its Ada CD-ROM. A copy of the Ada CD-ROM is available on-line.

  5. An "Academic Ada" package developed by Intermetrics and Aonix is available for Windows 95/NT.

(Up to Table of Contents)


4: Is there a list of good Ada books?

Magnus Kempe and Mike Feldman maintain annotated bibliographies. They are selected lists of useful books, with capsule reviews.

Ada 95 Books: Brief Reviews


Ada 83 Books: An Annotated Sampling of Ada-Oriented Textbooks

August 1995

Michael B. Feldman
Education Working Group Chair, ACM Special Interest Group on Ada (SIGAda)
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
(202) 994-5919 (voice)
(202) 994-0227 (fax)
mfeldman@seas.gwu.edu
http://www.seas.gwu.edu/faculty/mfeldman/

(with contributions from Jack Beidler, Duane Jarc, Suzanne Pawlan Levy, Mathew Lodge, Pat Rogers, and David Weller, as indicated by their initials following their reviews)

As chair of the SIGAda Education Working Group, and a denizen of the Internet newsgroups, I am often asked to give references for "Ada textbooks." This list responds to these many queries for Ada 83.

The textbooks in the Group 1 are written especially for students without programming experience, who are learning Ada as their first language. Most of these can also cover at least part of a typical CS2-level course. The books in Group 2 use Ada as their language of discourse but are "subject-oriented:" data structures, file structures, compilers, comparative languages. The remaining books in Group 3 are either "Ada books" focusing on the language features or more general books that use Ada, at least in part, but do not fit obviously into a standard curriculum "pigeonhole."

I invite you to add to the list. Please write your annotated entry in the form I have used here and write or e-mail it to me, mfeldman@seas.gwu.edu . I will include it in my next version and credit you as a co-compiler of the list.

Disclaimers: I wrote two of the texts listed here; I hope the annotations are impartial enough. And any annotated bibliography is selective and opinionated. Your mileage may vary.


Group 1: Books Suitable for a First Course in Programming with Ada 83

Bover, D.C.C., K.J. Maciunas, and M.J. Oudshoorn.
Ada: A First Course in Programming and Software Engineering.
Addison-Wesley, 1992. ISBN 0-201-50992-X
This work is, to our knowledge, the first Ada book to emerge from Australia, from a group of authors with much collective experience in teaching Ada to first-year students. A number of interesting examples are presented, for example, an Othello game. The book is full of gentle humor, a definite advantage in a world of dry and serious texts. In the book's favor is the large number of complete programs. On the other hand, it is rather "European" in its terseness; American teachers may miss the pedagogical apparatus and "hand-holding" typically found in today's CS1 books. Generic units are hardly mentioned.

Culwin, F.
Ada: a Developmental Approach.
Prentice-Hall, 1992.
This work introduces Ada along with a good first-year approach to software development methodology. Much attention is paid to program design, documentation, and testing. Enough material is present in data structures and algorithm analysis is present to carry a CS2 course. A drawback of the book is that the first third is quite "Pascal-like" in its presentation order: procedures, including nested ones, are presented rather early, and packages are deferred until nearly the middle of the book. This is certainly not a fatal flaw, but it will frustrate teachers wishing a more package-oriented presentation. The programs and solutions are apparently available from the author.

Dale, N., D. Weems, and J. McCormick.
Programming and Problem Solving with Ada.
D. C. Heath, 1994. ISBN 0-669-29360-1
This book is inspired by Dale and Weems' very successful Introduction to Pascal and Structured Design, but it is not simply an Ada version. Ada's more advanced capabilities such as exceptions, packages and generic units are included in this text. In addition, more than half of the material is completely new, and the order of the topics is signficantly different. It also has more of a software engineering focus than the Pascal version. The only Ada topics not included in this text are tasks and access types. Procedures and packages are introduced early. Each chapter includes case studies, testing and debugging hints and excellent non-programming exercises and programming problems. The text comes with a program disk containing all the programs given in the book. In addition, a validated Meridian Ada compiler with complete documentation is available at low cost to students using this book. (S. P. L.)

DeLillo, N. J.
A First Course in Computer Science with Ada.
Irwin, 1993. (ISBN 0-256-12538-4)
This book is a first in the Ada literature: a version comes with an Ada compiler, the AETech-IntegrAda version of Janus Ada. Author, publisher, and software supplier are to be commended for their courage in this. The book itself covers all the usual CS1 topics. In my opinion, the order of presentation is a bit too Pascal-like, with functions and procedures introduced in Chapter 5 (of 15) and no sign of packages (other than Text_IO) until Chapter 10. Unconstrained arrays and generics are, however, done nicely for this level, and Chapter 13 is entirely devoted to a single nontrivial case study, a statistical package. I wish there were more complete programs in the early chapters, to put the (otherwise good) discussion of control and data structures in better context.

Feldman, M.B., and E.B. Koffman.
Ada: Problem Solving and Program Design.
Addison-Wesley, 1992. ISBN 0-201-53364-2
This work combines the successful material from Koffman's CS1 pedagogy with a software-engineering-oriented Ada presentation order. Packages are introduced early and emphasized heavily; chapters on abstract data types, unconstrained arrays, generics, recursion, and dynamic data structures appear later. The last five chapters, combined with some language-independent algorithm theory, can serve as the basis of a CS2 course. A diskette with all the fully-worked packages and examples (about 180) is included; the instructor's manual contains a diskette with project solutions. A second edition, with Ada 95 as the language, is in preparation and due out at the beginning of 1996.

Savitch, W.J. and C.G. Petersen.
Ada: an Introduction to the Art and Science of Programming.
Benjamin/Cummings, 1992. ISBN 0-8053-7070-6
This is a straightforward adaptation of the well-known Savitch Pascal books. Ada is introduced in a Pascal-like order, with subtypes and packages introduced halfway through the book. This is purely a CS1 book. The final chapter covers dynamic data structures. There is minimal coverage of unconstrained array types; generics are introduced at the halfway point to explain Text_IO, then continued only in the final chapter. The authors intended this book to provide a painless transition to Ada for teachers of Pascal; one wishes they had taken advantage of the chance to show some of the interesting Ada concepts as well. Program examples from the text are available on disk, but only as part of the instructor's manual; a solutions disk is available for a fee from the authors.

Skansholm, J.
Ada from the Beginning. (2nd ed.)
Addison Wesley, 1994. ISBN 0-201-62448-6
This book was one of the first to use Ada with CS1-style pedagogy. There are excellent sections on the idiosyncracies of interactive I/O (a problem in all languages), and a sufficient number of fully-worked examples to satisfy students. Generics, linked lists and recursion are covered at the end; there is no tasking coverage, but one would not expect this at CS1-level. A very interesting addition is the new Chapter 14, in which OOP in both Ada 83 and Ada 95 is discussed. This is an especially lucid explanation of OOP in Ada, and makes a real contribution because it doesn't just discuss tagged types as a "feature" of Ada 95, but shows very nicely what is possible in Ada 83 (instead of just what is _not_ possible), and shows how Ada 95 adds functionality.

Smith, J. F., and T. S. Frank
Introduction to Programming Concepts and Methods with Ada
McGraw-Hill, Inc., 1994 ISBN 0-07-911725-2
This is a well written and easy to use text. The book takes a spiraled approach to CS 1. The authors do an excellent job integrating Ada into the book. They take a very direct approach, especially with an early introduction to the package concept and the traditional Text_IO package. Faculty who have taught CS 1 with Pascal should like this book. Instead of making a big fanfare about Ada features, they simply introduce them as good support for software development concepts. The authors have carefully chosen the Ada topics they decided to cover in this book in order to strike a balance between staying true to the CS 1 course while presenting enough of the programming language. If you teach CS 1 you might at least want to get a copy of this text just to look at two chapters, Chapter 7 and Chapter 14. Seven covers program correctness and run-time event (exception handling) and fourteen is a beautiful presentation and example of generic packaging. Both presentations are done in an appropriate manner for CS 1. (J. B.)

Volper, D., and M. Katz.
Introduction to Programming Using Ada.
Prentice-Hall, 1990. ISBN 0-13-493529-2
This book uses a heavily "spiraled" approach to Ada, and is designed for a 2-semester course, covering nearly all of Ada eventually. There are lots of fully-coded examples, and good pedagogical sections on testing, coding style, etc. If you like spiraling, you'll like this. The down side is that you can't find all you need on a given subject in one place. It's at the other end of the scale from the "Ada books" that follow the Ada Language Reference Manual (LRM) order.


Group 2: Other Ada 83 Books Intended for Undergraduate Courses

Ben-Ari, M.
Principles of Concurrent and Distributed Programming.
Prentice-Hall 1990. ISBN 0-13-711821-X
(OS/concurrency)
In my opinion, this is the best introduction to concurrency on the market. Ada notation is used for everything, but the focus is on concurrency and not on Ada constructs per se. I liked the CoPascal notation of the first edition better, but this book is still great. A software disk is promised in the preface; I had to work quite hard to get it from the publisher, which finally had to express-ship it from England. The software comes with a tiny Ada-ish interpreter, complete with Pascal source code, adapted from Wirth's Pascal/S via CoPascal. There are also some real Ada programs, most of which I've tested and found correct and portable.

Feldman, M.B.
Data Structures with Ada.
Addison Wesley, 1993. ISBN 0-201-52673-5
(CS2/data structures)
This book is a reasonable approximation to a modern CS2 book: "big O" analysis, linked lists, queues and stacks, graphs, trees, hash methods, and sorting, are all covered. The Ada is a bit old-fashioned, especially the lack of generics; the book was published before compilers could handle generics. The packages and other programs are available free from the author. The book has been heavily revised; the Ada 95-based second edition should appear early in 1996 from Addison-Wesley.

Fischer, C., and R. LeBlanc.
Crafting a Compiler.
Benjamin Cummings, 1988. ISBN 0-8053-3201-4
(compilers)
This book uses Ada as its language of discourse and Ada/CS, a usefully large Ada subset, as the language being compiled. If you can get the "plain Pascal" tool software by ftp from the authors, you'll have a good translator-writing toolset. Skip the Turbo Pascal diskette version, which is missing too many pieces to be useful. I've used the book since it came out with both undergrad and graduate compiler courses; it embodies a good blend of theory and "how it's really done" coding. Students like it. The authors have recently published a second version, which uses C as its coding language but retains Ada/CS as the language being compiled.

Hillam, B.
Introduction to Abstract Data Types Using Ada.
Prentice-Hall, 1994. ISBN 0-13-045949-6
(data structures)
This is a very readable treatment of data structures presented using Ada that makes good use of Ada features such as generics. It contain many complete programs and packages. Unfortunately, obvious syntax errors make it apparent that not all examples have been compiled. The level of presentation is somewhere between an elementary, CS 2, data structures course and an advanced, CS 7, course. A subset of first eleven chapters provide the appropriate topics for a CS 2 course, but not the pedagogy necessary for a course at that level. (D. J.)

Lomuto, N.
Problem-Solving Methods with Examples in Ada.
Prentice-Hall, 1987.
(algorithms)
Inspired by Polya's classic How to Solve It, this book can make a nice addition to an Ada-oriented algorithms course. It makes too many assumptions about students' programming background to use as a CS1 book, and doesn't teach enough Ada to be an "Ada book." But it makes nice reading for students sophisticated enough to handle it. I'd classify it as similar to Bentley's Programming Pearls.

Miller, N.E. and C.G. Petersen.
File Structures with Ada.
Benjamin/Cummings, 1990. ISBN 0-8053-0440-1
(file structures)
Designed for a straightforward ACM-curriculum file structures course, this book succeeds at what it does. There are good discussions of ISAM and B-tree organizations. The software can be purchased a low cost from the authors; it seems to approximate in Ada all those C-based file packages advertised in programmer-oriented trade publications.

Schneider, G.M., and S.C. Bruell.
Concepts in Data Structures and Software Development
(with Ada Supplement by P. Texel).

West, 1991.
(CS2/data structures)
This work is not, strictly speaking, an Ada book; rather, it is a solid, language-independent approach to modern CS2. The language of discourse in the book is a Pascal-like ADT language rather like Modula-2 in style; some examples are coded in legal Pascal. The Ada supplement makes it usable in an Ada-based course, but the supplement is rather too terse (100 pages of large type) for my taste, and insufficiently well keyed to the book chapters. The supplement's effectiveness would be greatly enhanced by full translations to Ada of a large number of the book's examples.

Sebesta, R.W.
Concepts of Programming Languages (2nd ed.).
Benjamin Cummings, 1993. ISBN 0-8053-7132-X
(comparative languages)
If you've been around for a while, you might remember the late Mark Elson's 1975 book by the same title. This is similar: a concept-by- concept presentation, with -- in each chapter -- examples taken from several languages. I include this work in an "Ada list" because I like its nice, impartial coverage of Ada. I especially like the chapters on abstraction and exception handling. The book covers -- comparatively, of course -- most of the lanuages you'd like to see, including C, C++, Lisp, Smalltalk, etc., with nice historical chapters as well. The book is readable; my students like it. Our undergraduate and graduate courses both use it as a base text.

Stubbs, D.F., and N.W. Webre.
Data Structures with Abstract Data Types and Ada.
PWS-Kent, 1993. ISBN 0-534-14448-9
(advanced data structures)
This work updates and adapts to Ada the material in the authors' successful data structures texts using Pascal and Modula-2. It is good for a "heavy" CS2, i.e., one on the theoretical side, or a "light" CS7, i.e. it is not as theory-oriented as the Weiss work below. More Ada, especially regarding advanced types, is taught here than in Weiss. Especially interesting about all the books from these authors is that they have matched their "big O" performance prediction with tables and graphs showing actual performance measurements.

Weiss, M.A.
Data Structures and Algorithms in Ada.
Benjamin/Cummings, 1993. ISBN 0-8053-9055-3
I think this book reaches its intended market -- data structures courses (CS7) -- rather well with Ada. There's a good mixture of theory and practice (ADT design, for example), and coverage of new topics like amortized algorithm analysis and splay trees. A book at this level should not pay too much attention to teaching a language; rather it should make good use of its language of discourse. The Ada version does not attempt to teach either the language or Ada-style software engineering, but shows good understanding of the language, uses generic packages quite well and focuses on the theory of algorithms, as a book at this level should. This is the first, and so far the only, text in Ada for this course.


Group 3: A Selection of Other Ada 83-Related Books

Barnes, J. G. P.
Programming in Ada. (4th edition)
Addison-Wesley, 1994. ISBN 0-201-62407-9
Barnes' work has been one of the most popular "Ada books." Some students find it hard to see how the pieces fit together from Barnes' often fragmentary examples; it is difficult to find complete, fully-worked out, compilable programs. On the other hand, this book has been a real best-seller, so Barnes clearly is doing something right. The fourth edition has a 100-page summary of Ada 95, and a fully-integrated Ada 95 fifth edition is in production for Fall 1995 release. Also, the third (Ada 83) edition is still in print, with an Ada 83 reference manual included.

Booch, G.
Software Components with Ada.
Benjamin Cummings, 1987. ISBN 0-8053-0610-2
This work is an encyclopedic presentation of data structure packages from Booch's OOD point of view. It is great for those who love taxonomies. It's not for the faint-hearted, because the volume of material can be overwhelming. It could serve as a text for an advanced data structures course, but it's thin in "big O" analysis and other algorithm-theory matters. The book is keyed to the (purchasable) Booch Components.

Booch, G. and D. Bryan, with C. Petersen
Software Engineering with Ada. (3rd edition)
Benjamin/Cummings 1994. ISBN 0-8053-0613-7
Another of the classical "Ada books." Introduces Booch's OOD ideas. Not for use to introduce Ada to novices, in my opinion; there are some nice fully-worked case studies but they begin too far into the book, after long sections on design, philosophy, and language elements. The earlier chapters contain too much fragmentary code, a common flaw in books that follow the LRM order. The third edition contains an appendix describing Ada 9X.

Bryan, D.L., and G.O. Mendal.
Exploring Ada, Volumes 1.and 2.
Prentice-Hall, 1990 and 1992 respectively. ISBN 0-13-295684 (vol. 1); ISBN 0-13-297227-1 (vol. 2)
This is an excellent study of some of the interesting nooks and crannies of Ada; it sometimes gets tricky and "language-lawyerly." Volume 2 takes up tasking, generics, exceptions, derived types, scope and visibility; Volume 1 covers everything else. The programs are short and narrowly focused on specific language issues. If you like Bryan's "Dear Ada" column in Ada Letters, you'll like this book. It is certainly not a book for beginners, but great fun for those who know Ada already and wish to explore.

Burns, A., and G. Davies.
Concurrent Programming.
Addison-Wesley, 1993, ISBN 0-201-54417-2
Solid book covering all aspects of writing concurrent software. Uses a version of Pascal called FC-Pascal (available for free through the Internet). The FC means "Functionally Concurrent". It has constructs that are similar to Ada 9X, and this is by no accident -- the authors frequently point out that the implementations in FC-Pascal are taken from Ada 9X's Tasks and Protected Types. Covers lots of low-level problems by gradually building up from simple examples. Highly recommended for a Concurrent Programming class. Exercises and Further readings are provided at the end of each chapter. (D.W.)

Burns, A. and A. Wellings.
Real Time Systems and their Programming Languages
Addison-Wesley 1990. (ISBN 0-201-17529-0)
This is an excellent and unique book. Basic concepts and terminology are explained before moving on to explain the major aspects of real time design. "Real world" examples are presented in Ada, Modula-2 and occam 2, though Ada is clearly the authors' language of choice and gets the most coverage. Topics covered include reliability and fault tolerance, concurrency, synchronisation, scheduling, message passing, atomic transactions, resource control, distributed systems and low-level device control. Efficiency is not neglected, and Ada support here is particularly strong with detail on the CIFO package. Several case studies are also presented. The only failing of the book is that it needs updating to cover Ada 9x and its real-time annex, Modula-3 etc. However, the basic concepts that the authors convey so clearly are independent of implementation language. (M. L.)

Cohen, N.
Ada as a Second Language.
McGraw Hill, 1986. ISBN 0-07-011589-3
This book is a quite comprehensive exploration of Ada which follows the LRM in its presentation order. My graduate students like it because it is more detailed and complete than alternative texts. It's an excellent book for students who know their languages and want to study all of Ada. There are good discussions of "why's and wherefore's" and many long, fully-worked examples. An anxiously-awaited 2nd edition covering Ada 95 is in the pipeline.

Gauthier, M.
Ada: Un Apprentissage (in French).
Dunod, 1989.
Ada: a Professional Course (in English).
Macmillan Computer Science Series, 1993. ISBN 0-333-58001-X.
I found this an especially interesting, almost philosophical approach to Ada. The first section presents Ada in the context of more general laguage principles: types, genericity, reusability. The second section introduces testing and documentation concerns, as well as tasking; the third considers generics and variant records in the more general context of polymorphism. For mature Ada students in the French-speaking world, and others who can follow technical French, this book can serve as a different slant on the conventional presentations of the language. The more recent English edition is a contribution to the Ada literature in English, because of its getting behind the language itself into the more general language-design principles.

Gehani, N.
Ada: an Advanced Introduction (2nd edition).
Prentice-Hall, 1989. ISBN 0-13-004334-6
I've always liked Gehani's literate writing style; he knows his languages and treats Ada in an interesting, mature, and balanced fashion. This book comes with a diskette sealed in the back of the book, which is advantageous because the book has numerous nontrivial, fully- worked examples.

Gehani, N.
Ada: Concurrent Programming (2nd edition).
Silicon Press, 1991. ISBN 0-929306-08-2
This is a less formal, more Ada-oriented presentation of concurrency than the Ben-Ari work. I use both books in my concurrency course; its real strength is the large number of nontrivial, fully worked examples. Gehani offers a nice critique of the tasking model from the point of view of an OS person. The preface promises the availability of a software disk from the publisher.

Nyberg, K. (editor)
The Annotated Ada Reference Manual. (3rd edition)
Grebyn Corporation, 1993.
This is the definitive work on Ada 83 legalities, because it presents not only the full text of the LRM but also the official Ada Interpretations as prepared by the Ada Rapporteur Group of Working Group 9 of the International Organization for Standardization (ISO) and approved by that organization. These commentaries, interleaved with the LRM text, are promulgated by the Ada Joint Program Office, the American National Standards Institute (ANSI) agent for Ada, in the Ada Compiler Validation Suite (ACVC). They are thus binding upon compiler developers. I recommend this book as an essential volume in the library of every serious Ada enthusiast.

Watt, D.A., B.A. Wichmann, and W. Findlay.
Ada Language and Methodology.
Prentice-Hall, 1987. ISBN 0-13-004078-9
This work presents some interesting programming projects, and the coverage of design and testing--at the level of a first-year student--is quite good. The first third of the book concentrates heavily on classical control and data structures, leaving subprograms until Chapter 12, and exceptions and packages until the "programming in the large" material in the second third. CS2 teachers will find too little concentration on algorithm analysis. On the other hand, tasking and machine-dependent programming are covered. Like the Shumate work, this book would make a suitable introduction to Ada for students with a semester or so of programming experience; it "jumps in" too quickly to satisfy the needs of neophytes and is not well-tailored to CS1 or CS2 needs.


5: Credits

The following persons have contributed to the information gathered in this FAQ: Michael Feldman--who created the original annotated lists of Ada books, David A. Wheeler--who developed the original version of the tutorials list, and Gordon Dodrill.

The maintainer has simply :-) organized, polished, or added some information for your satisfaction.

(Up to Table of Contents)


11: Copying this FAQ

This FAQ is Copyright © 1996-1997 by Magnus Kempe. It may be freely redistributed --as posted by the copyright holder in comp.lang.ada and comp.edu-- in other forums than Usenet News as long as it is completely unmodified and that no attempt is made to restrict any recipient from redistributing it on the same terms. It may not be sold or incorporated into commercial documents or products without the explicit written permission of the copyright holder.

Permission is granted for this document to be made available under the same conditions for file transfer from sites offering unrestricted file transfer on the Internet and from Forums on e.g. Compuserve and Bix.

This document is provided as is, without any warranty.

(Up to Table of Contents)


Magnus Kempe -- M.Kempe@ieee.org