home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-06-03 | 55.1 KB | 1,094 lines |
- Archive-name: computer-lang/Ada/learning
- Comp-lang-ada-archive-name: learning
- Comp-edu-archive-name: learning-Ada
- Posting-Frequency: monthly
- Last-modified: 31 May 1996
- Last-posted: 22 April 1996
-
- 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.
-
- The latest version of this FAQ is always accessible through WWW as
- http://lglwww.epfl.ch/Ada/FAQ/learning.html#title
-
- Maintenance
-
- This FAQ is maintained on an individual volunteer basis, by Magnus Kempe
- (Magnus.Kempe@di.epfl.ch). [Note: This is done as a hobby, not in my
- capacity as an employee at the Swiss Federal Institute of Technology. --MK]
-
- ----------------------------------------------------------------------------
- Report of a book, 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 the FAQ
-
- * 2: Information about this document
-
- * 3: Are there computer-based Ada tutorials?
-
- * 4: Is there a list of good Ada books?
-
- o Ada 95 Books
- o Group 1: Books Suitable for a First Course in Programming
- o Group 2: Other Books Intended for Undergraduate Courses
- o Group 3: A Selection of Other Ada-Related Books
-
- * 5: Credits
-
- * 6: Copying this FAQ
-
- ----------------------------------------------------------------------------
-
- 1: Recent changes to this FAQ
-
- * 950531: updated list of tutorials.
- * 950522: approved for posting in *.answers.
- * 960309: added list of Ada 95 books.
- * 960128: created, with contributions from David Wheeler and Mike
- Feldman.
-
- ----------------------------------------------------------------------------
-
- 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://lglwww.epfl.ch/Ada/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://lglftp.epfl.ch/pub/Ada/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
- Magnus.Kempe@di.epfl.ch
- Thanks.
-
- In all cases, the most up-to-date version of the FAQ is the version
- maintained on the HBAP 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.
-
- ----------------------------------------------------------------------------
-
- 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://lglwww.epfl.ch/Ada/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://lglwww.epfl.ch/Ada/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://lglwww.epfl.ch/Ada/Ammo/Cplpl2Ada.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?
-
- o PC: Any PC with Windows Version 3.0 or later should be fine. You
- will need about six MB of free space on your hard disk.(Two MB for
- the ToolBook runtime and three MB for the two volumes of HOT_Ada.)
- The beta version had been distributed on 4 disks. Version 1.1 (and
- now Version 1.2) has been compressed, and is being delivered on a
- single disk. You will need to "unzip" it.
-
- o Mac: Any reasonably modern Mac (e.g., Mac II or PowerBook) with
- two MB of RAM or more should work OK, but older "small screen"
- Macs will be awkward, due to a lot of graphical scrolling that
- will be needed. Version 1.1 (and now Version 1.2) is being
- delivered on two disks, without compression. (Each disk contains
- the HyperCard runtime integrated with a volume of HOT_Ada.) You
- will need about three MB of free space on your hard disk.
-
- 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 is being developed by Intermetrics. The
- expected date for the beta version for Windows NT is March 1996, with
- final versions out May 1996 (Windows NT) and Summer 1996 (other
- platforms).
-
- ----------------------------------------------------------------------------
-
- 4: Is there a list of good Ada books?
-
- Mike Feldman maintains annotated bibliographies. they are selected lists of
- useful books, with capsule reviews. You are invited to write reviews.
-
- 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/
-
- Ada 95 Textbooks: Brief Reviews
-
- February 1996
-
-
-
- This bibliography is a project of the SIGAda Education Working Group. I am
- serving as the editor of the list, and the contact point for sending in
- reviews, but there are many reviewers. You too can be one! Just send a
- capsule review, in the form of the ones here, and I will be glad to add it
- to the list and credit you for the contribution.
-
- Reviewers in this edition are Ted Baker, Jack Beidler, Michael Feldman, Stan
- Kwasny, and Pat Rogers. Their initials appear after their respective
- reviews.
-
- There are nine books listed here; within each category, books are listed
- alphabetically by author. I am informed of three more books in the pipeline,
- all from Springer Verlag: an advanced data structures text by Jack Beidler,
- an Ada 95 book for C and C++ programmers by Simon Johnston, and a book
- version of David Wheeler's Lovelace, a very well-received Ada 95 tutorial on
- the World Wide Web.
-
- Group 1: Books Suitable for a First Course in Programming
-
- Ada 95: Problem Solving and Program Design.
- Michael Feldman and Elliot Koffman.
- Addison-Wesley, 1996. (ISBN 0-201-87009-6)
- As with the earlier edition by the same authors, the first 2/3 of the
- book is suitable as a CS1 text with Ada as the language of instruction,
- and the the last few chapters, combined with some language-independent
- algorithm theory, cover the rest of the Ada langauge in sufficient
- depth to serve as the language-specific basis of a CS2 course.
-
- The style is like that of a musical fugue: sections that develop
- general programming and problem solving techniques are interleaved with
- sections that develop successively larger subsets of the Ada 95
- language and libraries; examples recur from one chapter to another, in
- progressively more completely developed forms. Packages are introduced
- from the start; other language features are introduced very gradually
- at first and then at a progressively faster pace. Loops come up in
- chapter 5, records and arrays by chapter 8, generics by chapter 11, and
- pointers, tagged types, and tasks in chapters 14-16. The nearly 200
- examples have all been compiled and tested, and are available in
- electronic format from the first author, the Addison Wesley home page,
- and the usual Ada archives.(T.B.)
-
- Ada from the Beginning. (2nd ed.)
- Jan Skansholm.
- 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. Because the book was published before the Ada 95
- standard was finalized, there are necessarily some inconsistencies.
- These are minor and, we hope, will be corrected as the book is
- reprinted.(M.B.F.)
-
- Group 2: Books on Specific Topics, with Ada 95 as the Language of Discourse
-
- Concurrency In Ada
- Alan Burns and Andy Wellings.
- Cambridge University Press, 1995. (ISBN 0-521-41471-7)
- (Concurrent Programming and Real-Time Systems)
- The ultimate Ada concurrency book (Burns' "Concurrent Programming In
- Ada") has a successor for Ada95. Written by acknowledged real-time
- experts, it covers the tasking model in great depth, including all the
- existing and new capabilities as well as the Systems Programming Annex,
- the Real-Time Systems Annex, and the Distributed Systems Annex. Also
- included are an introduction to concurrent programming and an
- examination of the interaction of the tasking facilities with those for
- object-oriented programming. More than just a detailed language
- examination, the book offers many examples of usage and analysis of
- feature interaction that only these two authors could provide. Highly
- recommended for introductory and advanced courses in concurrent and
- real-time programming with Ada. (P.R.)
-
- Software Construction and Data Structures with Ada 95.
- Michael B. Feldman
- Addison Wesley, 1996. (ISBN 0-201-88795-9)
- (CS2/data structures)
- As a book about data structures, this well-written, teachable book
- assumes a base knowledge of Ada, although a quick review of the basics
- is included.
-
- Ada95 features are incorporated smoothly into the discussion and the
- coded examples (which are available from the author). The book strikes
- a nice balance between theoretical issues and practice with a wealth of
- examples and much attention to detail, including a nice discussion on
- how to time a program. The extensive material coverage includes
- standard CS2 topics like "big O" analysis, linked lists, queues and
- stacks, graphs, trees, hash methods, and sorting, but the reader is
- allowed to investigate topics beyond the basics through additional
- topics like strings, vectors, tables, file I/O, sets, priority queues,
- AVL trees, and B-Trees, and several complete and illustrative examples,
- including an employee database, an airline passenger list, an RPN
- calculator, a discrete simulation, and even a simple window manager.
-
- By introducing generic units relatively early (chapter 5), the text can
- focus on reusability and sound software engineering solutions to a wide
- variety of data structures problems, but never neglects the underlying
- analysis. As a capstone to the development of several generic data
- structures, chapter 14 covers generic sorting according to a wide
- variety of methods each with its own data structure nuances. The final
- chapter introduces concurrency.
-
- This book is in final production for publication in May, 1996. The
- nearly 200 programs and packages have all been compiled and tested, and
- are available in electronic form from the author, the Addison Wesley
- home page, and the usual Ada archives.(S.C.K.)
-
- Methodes de Genie Logiciel avec Ada 95 (in French)
- (Software Engineering Methods with Ada 95)
- Jean-Pierre Rosen
- Paris, InterEditions, 1995. (ISBN 2-7296-0569-X)
- (Software Engineering)
- This is a very interesting book written by a long-standing expert in
- Ada and software engineering. Various methodologies are compared
- (Booch, HOOD, Schlaer-Mellor, etc.), all in the context of Ada 95 but
- not limited to language-specific discussions. Enough Ada 95
- fundamentals are taught that it should not be necessary to know Ada 95
- before reading the book, but this is not a book for people without some
- programming background.
-
- Recommended for classes taught in French and for individuals with a
- good reading knowledge of French. The author is developing an English
- translation, which I await enthusiastically. (M.B.F.)
-
- Object-Oriented Software in Ada 95
- Michael A. Smith.
- International Thomson Computer Press, 1996. (ISBN 1-85032-185-X)
- (Object-Oriented Programming for Advanced Undergraduates)
- This book begins by providing an introduction to problem solving using
- a Fusion-based object-oriented design methodology, in addition to
- examining the basic constructs in the Ada 95 language. The book then
- moves on to discuss the object-oriented features of the language, using
- numerous examples to illustrate the ideas of encapsulation,
- inheritance, and polymorphism. The book's capstone is a detailed case
- study of the design and implementation of a textual user interface
- (TUI) using object-oriented design methodology. This is a nice,
- understandable, straightforward book on OOP with Ada 95, quite suitable
- for self-study or an advanced undergraduate course. The brief survey of
- Ada 95 at the beginning should be sufficient for readers with
- programming experience. The several dozen source code files are
- available on the Internet.
-
- Group 3: General Texts Covering All of Ada 95
-
- Programming In Ada 95, first edition
- John Barnes.
- Addison-Wesley, 1995. (ISBN 0-201-87700-7)
- This new book by John Barnes continues a tradition of easy readability
- that belies the depth of understanding required to make a complex
- subject accessible. Though a new book for a new Ada, the style and
- humor from the earlier book remain. The new Ada standard is covered as
- a language in its own right, with few references to its predecessor
- beyond a summary of language differences in each chapter. The core
- facilities are covered extensively, with emphasis on rationale and the
- "programming in the large" issues of abstraction, OOP, tasking and
- exceptions. Of particular value is the chapter entitled Object Oriented
- Techniques, which explores the application of the OOP, tasking and
- generic unit facilities explained earlier in the book. Each chapter
- contains coding exercises for further study, with fullly worked-out
- answers in the back. The many who appreciated the earlier book will
- likewise enjoy this, the new classic on Ada95. Highly recommended for
- readers with programming experience. (P.R.)
-
- Ada as a Second Language (2nd Edition)
- Norman Cohen.
- McGraw Hill, 1996. (ISBN 0-07-011607-5)
- This is more like a new book than like a new edition. The first edition
- of this book was a excellent reference to Ada(83), well organized and
- filled with excellent examples of realistic code sequences. It was the
- perfect reference to the language for those with substantial
- programming experience in another programming language. One of the more
- important features of the first edition is a well constructed index,
- which becomes the major passageway into the book as it grows old and
- worn.
-
- That was the first edition, the second edition builds upon the
- excellent organization that made the first edition an excellent
- reference and adds material on the new features in Ada(95). To be more
- precise, the new material is not added, it is integrated into a
- seamless reference to Ada(95). The book is composed into twenty well
- focused chapters and five appendices, including an appendix on the
- special needs annexes. Each chapter concludes with two sections, one on
- differences between Ada(83) and Ada(95), and a very brief chapter
- summary. Isolating the discussion of '83 versus '95 differences to a
- single section in each chapter has kept the rest of the presentation in
- each chapter clean and to the point.
-
- As an example of the quality in this book, consider Chapter Twelve,
- Classwide Programming. This is the chapter that describes Ada's object
- oriented programming support. Again the word "seamless" comes to mind.
- Unless you know ahead of time what are the new features in the language
- and what are the old features, you could not tell from the
- presentation. Polymorphism, type extension, dispatching are presented
- in a clear direct way, with excellent sample pieces of code. I was
- particularly impressed by the clean presentation of Ada.Finalization,
- and the realistic easy to follow sample code for the Initialize,
- Finalize, and Adjust procedures.
-
- In conclusion, "Ada as a Second Language, is the best non-language
- lawyer reference to Ada(95), even for those whose first language is
- Ada(83). (J.B.)
-
- Rendezvous with Ada 95
- David J. Naiditch.
- John Wiley and Sons, 1995. (ISBN 0-471-01276-9)
- This book is a revision of Naiditch's earlier "quick introduction" to
- Ada for experienced programmers. The second edition is no longer
- "quick" (it is nearly 150 pages longer) but is the best integrated
- introduction to Ada 95 to appear thus far. One wishes only that the
- author had provided more complete, compilable examples instead of the
- fragments so typical of Ada texts. (M.B.F.)
-
- ----------------------------------------------------------------------------
-
- An Annotated Sampling of Ada-Oriented Textbooks
-
- August 1995
-
- (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.
-
- * Group 1: Books Suitable for a First Course in Programming
- * Group 2: Other Books Intended for Undergraduate Courses
- * Group 3: A Selection of Other Ada-Related Books
-
- 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
-
- 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 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-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.
- Concurrency In Ada.
- Cambridge University Press, 1995. ISBN 0-521-41471-7
- The ultimate Ada concurrency book (Burns' Concurrent Programming In
- Ada) has a successor for Ada95. Written by acknowledged real-time
- experts, it covers the tasking model in great depth, including all the
- existing and new capabilities as well as the Systems Programming Annex,
- the Real-Time Systems Annex, and the Distributed Systems Annex. Also
- included are an introduction to concurrent programming and an
- examination of the interaction of the tasking facilities with those for
- object-oriented programming. More than just a detailed language
- examination, the book offers many examples of usage and analysis of
- feature interaction that only these two authors could provide. Highly
- recommended for introductory and advanced courses in concurrent and
- real-time programming with Ada. (P.R.)
-
- 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.
-
- Naiditch, D.J.
- Rendezvous with Ada 95
- New York: John Wiley and Sons, 1995. ISBN 0-471-01276-9
- This book is a revision of Naiditch's earlier "quick introduction" to
- Ada for experienced programmers. The second edition is no longer
- "quick" (it is nearly 150 pages longer) but is the best integrated
- introduction to Ada 95 to appear thus far. One wishes only that the
- author had provided more complete, compilable examples instead of the
- fragments so typical of Ada texts. Nevertheless, I recommend it as the
- best introduction to Ada 95 at this point.
-
- Nyberg, K. (editor)
- The Annotated Ada Reference Manual. (3rd edition)
- Grebyn Corporation, 1993.
- This is the definitive work on Ada 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 maintains the 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.
-
- ----------------------------------------------------------------------------
-
- 6: Copying this FAQ
-
- This FAQ is Copyright ⌐ 1996 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 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.
-
- ----------------------------------------------------------------------------
- Magnus Kempe -- Magnus.Kempe@di.epfl.ch
-