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