[comp.lang.ada] Ada books for undergraduate computer science

mfeldman@seas.gwu.edu (Michael Feldman) (05/31/91)

A Sampling of Ada-Oriented Books for Undergraduate Computer Science
May 1991

Michael B. Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052

202-994-5253
mfeldman@seas.gwu.edu

This is not an exhaustive list, merely a selected list of books I believe 
can be successfully used in undergraduate computer science courses. The first 
six books use Ada as their language of discourse but are "subject-oriented": 
introductory programming, data structures, file structures, compilers. The 
others are "Ada books", focusing on the language per se and organized around 
Ada's structures, not curricular material.

Ben-Ari, M. Principles of Parallel and Distributed Programming. (2nd edition)
	Prentice-Hall 1990. (OS/concurrency)
Feldman, M.B. Data Structures with Ada.
	Prentice Hall, 1985. (data structures)
Feldman, M.B., and E.B. Koffman. Ada: Problem Solving and Program Design.
        Addison-Wesley, September 1991 (intro-level, CS1-oriented)
Fischer, C., and R. LeBlanc. Crafting a Compiler.
	Benjamin Cummings, 1988. (compilers)
Miller, N.E. and C.G. Petersen. File Structures with Ada.
	Benjamin Cummings, 1990. (file structures)
Skansholm, J. Ada from the Beginning. 
	Addison Wesley, 1988. (intro-level)
Volper, D., and M. Katz. Introduction to Programming Using Ada.
	Prentice-Hall, 1990. (intro-level)


Barnes, J. Programming in Ada. (3rd edition)
	Addison Wesley, 1989.
Booch, G.Software Engineering with Ada. (2nd edition)
	Benjamin Cummings 1987.
Bryan, D.L., and G.O. Mendal. Exploring Ada, volume 1.
	Prentice-Hall, 1990.
Cohen, N. Ada as a Second Language.
	McGraw Hill, 1986.
Lomuto, N. Problem-Solving Methods with Examples in Ada.
	Prentice-Hall, 1987.
Shumate, K. Understanding Ada. (2nd edition)
	John Wiley, 1989.

erickson@atlas.cs.nps.navy.mil (David Erickson) (05/31/91)

In article <3241@sparko.gwu.edu> mfeldman@seas.gwu.edu (Michael Feldman) writes:
>A Sampling of Ada-Oriented Books for Undergraduate Computer Science
>May 1991
>
>Michael B. Feldman
>Department of Electrical Engineering and Computer Science
>The George Washington University
>Washington, DC 20052
>
>202-994-5253
>mfeldman@seas.gwu.edu
>
>This is not an exhaustive list, merely a selected list of books I believe 
>can be successfully used in undergraduate computer science courses. The first 
>six books use Ada as their language of discourse but are "subject-oriented": 
>introductory programming, data structures, file structures, compilers. The 
>others are "Ada books", focusing on the language per se and organized around 
>Ada's structures, not curricular material.

I've taken the liberty of adding a few titles to the 2nd list which I
have found useful (Bray&Pokrass, and the two Gehani texts).  I think the
Lomuto text belongs in the first group - it emphasizes problem solving
(based on Polya's How to Solve It), and would be a good addition to CS1
courses.

Ben-Ari, M. Principles of Parallel and Distributed Programming. (2nd edition)
	Prentice-Hall 1990. (OS/concurrency)
Feldman, M.B. Data Structures with Ada.
	Prentice Hall, 1985. (data structures)
Feldman, M.B., and E.B. Koffman. Ada: Problem Solving and Program Design.
        Addison-Wesley, September 1991 (intro-level, CS1-oriented)
Fischer, C., and R. LeBlanc. Crafting a Compiler.
	Benjamin Cummings, 1988. (compilers)
Lomuto, N. Problem-Solving Methods with Examples in Ada.
        Prentice-Hall, 1987.
Miller, N.E. and C.G. Petersen. File Structures with Ada.
	Benjamin Cummings, 1990. (file structures)
Skansholm, J. Ada from the Beginning. 
	Addison Wesley, 1988. (intro-level)
Volper, D., and M. Katz. Introduction to Programming Using Ada.
	Prentice-Hall, 1990. (intro-level)


Barnes, J. Programming in Ada. (3rd edition)
	Addison Wesley, 1989.
Booch, G.Software Engineering with Ada. (2nd edition)
	Benjamin Cummings 1987.
Bray, G., and Pokrass, D. Understanding Ada A Software Engineering Approach
	Wiley, 1985.
Bryan, D.L., and G.O. Mendal. Exploring Ada, volume 1.
	Prentice-Hall, 1990.
Cohen, N. Ada as a Second Language.
	McGraw Hill, 1986.
Gehani, N. Ada: An Advanced Introduction (2nd edition)
	Prentice Hall, 1989
Gehani, N. UNIX Ada Programming
        Prentice Hall, 1987
Shumate, K. Understanding Ada. (2nd edition)
	John Wiley, 1989.

mfeldman@seas.gwu.edu (Michael Feldman) (06/01/91)

In article <2322@atlas.cs.nps.navy.mil> erickson@taurus.cs.nps.navy.mil (David Erickson) writes:
>
>I've taken the liberty of adding a few titles to the 2nd list which I
>have found useful (Bray&Pokrass, and the two Gehani texts).  I think the
>Lomuto text belongs in the first group - it emphasizes problem solving
>(based on Polya's How to Solve It), and would be a good addition to CS1
>courses.

I took another look at Lomuto. I like the book a lot, but I don't think
the typical freshman could handle the assumptions Lomuto makes about their
sophistication in algorithm development and about their programming
background - he uses linked lists fairly liberally, for example - this
is squarely a CS2 topic in most schools.

A CS1 course typically assumes that the student has scarcely seen a computer 
before. NPS has the luxury of assuming a four-year UG education in its 
students. Even if they are new to computing, they have the maturity rarely 
seen (Alas!) in today's first-year college kids. An undergrad book (maybe as 
part of an algorithms course), yes. A CS1 book, I don't think so. Check the
1984 ACM recommended outline for CS1 (by Koffman, Miller, et al).

I think the Bray/Pokrass book is out of print. Too bad. I know the book,
but don't think it's available.

I use Gehani's "Ada: Concurrent Programming" in my graduate course on that
subject (and/or his Concurrent C book, which is similar except for
differences in coding language). His "Unix Ada Programming" is almost
identical to "Ada: an Advanced Introduction." It's a slightly modified
spinoff, in my opinion. I generally like Gehani's style. I used the latter
book for a year or so in my graduate comparative languages course (as the
Ada book). Surprisingly, most of the students didn't like his style.
Maybe it made them think too much. We use Cohen now; they complain less.

Mike Feldman

mfeldman@seas.gwu.edu (Michael Feldman) (06/02/91)

In article <SRCTRAN.91Jun1163012@world.std.com> srctran@world.std.com (Gregory Aharonian) writes:
>
>	I don't know if anyone amentioned a Pascal book that is perfect for
>conversion to Ada. The book is titled "Pascal: An Introduction to the Art
>and Science of Programming" by Walter Savitch (@ UCSD), and published by
>Benjamin Cummings.

Funny you should mention Savitch. Indeed he is writing an Ada version.
I believe it is due for publication in the spring of 1992.

There are rumors that another Pascal best-seller, Dale/Weems, is being
adapted for Ada; I have no idea of a date, but I think the project may be
just getting started, so don't expect it for perhaps 18 months or so.

This means that 3 of the best-selling Pascal/CS1 authors (Koffman, Savitch,
Dale/Weems) are writing or co-authoring Ada adaptations. Doug Cooper
has just done a Modula-2 version of "Oh! Pascal," called, would you
believe, "Oh, My! Modula-2." I don't know if we'll see an Ada version of this. 

All this adaptation of Pascal best-sellers is a good sign, because it shows
publisher confidence in the viability of the Ada market, and also the
Pascal "big names" will help the Ada books get in the door. By this time
next year, 2 of these will be available (Feldman/Koffman, appearing in
September, currently in production) and Savitch. All these books will be
good CS1, based on tried-and-true pedagogy. My guess is that the Ada
community will be pleased with the Ada-ness of these books as well. None
are "quickie" conversions.

So much for CS1. In the CS2 area, we will have an Ada adaptation of
Webre/Stubbs (from Cal Poly SLO), who've been teaching lots of Ada there,
and whose Pascal and Modula-2 data structures books have done well. Also,
John Beidler (Univ. of Scranton) is finishing up an Ada adaptation of
his very nice M2 stuff. I think it's due soon. There's also that Feldman
thing, which you can get now and which will do in a pinch :-)

It would be nice to see an Ada adaptation of Dale/Lilly, too. I don't know
whether this will happen, but you never know...

All us authors talk to each other a lot, especially at SIGCSE meetings.
We compete but we are friendly competitors.

It has taken courage for publishers to dig into Ada this way - take it from
one who's had many long and agonizing discussions with editors...

Mike

srctran@world.std.com (Gregory Aharonian) (06/02/91)

	I don't know if anyone amentioned a Pascal book that is perfect for
conversion to Ada. The book is titled "Pascal: An Introduction to the Art
and Science of Programming" by Walter Savitch (@ UCSD), and published by
Benjamin Cummings.
	The book is for an introductory course on programming, is well
written, has many extras (sections in the book specific to the art of
debugging, an automatic test generator available for preparing tests
based on the chapters in the book).
	If someone could convince the publisher to come out with an Ada
version, you would have an excellent freshman level book for Ada. In fact,
there are probably other Pascal books that have a well refined structure for
teaching.

Gregory Aharonian
Source Translation & Optimization

sakkinen@jyu.fi (Markku Sakkinen) (06/03/91)

In article <3246@sparko.gwu.edu> mfeldman@seas.gwu.edu () writes:
> ...
>Dale/Weems) are writing or co-authoring Ada adaptations. Doug Cooper
>has just done a Modula-2 version of "Oh! Pascal," called, would you
>believe, "Oh, My! Modula-2." I don't know if we'll see an Ada version of this. 
Hm, check whether he has already registered the name
"Ah, Madam! Ada"  :-)

> ...

Markku Sakkinen
Department of Computer Science and Information Systems
University of Jyvaskyla (a's with umlauts)
PL 35
SF-40351 Jyvaskyla (umlauts again)
Finland
          SAKKINEN@FINJYU.bitnet (alternative network address)

mfeldman@seas.gwu.edu (Michael Feldman) (06/04/91)

In article <1991Jun3.104718.3124@jyu.fi> sakkinen@jytko.jyu.fi (Markku Sakkinen) writes:
>Hm, check whether he has already registered the name
>"Ah, Madam! Ada"  :-)

At the SIGCSE conference in March, we were joking that Cooper's next book
would be called "Oh, S**T! Scheme!"

Mike Feldman

PS - I can confirm the existence of a Dale/Weems "port" to Ada. I presume
the co-author will identify him/herself at the right moment (there are
still some negotiations to finsh). I know the person. I think the Ada
community will like the result.

Mike

erickson@atlas.cs.nps.navy.mil (David Erickson) (06/04/91)

In article <3244@sparko.gwu.edu> mfeldman@seas.gwu.edu () writes:

>I took another look at Lomuto. I like the book a lot, but I don't think
>the typical freshman could handle the assumptions Lomuto makes about their
>sophistication in algorithm development and about their programming
>background - he uses linked lists fairly liberally, for example - this
>is squarely a CS2 topic in most schools.

A lot depends on the level of students taking CS1, but linked lists are
introduced in every CS1 course and text I am familiar with.  Lomuto
also emphasizes recursion, which is normally introduced in CS1.  At some
point, we expect our students to internalize these techniques, and add
them to their repertoire of problem-solving methods.  Whether that
happens in CS1 or 2 depends on the students and the instructor.  At
any rate, I think that Lomuto's text is a good supplementary text, and
may help catalyze that process. 

>A CS1 course typically assumes that the student has scarcely seen a computer 
>before. NPS has the luxury of assuming a four-year UG education in its 
>students. Even if they are new to computing, they have the maturity rarely 
>seen (Alas!) in today's first-year college kids. An undergrad book (maybe as 
>part of an algorithms course), yes. A CS1 book, I don't think so. Check the
>1984 ACM recommended outline for CS1 (by Koffman, Miller, et al).

>Mike Feldman

-Dave Erickson

mfeldman@seas.gwu.edu (Michael Feldman) (06/05/91)

In article <2335@atlas.cs.nps.navy.mil> erickson@taurus.cs.nps.navy.mil (David Erickson) writes:

>A lot depends on the level of students taking CS1, but linked lists are
>introduced in every CS1 course and text I am familiar with.  Lomuto
>also emphasizes recursion, which is normally introduced in CS1.  At some
>point, we expect our students to internalize these techniques, and add
>them to their repertoire of problem-solving methods.  Whether that
>happens in CS1 or 2 depends on the students and the instructor.  At
>any rate, I think that Lomuto's text is a good supplementary text, and
>may help catalyze that process. 

Well, your students must be better than mine. I've just checked my ACM CS1
curriculum guide (Koffman, Miller, and Wardle, CACM Oct. 84, p. 998 ff.)
which is the nearest thing to a "standard"  curriculum. True, it's showing
its age, but is still used as a guide by authors and editors. This paper
does _not_ recommend teaching recursion or linked structures. (I'm thinking
about typing the whole list of topics in at some point, but won't bore you 
all with it now). CS1 students get "up to" using arrays, simple sorting and
searching, and arrays of records, in the data structures area.

Indeed every Pascal-oriented CS1 book I've seen contains recursion and
linked structures - at the end. Koffman's Pascal 3rd edition and Turbo 
Pascal 2nd edition books discuss this in the preface, noting that the book
"now" (late editions) includes "most of the recommended CS2 topics."
Dale/Weems introduce linked lists 1 chapter from the end, again as something
advanced students can move into. Their recursion chapter is divided in two:
half using only simple types, half using structured types.

In outlining the Feldman/Koffman collaborative effort, we both agreed that
this stuff is reached by very few courses; the editor agreed that we should
include a recursion chapter but _not_ get into linked structures; only
one of ten reviewers in detail of the outline and manuscript suggested that
we put linked structures back, and that person doesn't teach CS1.

Pascal (even with units) is a sufficiently small language that a single book
can easily cover all of it. So there's no point in gratuitously leaving a topic
out, even if most students will never get to it in one semester. An Ada book
intended for students at this level _must_ leave some things out, else when
you add in the pedagogy the book would weigh a ton and cost a mint. We
decided that unconstrained array types and simple generics were well worth 
putting in, but that derived types and related things, linked structures,
and tasking are topics best left to the "next" book in the curriculum.
Reviewers - who knew both their Ada and their realistic CS1 classes - had
no disagreement with these design choices (except for thte one person
mentioned above).

I hope this doesn't sound defensive; I just thought I'd respond with some
personal experience.

The ins and outs of book writing are - no doubt - interesting to only a few
folks on the net, so I'll be glad to carry this on by e-mail.

Mike