Good books in computer science?

B

Bob Martin

in 118305 20090621 214008 Phil Runciman said:
How many instruction sets have you used? I have used at least 9.

IBM 1401
IBM 1410
IBM 7090/7094
IBM 1620
IBM 360
IBM System/7
IBM 1130
IBM 1800
IBM Series/1
Intel 8080 etc
Motorola 6800 etc
Texas 9900 (my second favourite)
plus a bunch of IBM microprocessor cards (eg Woodstock).
 
S

Steve Ferg

If you are looking for *classics*, then you can't beat Michael
Jackson's "Principles of Program Design" and "System Development".
They are pre-ObjectOriented, but if you really want to understand what
application programming is all about, this is where you should
start.

I also recommend Eric S. Roberts "Thinking Recursively". I don't know
if it can be considered a classic, but a good programmer needs to be
able to understand and do recursion, and I found this book a very
readable introduction.

It may also help if you bring a tighter focus to your search. The
domain of programming can be divided up into large subdomains, each
with its own specialized types of problems, techniques and classics.
Here are some subdomains that I can think of off the top of my head:

system programming -- dealing with interacting with the computer at
the bits and bytes level
scientific programming -- dealing with algorithms
business programming -- dealing with data structures and the events
that change them
embedded & real-time programming -- dealing with controlling machines

.... and there are probably others, such as writing compilers/
interpreters, and robotics programming.
 
A

Albert van der Horst

I think there are about 100 million VB code-monkeys who prove that theory
wrong.

Seriously, and without denigrating any specific language, you can program by
(almost) mindlessly following a fixed number of recipes and patterns. This
will get the job done, but it won't make you a good programmer.

For programming practice I do the problems of http://projecteuler.net/
I'm on the Eulerians page (best performers on 25 last problems).
There is not a single VB programmer in the top 100.
(Lots of Python programmers, C-family, also Haskel, APL, LISP
Algol, Forth, Perl and I repeat not a single VB programmer.)
Currently the top place is a Python programmer.

These programs may be very demanding, minutes on very fast systems.
Bad algorithms take days, weeks or literally forever.
Interestingly the factor 5 between Python and C is irrelevant compared
to a good algorithm, apparently.

Groetjes Albert
 
A

Albert van der Horst

On 2009-06-14 14:04:02 +0100, Steven D'Aprano
<[email protected]> said:
I think I'm paraphrasing Richard Feynman here, but the
only way to truly understand something is to do it.

An amazingly inappropriate quote for a *theoretical* physicist to have said.[/QUOTE]

The remark of Feynman goes to the heart of science and mathematics.
(Try understanding some number theory or string theory by just
reading about it.)
Whether Feynman did or didn't say that, it's clearly untrue: many people do
without understanding. Many people can cook, some people are expert cooks,

This is even a classical lack of logic skills. Feynman says a->b,
and you attack b->a.


Groetjes Albert
 
A

Albert van der Horst

Code Complete and GOF are software engineering books but not really
CS books. TAOCP is a CS book but a bit old fashioned. Other classics:

Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson,
Ronald L. Rivest, and Clifford Stein.

Thanks. I lost that title a while ago, must buy.

Also "Numerical Recipe's in FORTRAN/Pascal/C"
(Have they done Python yet?)
Structure and Interpretation of Computer Programs by Harold Abelson
and Gerald Jay Sussman (online at mitpress.mit.edu/sicp)

Groetjes Albert
 
P

Paul Rubin

Albert van der Horst said:
Thanks. I lost that title a while ago, must buy.

Wait a few months, a third edition is in the works.
Also "Numerical Recipe's in FORTRAN/Pascal/C"
(Have they done Python yet?)

They haven't done Python AFAIK. I liked the C version but the
licensing of the software is pretty evil and so I'm a bit turned off
to the series these days. I think the hardcore numerics crowd never
liked the book anyway.
 
T

Terry Reedy

A
Who got his start *doing* calculations for the Manhattan (atomic bomb)
project, and checking them against real results. Like it or not, they
'did' it is a big way.

He got his Nobel Prize for finding out how to *do* calculations that
matched quantum mechanics experiments. (or something like that).

His early bobby was picking locks and cracking safes -- mostly as a way
to understand them. It was not enough for him to just read about them.

tjr
 
R

Robert Kern

Wait a few months, a third edition is in the works.


They haven't done Python AFAIK. I liked the C version but the
licensing of the software is pretty evil and so I'm a bit turned off
to the series these days. I think the hardcore numerics crowd never
liked the book anyway.

My opinion is that the text itself is a pretty good introduction to the workings
of a broad variety of numerical algorithms. For any particular area, there are
probably better books that go into more depth and are closer to the state of the
art, but I don't think there are any books that cover the wide swath numerical
algorithms that NR does. In that regard, I treat it like Wikipedia: a good place
to start, not the best place to stop.

I think the code succeeds reasonably well for teaching the algorithms, but I
don't think they are well-engineered for production use. There are usually
better libraries with better licenses.

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco
 
B

Bearophile

Albert van der Horst:
For programming practice I do the problems of
http://projecteuler.net/

Time ago I have solved some of them with Python, D and C (some of them
are quite hard for me), I have tried to produce very fast code (like a
D generator for prime numbers that's like 100 times faster of some
'fast' C# prime generators I've seen in that forum).

But then I have stopped because to me they seem a waste of time, they
look too much academic, they don't exercise the right muscles of the
mind. They may be good if you want to become good in performing
numerical number theory, and bad for everyone else.

Seeing how many people like to do those Project Euler puzzles, I
presume my ideas aren't shared by most people.

I am now using some solutions of mine of those problems to spot
"performance bugs" in a new D compiler (and even in ShedSkin), so they
are somewhat useful again :)

Bye,
bearophile
 
S

Simon Forman

Hi all,
   I do understand that this is not a python question and I apologize
for that straight up.
   But I am a full time follower of this group and I have seen very
very brilliant programmers and solutions.
   I also want to be a good programmer - so this question.

   Which are the classic books in computer science which one should
peruse?
   I have  (a) Code Complete (b) GOF (c) Art of programming.

   Art of programming was too tough for me - and I couldnt understand
much. The other two were good books - I understood and implemented
quite a bit from both.
   What are the other books which I should peruse?

Regards
K

Knuth.

I.e. "The Art of Computer Programming" by Prof. Knuth

Your library should have a copy (it's a multi-volume opus), if not
consider donating yours after you read them.
 
R

rustom

This thread has thrown up some interesting suggestions but they all
seem to fall into one of two categories:
- the high-ground: Dijkstra, Knuth etc
- the low-ground: write (any-which-how) a lot of code

And both these 'grounds' seem to cause more argument and less
suggestions for good books.

Let me therefore try to find a middle-ground and make a suggestion
that I used to make to my students when I taught them programming:
Read the Python Manual -- specifically the library. It contains a
fairly good conspectus of modern day IT/CS.

Some examples of what I mean:

Want to study TDD? Read unittest and doctest and then go on to
reading (and practising) Kent Beck etc
Want to get into unix system programming? Nothing like playing around
with os.path and stat before burining your hands with C.
Networking protocols? smtplib, urllib, ftplib etc
Low level networking? socket, select etc
Algorithms? Good to get your feet on the ground with timeit
 
A

Anul

Want to study TDD?  Read unittest and doctest and then go on to
reading (and practising) Kent Beck etc
Want to get into unix system programming?  Nothing like playing around
with os.path and stat before burining your hands with C.
Networking protocols? smtplib, urllib, ftplib etc
Low level networking? socket, select etc
Algorithms? Good to get your feet on the ground with timeit

Ive found twisted is a good excuse to study lot of CS arcana
ranging from laziness of lambdas, event driven programming
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,982
Messages
2,570,190
Members
46,736
Latest member
zacharyharris

Latest Threads

Top