Good books in computer science?

Discussion in 'Python' started by koranthala, Jun 13, 2009.

  1. koranthala

    koranthala Guest

    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
     
    koranthala, Jun 13, 2009
    #1
    1. Advertising

  2. koranthala

    Guest

    Timeless classics - highly recommended:

    Software Tools by Plaugher
    Mythical Man Month by Brooks

    Malcolm
     
    , Jun 13, 2009
    #2
    1. Advertising

  3. koranthala

    Paul Rubin Guest

    koranthala <> writes:
    > 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?


    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.

    Structure and Interpretation of Computer Programs by Harold Abelson
    and Gerald Jay Sussman (online at mitpress.mit.edu/sicp)
     
    Paul Rubin, Jun 13, 2009
    #3
  4. koranthala

    koranthala Guest


    > Code Complete and GOF are software engineering books but not really
    > CS books.


    I understand and concur. Since I am a software engineer - coming in to
    software from a different background - what I am looking for is self-
    improvement books for a software engineer. This can include both CS
    and Software books - even though I found that CS books are much less
    understandable to me :)
     
    koranthala, Jun 13, 2009
    #4
  5. On Sat, 13 Jun 2009 08:49:52 -0700, koranthala wrote:

    > 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


    The best way to become a good programmer is to program. Write a lot of
    code; work on some large projects. This will improve your skill more than
    anything else. It's also important to learn new languages regularly. I
    recommend to learn C, Python, and Lisp first.

    > Which are the classic books in computer science which one should
    > peruse?


    A list of some good books is at steve.yegge.googlepages.com/ten-great-
    books. Also read programming blogs.





    --
    Nathan Stoddard, http://nathanstoddard.com
     
    Nathan Stoddard, Jun 13, 2009
    #5
  6. koranthala

    Rhodri James Guest

    On Sat, 13 Jun 2009 18:37:13 +0100, koranthala <>
    wrote:

    >
    >> Code Complete and GOF are software engineering books but not really
    >> CS books.

    >
    > I understand and concur. Since I am a software engineer - coming in to
    > software from a different background - what I am looking for is self-
    > improvement books for a software engineer.


    In that case The Mythical Man-Month (Brooks) is a must.

    --
    Rhodri James *-* Wildebeest Herder to the Masses
     
    Rhodri James, Jun 13, 2009
    #6
  7. koranthala

    Roy Smith Guest

    In article <>,
    "Rhodri James" <> wrote:

    > The Mythical Man-Month (Brooks) is a must.


    What's amazing about this book is just how relevant it is today, 35 years
    after it was written. Some of the technical details have changed (how many
    of us still keep our project notes on microfiche?), but cross out
    "microfiche" and write in "wiki" and what he's saying is just as valid
    today. It's not about computer science. It's not really even about
    software engineering. It's more about general project management than
    anything else.

    In the same vein, Death March, by Ed Yourdon.
     
    Roy Smith, Jun 14, 2009
    #7
  8. koranthala

    Paul Rubin Guest

    Roy Smith <> writes:
    > In the same vein, Death March, by Ed Yourdon.


    I've been wanting to read "Antipatterns".
     
    Paul Rubin, Jun 14, 2009
    #8
  9. koranthala

    koranthala Guest

    On Jun 14, 1:52 am, "Rhodri James" <>
    wrote:
    > On Sat, 13 Jun 2009 18:37:13 +0100, koranthala <>  
    > wrote:
    >
    >
    >
    > >> Code Complete and GOF are software engineering books but not really
    > >> CS books.

    >
    > > I understand and concur. Since I am a software engineer - coming in to
    > > software from a different background - what I am looking for is self-
    > > improvement books for a software engineer.

    >
    > In that case The Mythical Man-Month (Brooks) is a must.
    >
    > --
    > Rhodri James *-* Wildebeest Herder to the Masses


    Thank you Rhodri.
    I do have Mythical Man-Month - a great book indeed.
    I was looking for more technical books -
    I have now got a good set - Putting it across so that others can also
    use maybe -

    Code Complete,
    GOF,
    Mythical Man-Month,
    SICP - Thank you Paul - I have downloaded it from Web Site,
    Introduction to algorithm - I have placed an order for the same,
    The Pragmatic Programmer - Planning to buy,
    Refactoring: Improving the Design of Existing Code - again planning to
    buy,
    The C Programming Language - I had this, lost it, now I will buy
    again,
    The Little Schemer - I am not sure about buying this - I dont know
    scheme
    Software Tools - Seems to be a classic - not sure whether I will buy.

    Regards
    K
     
    koranthala, Jun 14, 2009
    #9
  10. koranthala

    rustom Guest

    On Jun 14, 10:38 am, koranthala <> wrote:
    > Software Tools - Seems to be a classic - not sure whether I will buy.

    In that vein but more modern -- Art of Unix Programming by Eric
    Raymond (available online)
    Some of my old favorites:
    Intro to functional programming by Bird and Wadler
    TAOCP slightly more modernized more heady and less programmer oriented
    -- Concrete Mathematics by Knuth and...
    Science of Programming by David Gries; again more modernized to
    Logical Approach to Discrete Mathematics
    Bentley's Wriiting Efficient Programs and Programming pearls

    Dijkstra's writings -- http://www.cs.utexas.edu/~EWD/transcriptions/EWD10xx/EWD1036.html
    --
    are not kind to software engineers [His defn of SE -- How to program
    if you cannot].

    Seemingly irrelevant -- Good programmers are very good with their
    editors -- someone mentioned yegge. Read him for inspiration on
    emacs. Of course you can use something else but its important to get
    good at it.
     
    rustom, Jun 14, 2009
    #10
  11. In message <d177c9ea-4643-4dbe-
    >, koranthala wrote:

    > I do have Mythical Man-Month - a great book indeed.
    > I was looking for more technical books ...


    No-one has mentioned Andrew Tanenbaum's "Computer Networks". So much of
    programming seems to involve networking these days, I think the current
    (4th) edition is a great introduction to how to think in network terms,
    particularly about security issues.
     
    Lawrence D'Oliveiro, Jun 14, 2009
    #11
  12. koranthala

    Roy Smith Guest

    In article <>,
    Paul Rubin <http://> wrote:

    > Roy Smith <> writes:
    > > In the same vein, Death March, by Ed Yourdon.

    >
    > I've been wanting to read "Antipatterns".


    I didn't think that was so great. It had a lot of hype, which lead to be
    believe it would be something wonderful, but I wasn't so impressed.
     
    Roy Smith, Jun 14, 2009
    #12
  13. koranthala

    Paul Rubin Guest

    Roy Smith <> writes:
    > > I've been wanting to read "Antipatterns".

    >
    > I didn't think that was so great. It had a lot of hype, which lead to be
    > believe it would be something wonderful, but I wasn't so impressed.


    Hmm, good to know. Thanks.
     
    Paul Rubin, Jun 14, 2009
    #13
  14. Nathan Stoddard wrote:

    > The best way to become a good programmer is to program. Write a lot of
    > code; work on some large projects. This will improve your skill more than
    > anything else.


    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.


    --
    Steven
     
    Steven D'Aprano, Jun 14, 2009
    #14
  15. Hi,

    > Which are the classic books in computer science which one should
    > peruse?


    From having read this discussion up to now I'd recomend you to read code
    written by good programmers.

    Christof
     
    Christof Donat, Jun 14, 2009
    #15
  16. koranthala

    rustom Guest

    On Jun 14, 6:04 pm, Steven D'Aprano
    <> wrote:

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


    When Dijkstra was asked what next programming language to learn he
    would typically recommend Latin :)

    > Really? So you don't think that the best way to get good at something
    > is to practice? I think I'm paraphrasing Richard Feynman here, but the
    > only way to truly understand something is to do it.


    > Obviously a bit of guided learning is a major boon, but you can't be practice.


    For every one Horowitz there are a thousand wannbes thumping on the
    piano trying to become Horowitz.
    The traction that practice gives is maximal only in the beginning.
     
    rustom, Jun 14, 2009
    #16
  17. Graham Ashton wrote:

    > On 2009-06-14 14:04:02 +0100, Steven D'Aprano
    > <> said:
    >
    >> Nathan Stoddard wrote:
    >>
    >>> The best way to become a good programmer is to program. Write a lot of
    >>> code; work on some large projects. This will improve your skill more
    >>> than anything else.

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

    >
    > Really? So you don't think that the best way to get good at something
    > is to practice?


    Shame on you for deliberately cutting out my more serious and nuanced answer
    while leaving a silly quip. As I went on to say:

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

    There are huge numbers (millions?) of lousy programmers who program every
    single day and never become good programmers. "Practice makes perfect" only
    works for mechanical skills and rote learning, neither of which are
    especially applicable to good programming. (Although rote learning is
    helpful for reducing the time taken to look up syntax and library
    functions.) Without some level of understanding and creativity, as soon as
    you hit a problem that can't be efficiently solved by one of the patterns
    or recipes you've learned, you're in trouble.

    All the practice in the world won't give you the discipline to write
    appropriate comments, or to test your code thoroughly. Practice won't
    *necessarily* make you creative -- you can't be creative in a field you
    know nothing about, but having learned the language and the libraries
    doesn't necessarily mean you can apply the tools to solve novel problems.
    Many programmers know a few good tricks, and try to hammer every problem
    into a form that can be solved by one of the few tricks they know, no
    matter whether it is appropriate or not. Witness how many people try to
    write regexes to parse bracketed expressions, a problem which requires a
    proper parser.

    (This is not necessarily a bad thing, but it often is.)

    You could write a piece of code like:

    s = ""
    for word in some_data:
    s += " " + word

    a thousand times a day, and *never* learn that this is Bad Code, because you
    never profile it with more than a few thousand words and so never discover
    that it's O(n**2). Eventually when it gets released into the real world,
    somebody reports that it takes eight hours to process 100MB of words, and
    then *some other guy* re-writes your code to use s = " ".join(words), and
    you remain in blissful ignorance, happily writing your bad code every
    single time.



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

    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,
    but few people understand precisely what takes place when you cook food.
    People can catch and throw balls, and have little or no understanding of
    gravity, air-resistance, and the mechanics of their own bodies.

    In fact... just before you hit Delete on this post, how about you explain
    *how* you make your finger reach out and press the Delete key? You probably
    move bits of your body a million times a day, and the chances are very high
    that until now, you've never once noticed that you have no idea how you do
    it. I think that simple fact blows out of the water the concept that doing
    implies understanding.


    > Obviously a bit of guided learning is a major boon, but you can't be
    > practice.


    I didn't say that practice was useless. Arguably, it may even be necessary
    to be a good programmer. (Although less so for an unsurprising language
    like Python, where it is very common to write code which works correctly
    the first time.) But practice is clearly not *sufficient* to be a good
    programmer.



    --
    Steven
     
    Steven D'Aprano, Jun 14, 2009
    #17
  18. koranthala

    koranthala Guest

    > There are huge numbers (millions?) of lousy programmers who program every
    > single day and never become good programmers.


    I think I can attest to that.
    I was a programmer (in a low level language) in a huge MNC code monkey
    shop for > 7 years.
    I consider myself to be Ok - not great, but not very poor either.
    I had written a lot of code in those 7 years, but due to lack of
    exposure and laziness, never knew that I have to read books.
    As I mentioned before, I come in from a non-computing engineering
    degree, so I did not even know which books to read etc.

    I had seen many of the frameworks written by others, and was extremely
    impressed. I considered those people who wrote those frameworks to be
    geniuses - until I accidently came across one site where I read about
    GOF.
    I bought it and read it - and straight away understood that whatever I
    learned in the last 7 years, I could have learned most of them in 6
    months, provided I had read the right books. All the frameworks were
    just amalgamation of these patterns.

    Now, I voraciously purchase and read books - both in the domain of my
    work and on computer science in general. Even though I am not going to
    be recruited by google any time soon :), I think I have become a much
    better programmer over the last one year. I see my code before 1 year
    and I am horrified :).

    Practice makes perfect only if you push yourself - and you need
    exposure to know that.
     
    koranthala, Jun 14, 2009
    #18
  19. koranthala

    Chris Jones Guest

    On Sun, Jun 14, 2009 at 09:04:02AM EDT, Steven D'Aprano wrote:
    > Nathan Stoddard wrote:
    >
    > > The best way to become a good programmer is to program. Write a lot of
    > > code; work on some large projects. This will improve your skill more than
    > > anything else.

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


    Vivaldi vs. Mozart

    And the latter especially had definitely mastered his editor. Just think
    of the sheer volume of the coding he managed during his short life.

    Not many bugs either…

    CJ
     
    Chris Jones, Jun 14, 2009
    #19
  20. koranthala

    dads Guest

    I'm wanting to purchase some of the titles that have been raised in
    this thread. When I look they are very expensive books which is
    understandable. Do you think getting earlier editions that are cheaper
    is a daft thing or should I fork out the extra £10-£30 to get the
    latest edition?
     
    dads, Jun 14, 2009
    #20
    1. Advertising

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

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Juan T. Llibre
    Replies:
    0
    Views:
    3,453
    Juan T. Llibre
    Sep 18, 2005
  2. think 4 rohit

    Need GATE pdf Books 4 Computer Science

    think 4 rohit, Jan 31, 2009, in forum: C Programming
    Replies:
    0
    Views:
    1,561
    think 4 rohit
    Jan 31, 2009
  3. Phil Runciman

    FW: Good books in computer science?

    Phil Runciman, Jun 16, 2009, in forum: Python
    Replies:
    0
    Views:
    293
    Phil Runciman
    Jun 16, 2009
  4. Stu
    Replies:
    34
    Views:
    1,521
  5. David Thomas

    Recommend decent Computer Science books

    David Thomas, Jun 27, 2012, in forum: Python
    Replies:
    5
    Views:
    286
    David Thomas
    Jun 28, 2012
Loading...

Share This Page