[comp.edu] recommendations for C Book

pete@othello.dartmouth.edu (Pete Schmitt) (11/20/89)

I would like to thank everyone for their suggestions.  The information
received from the respondents was very useful, not only for helping choose
a book for the class, but to discover books that I would now like to
add to my library.

===============================================================================

From kelly@jupiter.nmt.edu Wed Nov 15 00:00:04 1989
Organization: New Mexico Tech, Socorro NM

It seems the standard at this college to use _The_C_Programming_Language,
2/E, by good ole' Kernighan and Ritchie.  But I don't like it as a
learning tool.

First, I learned C after I learned BASIC.  That is, I went from
structureless, bogus programming to real, structured programming
without tutors, teachers, or otherwise.  I tried the K&R book, but
failed miserably.

The book I felt was the best was _Programming_in_C_, revised edition,
by Stephen Kochan.  It was simply superb!  The only problem here is
students might not show up to class.  The book is an excellent teacher
on its own.

If your students will have some knowledge of simple data structures
and structured programming, like Pascal, then the K&R book might indeed
work out.  That's the case here, at least.  Students are required to take
a semester of Pascal and then a semester of algorithms/data structures
before they can even begin C.  Pascal's type checking is a sanity-saver
at such low-levels.

===============================================================================

From: gomez@enuxha.eas.asu.edu (Jose L. Gomez-Rubio)

I recommend C Primer Plus by The Waite Group published by Howard Sams Co.
This is a most excellent into to C book.  Make sure you take a look at it in a local bookstore.
I sometimes refer to it for some clarification.  Actually this book was used
in my first C class.  You won't go wrong with this book.

===============================================================================

From: Collin Park <collin@hpindda.hp.com>

I really like K&R's book myself.  I basically learned C from it (and from
reading others' code).  For some reason, when I first looked at K&R, though,
I didn't like it but I can't remember why not since it's now my favorite
C book  (I like it better than HP's C book!)

I also liked Harbison/Steele, but as I recall, H&S has more of the reference
manual flavor.

===============================================================================

From: uunet!pdn.paradyne.com!reggie (George Leach)
Organization: AT&T Suncoast Division, Largo FL

    I will be teaching C at a local Junior College for the first
time (I've taught FORTRAN and Pascal in the past).  I have worked
with C since 1983 and took the old Bell Labs courses in C and UNIX
in 1980.  I learned from K&R, but not by choice.  There was nothing
else available at the time.


    The book that will be used in the course I am teaching will be
K&R.  The students are expected to have some background with programming
in a "structured language".  So this is not an introduction to programming
course, just an intro to C.  I will be in a better position to evaluate
the appropriateness of K&R for this purpose after next semester is over
with.


    Due to the fact that I learned from K&R, I don't really have a good
handle on the intro level books for C.  I have mostly advanced books on
C.  I would love to hear what other folks send to you.  I may be looking
to change the text for the course somewhere down the road.

===============================================================================

From: Mike Ross <ross@apollo.com>

Best is " Learning to Program in C" by Thomas Plum,
Plum-Hall Enterprises. It's a gem. Tom Plum was
the vice-chair of the ANSI C committee.

===============================================================================

From: Andrew Betz <BETZ-A@osu-20.ircc.ohio-state.edu>

    I'd take a look at the text _Programming in C_ by Stephan Kochan.
It is published by the Hayden Press.  There is a variant for ANSI C
if that's your preference.  The nice thing about this text is that
it has two follow-up texts if students care to go further.

    Kochan does a pretty good job of decryptifying the (arguably)
most cryptic language known to all programmers.  His trick is to
have students type in & compile mini-programs as they progress
through the book.  It is fairly comprehensive, although slightly
biased towards UNIX programming.  All in all, I think this would
be your best bet.

===============================================================================

From: Alan Strassberg <lstc!oetl1.SCF.LOCKHEED.COM!alan@uunet.uu.net>

	The winner is -

	Programming in C by Stephen Kochan. 
	(Hayden Book Co. ISBN 0-8104-6261-3) about $24.

	Great intro book. Also has a followup book for more
	advanced stuff called Topics in C.

===============================================================================

From: amull@morgan.com (Andrew P. Mullhaupt)

A reasonably good way to teach C is to make sure your students understand
programming from the point of view of algorithm design and correctness.
Then go through case studies of what is considered good C by getting the
best examples you can of one of each kind of programming, (I/O, database
numerics, graphics, etc.) Then, at the end of your course, when your students
are furious at you for such an incomprehensible mess, you quote David Gries:
'Program into a language, not in one.'

They will never forget the lesson, and we will all be better off for it.

But seriously, folks ... I suggest you stay away from a C text, and teach
C through a vehicle of a series of didactic programs. The gruesome warts
and stupidities of C are easier for well informed students to cope with if
there is a further learning objective in sight, whereas if it's too obvious
that you're merely walking them through the mindless heap of C rules just
so they've been warned about all of the, I think you'll have a less
successful source.

One guide to a good C book is the inclusion (exclusion) of the difference
between for and while constructs. K&R got it wrong, K&R2 have it right, and
Harbison and Steele are pretty good. The bad way to have this (i.e. a stupid
butoften encountered belief) is founfor examplein the book "Software
Engineering in C" by Darnell and Margolis, (Springer-Verla.

===============================================================================

From: @cvbnet.prime.com:jsulliva@killington.prime.com (Jeff Sullivan)

I think one of the best "intro" books is by Steven Kochan.
He has 2 related ones. Programming in C and Programming in
Ansi C. Take your pick.
You should, of course, recommend (and maybe require) K&R.
A good (advanced) ref book is Harbison & Steele.
I program professionally in C and object-oriented C, I will
also be recieving an MSCS this semester.
Kochan's books were the best "starting point" C books I've found.

PS - I think you should post the result of your poll, and your choice.

===============================================================================

From: David Yang <d-yang@cs.columbia.edu>
Organization: Columbia University Department of Computer Science

I've used 2 books on C, the classic Kernighan & Ritchie book, and
A Book on C, by Pohl.  For intro C, the latter is much better--
slower pace, important info like how to use malloc().  K&R is a
good reference work, and it's nicely concise if you know what you're
doing, but still, not a good intro.

===============================================================================

From: mccc!pjh%njsmu@princeton.edu
Organization: The College On The Other Side of U. S. Route 1

If your students have relatively little programming background (as mine
do), try The Waite Group book, "C: Step by Step."  (Howard Sams & Co.) 
When we had "better" studenst, we used Steve Kochan's fine book,
"Programming in C".  (Hayden Books)

===============================================================================

You just Said it yourself, "The C Programming Language", By Kernighan and
Ritchie, 2nd Edition, Prentice Hall, 1988.  ISBN 0-13-110362-8.

Mark Bobak
mjb@nucleus.mi.org
mjb@m-net.ann-arbor.mi.us

===============================================================================

From: MARWK@levels.sait.edu.au
Organization: Sth Australian Inst of Technology

I have used a book by Kelley and Pohl to teach TURBO C and I like its
unique method of 'dissection' for analysing programs they discuss in the
book.  The exercises are good too.  If you are using TURBO C (with its
wonderful environment and speed of compilation and good error message 
generation and to-the-line access of them) then take a look a this book.

===============================================================================

From: manis@cs.ubc.ca (Vincent Manis)
Organization: The Invisible City of Kitezh

I'm teaching a 2nd year data structures course; I start the students off
with a book called ``A Workbook on C'', by Sant, published by
Prentice-Hall Canada, followed by K&R, 2nd edition. The Sant book covers
a small subset of C, enough to do basic kinds of things, without
drowning people in all sorts of rules. K&R is most definitely the book
which real C programmers need. 

I even got Prentice-Hall Canada to agree to selling the two books as a
shrink-wrapped package, thus lowering the cost. I don't know whether PH
US markets Sant. 

Now if I could just find a good data structures book which uses C: I'm
currently using van Wyk, which is not bad as a data structures book, but
the code in it uses Classic C. Ugh. 

===============================================================================

From: uunet!ssbell!marko (Mark Olson)
Organization: Sterling Software, FSG-IMD, Bellevue, NE.

In reply to your posting, you may want to consider _Learning To Program in C_
by Thomas Plum (ISBN 0-13-527854-6) published by Prentice Hall. The chapters
include Computers and C, Data, Operators, Statements and Control Flow, 
Functions, Software Development, Pointers, and Structures. It deals with C as a
programming language rather than C as a programming language under Ms. Dos or
VMS or Unix. I have found that the general principles that Plum outlined in his
book serve as a great foundation for programming in C...

===============================================================================

From: mitisft!dold@bellcore.bellcore.com <Clarence A Dold>

I would use the Waite Group book _Microsoft C Programming for the IBM_
While it does get into PC hardware in some chapters, it stays away from
that while introducing C.  I thought they did a very good job moving from
"arrays" to "pointers as arrays" to "you can only do this with pointers"
After taking an intro to C at a JC, I thought this book was a better
introduction.  Most of your students will probably be using PC anyway, 
so the later chapters won't be wasted.
Another point they made, which wasn't even touched in my college course,
was how scanf() is never really used to capture keyboard input.
It isn't strictly a teaching text, but it is well written.

===============================================================================

From: Don Gillies <gillies@cs.uiuc.edu>

Check out "C: A Reference Manual" by Harbison & Steele.  Five Stars.
It's the only reference in the field that rivals Kernighan & Ritchie.

It's also the first book in 12 years that taught me something new
about the C language.  The authors have written dozens of C compilers,
unlike 99% of the other guys out there.  It's a much better reference
than Kernighan & Ritchie (K & R has great examples, but it's hard to
answer questions from the index).

It's also got the latest ANSII specs, just like K & R, 2nd edition.

===============================================================================

From: hedger@inmet.inmet.com

If it's a beginner's class I would recommend the C Primer Plus from
the Waite Group. Excellent starting book.

===============================================================================

From: fortytwo!bob@cs.utexas.edu

I've written some largish C apps that I'm proud of, but I'm *not* a
professional C programmer (not a professional programmer, for that
matter).  We'll skip the story of how I learned C the hard way; what I
thought might be germane to your situation is that I finally got
around to ordering K&R I a few months ago and realized that teaching
myself via reference manuals and Hayden and Microsoft Press books was
a big waste of time and money.  K&R is much more clear than any of the
other C texts I'e used.  Since you're going to be there to guide them,
I'll bet K&R I is the best possible text you could use.  It's the
first one that communicated the elegance to me.

===============================================================================

From: uunet!rose3.Rosemount.COM!craig (Craig Taylor)

In response to your request for books to teach C from
I would suggest _Turbo C Programming_ for the IBM,
Robert Lafore, The Waite Group, Pub. Howard W. Sams &
Company, 1987, ISBN 0-672-22614-6.  There is also a newer
version by the same author for Microsoft C that includes
references to ANSI C.

I am not a teacher but an engineer trying to pick up C after
using other languages for years.  I have tried K&R and found
it worthless to learn from.  It may be a good reference book
after you already know the language.  The chapters on strings,
pointers, and large programs (separate compilation) have been
epecially useful to me.  There is also information on the
scope of variables presented in diagrams that is worth more 
than pages of gibberish or a couple terse definitions.

I am using the book even though I am programming on a UNIX
system.  While snobs are loath to admit the existence of
PCs, chances are students don't have access to SPARC Station
1s at home.  Keep in mind that experienced C programmers are
the farthest removed from the initial learning experience
and are the least qualified to judge C books since they don't
need them.  I recommended this book to someone taking C at
a local technical college where K&R is the book used.  I have
a hard time prying my Lafore book from his fingers to look
anything up now.

===============================================================================

From: ncr-fc!chuckp@bach@ccncsu.colostate.edu (Chuck Phillips)

"Software Engineering in C", Peter A. Darnell and Phillip E. Margolis
Springer-Verlag, 612pp, ISBN:0-387-96574-2, $29.95, Paper bound

    The title is a bit misleading, since only one section of the book deals
specificly with software engineering.  However, it's the most thorough
tutorial of the C language I've seen.

o It covers in _great detail_ many obscure aspects of C.  There's information
    in this volume that I've not seen anywhere else.  (e.g. exactly
    _why_ *****foo(x) and foo(x) are identical)

o Although syntax is covered thoroughly, the emphasis is on _style_.  (i.e.
    writing _good_ C as opposed to writing _legal_ C.

o "Bug Alerts" -- common gotchas are highlighted throughout the text.

o Like Harbison and Steele's "C a Reference Manual", information can be
    quickly located.  However, instead of just defining what's legal,
    it also explains _why_, gives stylistic recommendations, and alerts
    the reader to common usage mistakes.

o The software engineering techniques are illustrated through the development
    of a small C interpreter.  (Includes source)

o Both K&R and ANSI C are covered in detail.

o An appendix listing differences between K&R and ANSI C.  (I was suprised
    how long the list is.)

o An appendix covering the covering the ANSI runtime libraries.

o etc, etc, etc...

	In short, I _really_ like this book and reccommend it for those who
are _serious_ about C programming.  Bonus for beginners: The text is
surprisingly free of jargon.

===============================================================================

From: mysore@bsu-cs.bsu.edu (SWAMY)
Organization: CS Dept, Ball St U, Muncie, Indiana

Try Kernighan and Ritchie, Prentice Halls

===============================================================================

From: gillies@p.cs.uiuc.edu

"C: A Reference Manual"  By Harbison & Guy Steele

I think this is a better reference than Kernighan & Ritchie.  The
authors have implemented far more C compilers than Kernighan &
Ritchie.  I was amazed to learn new things from this book, after ten
years of C programming (using Kernighan & Ritchie's first edition).

One flaw with Kernighan & Ritchie, 1st edition: It's hard to find the
answer to a question, using the index.  Information is scattered all
over the book.  This makes it a rather poor (although definitive)
reference, in my opinion.

Kernighan & Ritchie, 1st edition, is slightly deceptive.  As examples,
they use nearly *every* artful piece of compact code from UNIX.  This
is misleading -- it makes C seem like a miraculously simple language.
Real C programs are a great deal more complicated than these contrived
examples. 

===============================================================================

From: das@lanai.cs.ucla.edu (David Smallberg)
Organization: UCLA Computer Science Department

I've had great success with 
	Miller, Larry and Quilici, Alex,  The Turbo C Survival Guide (Wiley)
adapted from their earlier  Programming in C  (Wiley)
Unlike a lot of books, which delay pointers for as long as possible, these
books early on get into pointers and their intimate relationship with arrays.
I've noticed that people given an early presentation of pointers are
comfortable with pointers much sooner than those who don't learn them until
later.

K&R is a fine book for people who have a solid programmer's background -- i.e.,
who know something about programming language implementation, data structures,
etc.  K&R tend to state a fact once, assuming the reader has the background
to catch it and understand its implications.  From what I've seen when I've
taught C, most people in academia and industry don't have that background in
enough depth to appreciate K&R when they first learn C; only later do they
decide they like the book.

===============================================================================

From: munnari!levels.sait.oz.au!MARWK@uunet.uu.net

The book is called "TURBO C:  The essentials of C programming.

I have solutions to every problem in a printable form up to chapter 12,
with comments;  this is a professional job.

I would have liked the Publisher to offer me something for them, but I
might just place them in PC-BLUE or on the net.

The Aussie distributor did show some interest but I have not heard from
them again.

When I have finished the entire book (aim: Christmas, so that it will have taken 
me 1 year to complete it (!) I will be better able to make a choice.

My explanations are elaborate.

I have the 1988 edition: I think there is now a 1989 edition with remarks
on the TURBO DEBUGGER, so look for this one.

===============================================================================