isaac@cbnewsc.ATT.COM (isaac.j.champagne) (03/30/89)
I'm an electrical engineer, who learned computer programming via Fortran, but have done a fair amount of C programming at work. I'm interested in doing some reading to strengthen my knowledge of the fundamentals for "software engineering" or computer science. So what are some good texts that cover the fundamentals of programming? I'm particularly interested in: 1.A text with more examples than confusing computer science theory (preferably w/examples in C) 2.How about some good background in data structures? 3.How about programming paradigms? It seems like the "how to" of programming may be more important than lots of theories. Any ideas as to things that a computer programmer should know. Thanks, Isaac Champagne,Jr. ixn5c!isaac ATT-Bell Labs Indian Hill South
windley@cheetah.ucdavis.edu (Phil Windley/20000000) (03/31/89)
In article <354@cbnewsc.ATT.COM> isaac@cbnewsc.ATT.COM (isaac.j.champagne) writes:
So what are some good texts that cover the fundamentals of programming?
I'm particularly interested in:
1.A text with more examples than confusing computer science
theory (preferably w/examples in C)
2.How about some good background in data structures?
3.How about programming paradigms? It seems like the "how to"
of programming may be more important than lots of
theories.
Try "Data Structures: an Advanced Approach using C" by Esakov and Weiss is
pretty good.
That said, I think you're missing the point. You seem to think that you
can be a good programmer without a funcdamental understanding of what's
going on. This is a serious mistake.
If you take programming as the act of translating someone else's desing
into working C code, then you're probably going to be able to do that
without a lot of theoretical knowledge. If you think that you can DESIGN
programs without the kind of important background knowledge that theory
provides then you're in for a rude awakening.
For exmaple, how do you propose to choose the apporpriate data structure,
for example, without understanding the theory behind the choices?????
--
Phil Windley | windley@iris.ucdavis.edu
Division of Computer Science | ucbvax!ucdavis!iris!windley
College of Engineering | (916) 752-7324 (or 3168)
University of California, Davis | Davis, CA 95616
rudolf@neptune.uucp (Jim Rudolf) (03/31/89)
I've heard good things about "Software Tools" by Kernighan & Plauger. (Don't hold me on the spelling of the author's names). Any comments on this book? Jim Rudolf ---------------------------------------------------------------------------- Internet: rudolf@oce.orst.edu "All opinions herein are mine" UUCP: {tektronix,hp-pcd}!orstcs!oce.orst.edu!rudolf ----------------------------------------------------------------------------
w-colinp@microsoft.UUCP (Colin Plumb) (04/01/89)
It isn't C, and it's pretty heavy going alone, but "The Structure and Interpretation of Computer Programs", by Abelson & Sussman (the textbook for the first year CS intro for CS and EE programs at MIT) will teach almost anyone a hell of a lot. This goes for rank beginners through Dennis Ritchie. The C-Scheme compiler is available from MIT. One thing I've wanted for a while, and never been able to find (Sedgewick's "Algorithms" and G.H. Gonnet's "Handbook of Algorithms and Data Structures come very close; after that, Knuth if you can read the goto-laden algorithms) is a cookbook of data structures and algorithms. Leave in the details (as opposed to making them exercises), but make it brief, skip most of the math, and explain the boundary cases and implementation issues. -- -Colin (uunet!microsoft!w-colinp) "Don't listen to me. I never do." - The Doctor
desnoyer@Apple.COM (Peter Desnoyers) (04/02/89)
In article <1203@microsoft.UUCP> w-colinp@microsoft.uucp (Colin Plumb) writes: >It isn't C, and it's pretty heavy going alone, but "The Structure and >Interpretation of Computer Programs", by Abelson & Sussman (the textbook >for the first year CS intro for CS and EE programs at MIT) will teach >almost anyone a hell of a lot. This goes for rank beginners through >Dennis Ritchie. The C-Scheme compiler is available from MIT. > I second the motion. It uses Scheme (actually a small subset that can be taught in a class or two) to cover most of the common programming paradigms. The approach to problem sets in the class at MIT was great - they would give you lots of code and you would then have to figure it out and then modify or extend it. Much more of a real-world approach than writing everything from scratch. Peter Desnoyers
gds@spam.istc.sri.com (Greg Skinner) (04/03/89)
In article <28226@apple.Apple.COM> desnoyer@Apple.COM (Peter Desnoyers) writes: >The approach to problem sets in the [Scheme] class at MIT was great >- they would give you lots of code and you would then have to figure >it out and then modify or extend it. Much more of a real-world >approach than writing everything from scratch. I took this class before the book was written (the book was derived from the course handouts) and I co-taught a three week seminar on it once. While what you say is true (much real-world programming consists of modifying large software projects) I question whether this is a good thing to teach as a first undergraduate computer science requirement. During the time I took the course, I tended to get lost in the huge pieces of software because I had no framework for debugging (let alone understanding) a large piece of software. I know other people that had this problem. (In general, I found that students spent much more time on the subject than was allocated by the department.) I found my understanding of how to write software increased once I had actually written large pieces of software and then started to modify them. (The software engineering course at MIT, 6.170, is much better in this regard.) This is just my opinion, though. I know lots of people that loved 6.001 and really got a lot out of it, but I and others were lost most of the time. I've found it's easier to give the students software projects of increasing sizes to design on their own to give them a feel for the size and complexity of software projects. --gregbo
reuven@athena.mit.edu (Reuven M. Lerner) (04/03/89)
In article <18740@joyce.istc.sri.com> gds@spam.istc.sri.com (Greg Skinner) writes: > >This is just my opinion, though. I know lots of people that loved >6.001 and really got a lot out of it, but I and others were lost most >of the time. I've found it's easier to give the students software >projects of increasing sizes to design on their own to give them a >feel for the size and complexity of software projects. > >--gregbo Well, I'm "just" a freshman taking 6.001, and I love the course. I'm getting more out of it, and learning more about Computer Science and programming, than I ever thought imaginable. The textbook is a bit dense, and the lectures go a little fast (typical for MIT), but all-in-all, I'm having a great time. Reuven
gwyn@smoke.BRL.MIL (Doug Gwyn ) (04/04/89)
In article <1203@microsoft.UUCP> w-colinp@microsoft.uucp (Colin Plumb) writes: >One thing I've wanted for a while ... >is a cookbook of data structures and algorithms. Leave in the details (as >opposed to making them exercises), but make it brief, skip most of the math, >and explain the boundary cases and implementation issues. So far the closest I've seen to this is the "Numerical Recipes" series (Fortran, Pascal, and C versions) by Press, Flannery, Teukolski, and Vetterling. I can't say much for their use of C, and occasionally they pick an ill-advised algorithm, but at least there are a lot of workable algorithms in most areas of numeric computation.