Ada Books for Undergraduate CS, New Edition 
Author Message
 Ada Books for Undergraduate CS, New Edition

An Annotated Sampling of Ada-Oriented Books
for Undergraduate Computer Science

July 1992

Michael B. Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052
(202) 994-5253

As co-chair of the SIGAda Education Committee, and a denizen of the
Internet newsgroups, I am often asked to give references for "Ada
textbooks." This list responds to these many queries. It is far from
exhaustive, merely a selected list of 26 books being used successfully
in undergraduate computer science courses.

The six books 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 seven books in Group 2 use Ada as their language of
discourse but are "subject-oriented:" data structures, file structures,
compilers, comparative languages. The thir{*filter*} 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. 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. Maciuas, and M.J. Oudshoorn.
Ada: A First Course in Programming and Software Engineering.
Addison-Wesley, 1992.
  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.

Feldman, M.B., and E.B. Koffman.
Ada: Problem Solving and Program Design.
Addison-Wesley, 1991.
  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.

Savitch, W.J. and C.G. Petersen.
Ada: an Introduction to the Art and Science of Programming.
Benjamin/Cummings, 1992.
  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 no coverage
of unconstrained array types; generics are introduced at the halfway
point to explain Text_IO, then dropped until 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.
Addison Wesley, 1988.
  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.

Volper, D., and M. Katz. Introduction to Programming Using Ada.
Prentice-Hall, 1990.
  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. (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.
Prentice Hall, 1985 (now distributed by Addison-Wesley).
(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 is currently under revision with Addison-Wesley and
should appear in 1993.

Fischer, C., and R. LeBlanc. Crafting a Compiler.
Benjamin Cummings, 1988. (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.

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. (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.
Benjamin Cummings, 1989. (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. There is a nice impartial presentation of Ada along
with the others. I especially like the chapters on  abstraction
...

read more »



Mon, 19 Dec 1994 09:22:28 GMT  
 Ada Books for Undergraduate CS, New Edition

|> An Annotated Sampling of Ada-Oriented Books

   . . .

|>
|> 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.

  We used the Schneider and Bruell text in a CS 2 course during the
spring semester.  The students learned Pascal in CS 1.  We used the
Ada supplement that goes with the book.  Mike's comments about the
supplement are fundamentally correct, but, in general, it was adequate
for the students as they made the transition from Pascal to Ada.
Naturally, as the course went on, we had to give the students
additional Ada material.

  We were very favorable impressed by the Schneider and Bruel text.  
We felt that it had only two shortcomings.  The first, after doing a
nice job introducing stacks, queues, and lists, as ADTs, there
development of trees does not start with trees as an ADT, but starts
with tree representations using pointers.  Since we had packages
that support both binary and n-ary trees, by that time in the course,
we could hold up a bit in that chapter and introduce the ADTs before
doing the chapter, which is really about representations.

  The second weakness in the book, in our opinion, was the lack of
theory material.  We would have preferred to spend some time on
program correctness (pre- post-cond., loop invariants) and see some
material on theoretical machines (FSA, PDA, turing machines).

   One real plus in the books favor is an excellent presentation,
involving four chapters, of a modernized look at the system life
cycle.

   I should mention that we had one major advantage while teaching
this course.  We received one of the DARPA grants for developing
software engineering and Ada materials.  Our grant included materials
for CS 2.  We will be making that material available via
anonymous ftp or ms-dos compatible disk by mid to late August.
We will post an announcement in this newsgroup when our materials
are ready for distribution.
--
+------------------------------------------------------------------+
|  John (Jack) Beidler                                             |



|                                                                  |
|          Phone: (717) 941-7446         FAX:   (717) 941-4250     |
+------------------------------------------------------------------+



Sat, 24 Dec 1994 01:04:09 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. transition to Ada in undergraduate CS

2. New Ada Book for CS-1

3. Dummies, -- was Ada 95 Books for Undergraduate Teaching

4. Ada 95 Books for Undergraduate Teaching

5. Ada books for undergraduate computer science

6. Some Ada Books for Undergraduate Computer Science

7. WANTED: F77 textbook for 1st undergraduate CS course

8. New edition of Ada CDROM added to Ada-Belgium archive (fwd)

9. WANTED: F77 textbook for 1st undergraduate CS course

10. New book: RMM 2nd Edition

11. New book: RMM 2nd Edition

12. New editions of reference books

 

 
Powered by phpBB® Forum Software