Slashdot Mirror


Ask Slashdot: Books for a Comp Sci Graduate Student?

peetm (781139) writes "Having visited with me and my wife recently, the girlfriend of an ex-student of mine (now taking an M.Sc. in pure CS) asked me to suggest useful books for her boyfriend: '... He recently mentioned that he would love to have a home library, like the one you have, with variety of good, useful and must-have books from different authors. ... Mostly, I was thinking your advice would be priceless when it comes to computer science related books, but .. I would appreciate any sort of advice on books from you. ...' Whilst I could scan my own library for ideas, I doubt that I'm really that 'current' with what's good, or whether my favorites would be appropriate: I've not taught on the M.Sc. course for a while, and in some cases, and just given their price, I shouldn't really recommend such books that are just pet loves of mine — especially to someone who doesn't know whether they'd even be useful.

And, before you ask: YES, we do have a reading list, but given that he'll receive this as part of this course requirement anyway, I'd like to tease readers to suggest good reads around the periphery of the subject."
I'll throw out Pierce's Types and Programming Languages (and probably Advanced Topics in Types and Programming Languages ), and Okasaki's Purely Functional Data Structures .

247 comments

  1. knuth's art of computer programming by whyloginwhysubscribe · · Score: 5, Insightful

    I don't think knuth's 3 volumes have dated at all- they're still the definitive computer science tomes.

    1. Re:knuth's art of computer programming by Animats · · Score: 4, Interesting

      They're kind of dated, because few people do sorts and list manipulation at that level any more. I have both an original edition and a current edition of vols. 1-3, but haven't looked at them in years.

    2. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      If you consider fortran style code filled with gotos as "not dated" then ok.

    3. Re:knuth's art of computer programming by Yaztromo · · Score: 5, Informative

      They're kind of dated, because few people do sorts and list manipulation at that level any more. I have both an original edition and a current edition of vols. 1-3, but haven't looked at them in years.

      Sure, for the average programmer these days who relies on existing libraries, these probably aren't all that useful.

      As a grad student working on a thesis and other papers however, Knuth's books are invaluable for citations. Need to defend the use of a specific algorithm? Cite Knuth. His books were invaluable citation material for when I wrote and defended my thesis a few years back.

      This is, of course, good science. You may not need to use Knuth to program your own B* tree, but you have a pretty much universally accepted reference for citation if you use one in your research.

      Yaz

    4. Re:knuth's art of computer programming by ImprovOmega · · Score: 2

      Few programmers actually do sorts and list manipulation at that level anymore, but any of them worth a damn should be *able* to do them at that level and understand the underlying theory to make the most effective use of them.

      You may not need to be a mechanic to drive a car, but you'll damn sure get better performance out of it if you are.

    5. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      They're not dated if you write assembly. Many people still write assembly, especially those in graduate programs. Your job isn't everyone's job.

    6. Re:knuth's art of computer programming by gnupun · · Score: 1

      I don't think knuth's 3 volumes have dated at all- they're still the definitive computer science tomes.

      The problem with Knuth's books is that he uses MIX, a weird type of assembly language, to write his algorithms. This probably made sense in the 70s and 80s when high level languages had not matured much, but not today. In this day of modern languages, the book should implement algorithms in C, Python or even Pascal.

    7. Re:knuth's art of computer programming by Pseudonym · · Score: 1

      Everyone should work their way through TAoCP, but I'm not sure that everyone needs a copy. The same goes for Concrete Mathematics by Knuth, Graham and Patashnik.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    8. Re:knuth's art of computer programming by Assmasher · · Score: 1

      Totally agree.

      My parent, of all people, gave me a very nice set to replace the beat up ones I've had just two Christmas holidays ago. It had a fourth book! Combinatorial Algorithms FTW!

      Even if you don't reference them, they're sort of instant nerd street cred if you have them lying around. Hehe

      --
      Loading...
    9. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      PURE CS?

      Then a collection of dusty old math books soaked in tears.

    10. Re:knuth's art of computer programming by T.E.D. · · Score: 1

      Reasons I've needed to roll my own Knuth-ish data structures or algorithms in the last 10 years:

      1. Can't use dynamic allocation due to real-time constraints performance constraints (execution time consistency)
      2. Can't use dynamic allocation due to needing special memory (eg: contiguous memory for a device driver)
      3. Needed defined behavior in the face of constrained concurrency issues (eg: 1 reader, 1 writer), and didn't want something heavy like an OS lock.
      4. Needed to add a feature to some old C code running on an old Unix box, and it required a sort of nearly-sorted input.

      Perhaps I'm just being the cranky old guy here, but a software engineer will have things like this come up from time to time in their career. A good one should be capable of dealing with them.

    11. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      Add on Introduction to Algorithms, or CLRS as it is colloquially known, and you should be set for most needs.

    12. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      There are now 4 and a 5th should be coming "soon" and I agree: highly recommended.

    13. Re:knuth's art of computer programming by david_thornley · · Score: 1

      The language used for the algorithms is not important, and MIX is good for analyzing performance. The algorithms are given in pseudo-code that should give no problems in translating into any imperative language (I honestly haven't tried translating them into Prolog). Knuth's argument was that every computer scientist should know some assembly language (more doubtful nowadays, I'd say), and that if he picked a higher-level language it would be dated soon. (Algol? PL/I?)

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    14. Re:knuth's art of computer programming by Anonymous Coward · · Score: 0

      Check this out - http://hsht.eu/k

  2. Several languages by Anonymous Coward · · Score: 1

    To be well-versed, even if you don't become an expert in each, I would recommend:
    Revolutionary Guide to Assembly Language - While it covers only real-mode, it exposes a lot of the hardware to a CS or CSE major without getting into the electronics of things.
    Beginning C++ through game programming - Mainly because a lot of material out there is dry. If you have basic games to go with the programming, it makes understanding what you're doing, easier. Especially with object oriented programming.
    MySQL books - There are a variety of good books, but in the real-world, storing data doesn't always belong in the system you're on, it could be somewhere else. You can't really get away without knowing databases.
    Zen of Code optimization and the dragon book - Understanding what the compiler is doing and what optimizations it makes are key to understanding why code is written the way it is.

    There are many others, but those are in my library and have been of significant help during my undergraduate studies; which helped pave the way towards my MS in EE.

    1. Re:Several languages by rubycodez · · Score: 1

      Computer science isn't about those practical things a developer does.

      Compiler theory, computability theory, language design, OS design, that's more the grist for the grad compsci brain-mill

    2. Re:Several languages by sribe · · Score: 1

      Computer science isn't about those practical things a developer does.

      Well it certainly does include denotational semantics of programming languages. And there's no better way to really master that, than to learn and use a representative language of each of the major types ;-)

    3. Re:Several languages by rubycodez · · Score: 2

      better to design a few types of languages and build compilers for them

    4. Re:Several languages by HornWumpus · · Score: 2

      Before learning any existing ones!

      So you don't spoil your purity.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    5. Re:Several languages by Anonymous Coward · · Score: 0

      Not that those are bad books, but those are kind of lower level undergraduate books (and easily usable by advanced high school students even). I would expect someone going into a graduate program to have been through most of that and hopefully remember a lot of it too, even for the pure CS types looking for a few examples of principles in practical use.

    6. Re:Several languages by rubycodez · · Score: 2

      a comp-sci grad student has already done that

    7. Re:Several languages by HornWumpus · · Score: 1

      All of them? None of them focused elsewhere?

      That has not been my experience with advanced degree holders.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    8. Re:Several languages by epee1221 · · Score: 1

      Getting a denotational semantics right takes a lot more than familiarity with programming in the kind of language you're specifying. You might be better served by reading up on order theory and logic (get a text that's really pedantic about everything).

      --
      "The use-mention distinction" is not "enforced here."
    9. Re:Several languages by Pseudonym · · Score: 1

      That would be true if programming languages defined in the Scott-Strachey way, which pretty much nobody does these days. The ones that do formalise their semantics tend to do so either based on an abstract machine (see Pierce's Types and Programming Languages as mentioned in the summary), or categorically.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    10. Re:Several languages by rubycodez · · Score: 1

      in their undergrad days, yes

    11. Re:Several languages by HornWumpus · · Score: 1

      Sorry no. A CS undergrad proves nothing. It certainly doesn't prove you can competently write in a single language. I've seen it first hand, many times.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    12. Re:Several languages by david_thornley · · Score: 1

      While knowing how to make a compiler is quite useful, and covers some important concepts, I'm not sure a computer scientist needs to build more than one.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    13. Re:Several languages by rubycodez · · Score: 1

      you have no viable point, professional programmer title also doesn't prove you can competently write in a signle language either.

  3. relations by cosm · · Score: 4, Funny

    A book on consise exposition without complex family relations; one that cuts right to the content. That would be a good start.

    --
    'We are trying to prove ourselves wrong as quickly as possible, because only in that way can we find progress.' RPF
    1. Re:relations by MikeTheGreat · · Score: 4, Funny

      "Having visited with me and my wife recently, the girlfriend of an ex-student of mine (now taking an M.Sc. in pure CS) asked me to suggest useful books for her boyfriend: '..

      This brings to mind the ever-classic::

      Dark Helmet: Before you die there is something you should know about us, Lone Star.
      Lone Starr: What?
      Dark Helmet: I am your father's brother's nephew's cousin's former roommate.
      Lone Starr: What's that make us?
      Dark Helmet: Absolutely nothing! Which is what you are about to become.
      (from http://www.imdb.com/title/tt00...)

    2. Re:relations by Anonymous Coward · · Score: 0

      Noddy Loses Sixpence, hardcover edition.

    3. Re:relations by Laxori666 · · Score: 1
      father's brother = uncle
      uncle's nephew = either you, or a sibling, or a cousin, or a sibling
      So, three choices:

      a) I am your cousin's former roommate
      b) I am your sibling's cousin's former roommate
      c) I am your cousin's cousin's former roommate

      Your siblings cousin is also your cousin so that leaves us with two choices:

      a) I am your cousin's former roommate
      b) I am your cousin's cousin's former roommate

      Your cousin's cousin can again be either: you, your sibling, your cousin, or someone not blood-related. So that leaves us:

      a) I am your cousin's former roommate
      b) I am your former roommate
      c) I am your sibling's former roommate
      d) I am your cousin's cousin's former roommate

      There's absolutely no point to this point so I'm just going to stop myself right here.

  4. Personal by Anonymous Coward · · Score: 0

    Isn't selecting books (even CS books) sort of a personal matter? It seems to me that a gift certificate to Amazon or B&N might be just as appropriate.

  5. Books are decorations by tomhath · · Score: 0

    Technical books are pretty much obsolete by the time they're published. If you want to get some attractive classics to put on a shelf, go for it.

    1. Re:Books are decorations by AdamHaun · · Score: 1

      This is graduate level, though. Grad-level books tend to stick around for decades.

      --
      Visit the
    2. Re:Books are decorations by Anonymous Coward · · Score: 1

      While I agree that this is true of 99% of computer-related books, there are some that are classics. Knuth's Art of Computer Programming; Strang's Linear Algebra; GoF's Software Patterns; Brooks' The Mythical Man Month; etc.

    3. Re:Books are decorations by rubycodez · · Score: 2

      nonsense, good books about OS and language design, compiler theory, algorithms, information theory: those are good for decades.

    4. Re:Books are decorations by Anonymous Coward · · Score: 1

      Maybe if all you program in are fad languages and frameworks. Books like The C Programming Language, TCP/IP Illustrated, The Practice of Programming, The Elements of Programming Style, etc. are timeless books.

    5. Re:Books are decorations by narcc · · Score: 2

      GoF's Software Patterns

      LOL, What? This is what that makes your list look like: Hemingway's For whom the bell tolls; Faulkner's As I lay dying; Vincent & Burpo's Heaven is for real; Sinclair's The jungle

      What a joke!

    6. Re:Books are decorations by Anonymous Coward · · Score: 1

      Yep that book is " classically" overrated. It's junk that has gained a mythical status it doesn't deserve. That book isnthe cause of innumerably terrible, convoluted and unmaintainable code bases because someone was writing to "the patterns".

    7. Re:Books are decorations by Anonymous Coward · · Score: 0

      nonsense, good books about OS and language design, compiler theory, algorithms, information theory: those are good for decades.

      So is common sense.

      That doesn't mean that either are used with any regularity in software today.

    8. Re:Books are decorations by Desler · · Score: 2

      It's an even bigger joke is when you get quizzed in interviews by mindless retards who expect you to have memorized all the worthless "patterns" in the book. And god forbid if you ever look at the code these same idiots write. They make the OpenSSL codebase look like the greatest thing ever. If you ever though C macros could be used for ungodly amounts of obfuscation and indirection one only needs to look at the AbstractFactoryFactoryBuilderFacades that these "patterns" people write.

    9. Re:Books are decorations by motorhead · · Score: 0

      Yep
      Good start...

      --
      Employee Of the Month - Cyberdyne Systems Corporation - September 1997
    10. Re:Books are decorations by Anonymous Coward · · Score: 0

      To be fair, factories are good for unit testing of higher level components. And pretty much bugger all else. In C++ or Java.

      In fact, almost all of the design patterns could be made obsolete by not using C++ or Java.

    11. Re:Books are decorations by Pseudonym · · Score: 1

      It would be more correct to say that it's "classically" misunderstood. GoF is fundamentally a dictionary, but too many people understand it to be a recipe book.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    12. Re:Books are decorations by serviscope_minor · · Score: 2

      It would be more correct to say that it's "classically" misunderstood. GoF is fundamentally a dictionary, but too many people understand it to be a recipe book.

      A 1000 times this. People seem to very frequently misundertand that GoF is a book on nomenclature. They give names to common patterns that exist in good software development. These patterns exist because they are useful and they come up time and time and time again. If you write software you will almost certainly implement a number of these patterns, and you certainly use software that uses them. But either way, these patterns exist in software with or without them being given names.

      For the less experienced it gived examples of where such patterns might be used, but that's not the main point.

      The main point is that I can call patterns by name and the person I'm talking to will understand what I mean. This is better than having to describe them each time.

      --
      SJW n. One who posts facts.
    13. Re:Books are decorations by Desler · · Score: 1

      I write C++ on a daily basis for more than a decade and have never needed that worthless book. Same with pretty much any other C++ programmer I've talked to and many are far better programmers than me. And the code we write is not the obfuscated junk that only a "patterns" person could write. The only people I've ever met who seem to think this book is great are Java people writing unmaintainable "patterns" code.

    14. Re:Books are decorations by Anonymous Coward · · Score: 0

      Nope, it's simply overrated crap.

    15. Re:Books are decorations by lagomorpha2 · · Score: 1

      "Sinclair's The jungle"

      An important book for preparing any college student for what life is like in today's job market.

    16. Re:Books are decorations by Pseudonym · · Score: 1

      It is overrated, but only by people who didn't understand it.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  6. There Is Only One Answer: by Anonymous Coward · · Score: 0

    And the answer is, "Whatever Will Get Him Past His Qualifiers."
    And that varies from school to school. Some schools have sufficient flexibility that it will vary from student to student.

  7. Um, shouldn't he already know? by Anonymous Coward · · Score: 2, Insightful

    Generally, the highly respected works for each subarea of CS are already well known. Someone studying at the graduate level should have no difficulty finding them on their own, one would think.

    Moreover, at the graduate level, one is generally studying for some specialization. Without knowing what specialization this person has chosen, any advice we could give him would be unlikely to be of use.

  8. Classics by DaveAtFraud · · Score: 4, Insightful

    Brooks - "The Mythical Man-month"
    Yourdon - "Death March"
    DeMarco & Lister - "Peopleware"

    Of course he may change majors after reading them.

    Cheers,
    Dave

    --
    They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
    Ben
    1. Re:Classics by Anonymous Coward · · Score: 0

      Someone told me their prof basically hazed them first before having them read those books.

    2. Re:Classics by aaronb1138 · · Score: 1

      Add in some classical literature as well: Dumas, Steinbeck, Hemingway, Twain for good general frameworks; Nabokov, Chomsky, and Hofstadter for semantics and creative architecture. The biggest lacking I see in engineering majors (ALL of them) is understanding of other perspectives and the big picture. Good literature is a huge help here.

    3. Re:Classics by 12dec0de · · Score: 1

      I would add
          Martin - The Clean Coder
      but switch
          DeMarco to "The Deadline"

      But while we'are at it, "The Phoenix Project" by Kim,Behr,Spafford make at least as good a read as DeMarco. Not strict science, but good practice still.

    4. Re:Classics by T.E.D. · · Score: 1

      Add in some classical literature as well

      Actually, if you are going to go there, I'd highly suggest any prospective engineer go see a production of Titanic (the musical play, not the movie). There's this whole subplot of the owner constantly pressuring the captain and the engineers to cut corners and run outside the established safety margins, in order to meet a schedule that will help his own marketing and make himself a few extra nickels. Of course this causes a huge disaster, in which the designer, the engineers, and the captain take the fall and go down with the ship (along with 2/3 of the passengers). Meanwhile the owner scams himself a spot on the lifeboat (callously bumping off a pregnant woman).

      Its the best illustration I've ever seen of what happens on large engineering project that go badly. Watch that, and you are prepared for a career in Engineering.

    5. Re:Classics by DaveAtFraud · · Score: 1

      Programmer: "It's not a bug. It works as designed."

      Me: "So did the Titanic."

      Cheers,
      Dave

      --
      They that can give up essential liberty to obtain a little temporary safety deserve neither safety nor liberty.
      Ben
  9. Re:Mein Kampf by Adolf Hitler by Anonymous Coward · · Score: 0

    Don't you mean levantine nomads???

  10. Beginning Linux Programming by Anonymous Coward · · Score: 0

    "Beginning Linux Programming" by the Wrox Press. It covers Linux system calls.

    1. Re:Beginning Linux Programming by cmarkn · · Score: 1

      I think you'd be better skipping this and going straight to the authority on this subject: Stevens, W. Richard & Rago, Stephen A.; "Advanced Programming in the Unix Environment, Third Edition"; Addison-Wesley Professional, 2013.

      --
      People should not fear their government. Governments should fear their people.
  11. Computer Science by hackus · · Score: 3, Informative

    Since most of the "Computer Science" we call today is actually "industrial science" with variations on things we already know, you shouuld go back and learn all of the fundamentals fo the science, which in my opinion was established by Knuth.

    Which, I can assure you, you haven't learned them if you went to a typical University in the United States. For one thing, you spent way too much time reading about other things to cover the basics of the science of computing in 4 years at a University.

    http://www.amazon.com/Computer...

    This should be a graduation present for all University Students, and a cornerstone for those who want to avoid college because of cost/indoctrinized education and begin studying the topic yourself.

    What I like about this set of books is, you can even as a beginner, skim the text and if you like, avoid the theory, and immediately start trying to write code and in many cases, the algorithms in the code point to an understanding to the process of many mathematical functions.

    With this understanding, you can start trying to tackle some of the fairly formidable abstract ideas in the text which forms the foundations of computer science.

    For example, I learned what integration was about from a computer algorithm this way when I was 14, and once I understood what was happening with the code the math was much simpler. I always thought Calculas at the time was big and scary. Not so scary when you do it in C code.

    Calculas = Fancy Adding and Subtracting. :-)

    But you won't touch any subject matter right now, or in the foreseeable future that Donald didn't already cover in these volumes.

    --
    Got Geometrodynamics? Awe, too hard to figure out? Too bad.
    1. Re: Computer Science by Anonymous Coward · · Score: 0

      Is this "calculas" anything like calculus?

    2. Re:Computer Science by ImprovOmega · · Score: 4, Insightful

      The brilliance of calculus is the usage of infinitely many infinitely small rectangular slices to nonetheless derive an exact measurement of the finite area under a curve. At its core, calculus is the merging of the infinite and the finite. When you truly understand it, it is one of the most elegant and beautiful discoveries in human history.

    3. Re:Computer Science by Anonymous Coward · · Score: 0

      Although the vast majority of calculus books introduce integration and derivatives via numeric approximations, before going into rigorous definitions and/or rule based analytic use. But often there is more that needs to click than just a picture of what is doing if applying it to situations where numeric integration can fail horribly.

    4. Re:Computer Science by Anonymous Coward · · Score: 0

      Eh, Calculus is alright.

      I'd give it eight out of ten. Plus C.

    5. Re:Computer Science by Anonymous Coward · · Score: 0

      No it's not fancy addition and substraction. It goes much beyond that, and your level of understanding leads to misconceptions for some real stuff, though possibly not the level at which you are operating at. Just like you pointing your finger at people who should "learn the fundamentals", you should take a more formal training in mathematics. And you clearly don't know what top notch research looks like, with that "good ol' days" attitude.

    6. Re:Computer Science by Anonymous Coward · · Score: 0

      I still love the glazed look in my students when I point out that there are only three things in the calculus: the Limit, the Derivative and the Integral, but that they'll fail the tests if they are bad at algebra.

    7. Re:Computer Science by Anonymous Coward · · Score: 0

      Yes but they explain that wonderful idea in one lesson.

      Then you spend 3 or 4 years learning to differentiate and integrate increasing complex functions by rote. Then even most science graduates will never use it again for the rest of their lives.

  12. Code Complete by Anonymous Coward · · Score: 4, Informative

    Code Complete has been one of the most useful texts that I have found.

    1. Re:Code Complete by ebbe11 · · Score: 1

      Seconded! Actually, I will heartily recommend anything that Steve McConnell has written.

      --

      My opinion? See above.
  13. Introduction to Algorithms by Anonymous Coward · · Score: 1

    Way more than an introduction and a good reference as well
    http://www.amazon.com/Introduction-Algorithms-Thomas-H-Cormen/dp/0262033844

    1. Re:Introduction to Algorithms by godrik · · Score: 1

      And to go with that: "concrete mathematics" which gives lots of basics many grad students lack.
      http://www.amazon.com/Concrete...

  14. in my library ... by kairis · · Score: 1

    Tanenbaum's Operating Systems: Design and Implementation and Computer Networks.

  15. A good hardware book or three. by HornWumpus · · Score: 1

    Circuit analysis for dummies.

    It's time he learned the fundamentals.

    --
    John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
  16. The Psychology of Computer Programming by PolygamousRanchKid+ · · Score: 2

    . . . from Gerald Weinberg: http://en.wikipedia.org/wiki/G...

    --
    Schroedinger's Brexit: The UK is both in and out of the EU at the same time!
    1. Re:The Psychology of Computer Programming by codegen · · Score: 1

      This...

      --
      Atlas stands on the earth and carries the celestial sphere on his shoulders.
    2. Re:The Psychology of Computer Programming by TwobyTwo · · Score: 1

      My, I thought I was about the last person around who remembered Weinberg's book, but I see he's republished it. A group I worked with in 1976 used it to guide our approach to building teams and to "egoless programming". As i recall, most ot the examples are from the punch card era, but the reviews on Amazon say that Weinberg's updated it with comments based on experiences in the decades since. That said, I think it's a stretch to recommend the Psychology of Computer Programming as "Computer Science". It's an interesting exploration of the social dynamics of building good programming teams, but as I recall it has little to do with computer science.

    3. Re:The Psychology of Computer Programming by aojensen · · Score: 1

      Agree. Add to that: - Winograd & Flores: Understanding Computers and Cognition: A New Foundation for Design

  17. A graph theory book... by Anonymous Coward · · Score: 2, Funny

    to clarify your relationship to this guy!

    1. Re: A graph theory book... by Anonymous Coward · · Score: 0

      Fifty Shades of Grey

    2. Re: A graph theory book... by Pseudonym · · Score: 1

      Nah, go with Foley and van Dam. Most modern hardware gives you at least 256 shades of grey.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
  18. Re:Mein Kampf by Adolf Hitler by presidenteloco · · Score: 1

    I wouldn't usually respond to such a blatant troll, but the level of personal insecurity you demonstrate can only be the result of being rejected by your mother when trying to obtain milk. Seek some help.

    --

    Where are we going and why are we in a handbasket?
  19. Some non-Knuth suggestions by Stephan+Schulz · · Score: 4, Interesting
    --

    Stephan

    1. Re:Some non-Knuth suggestions by EvanED · · Score: 1

      I'm a PL person, so I'm biased, but I second both the Dragon Book as well as your choice of Automata Theory. Some additional notes:

      The 1st edition Dragon Book can be picked up cheap. Don't. The second edition covers many more topics, and in addition the field of compiler optimization was more or less revolutionized by the invention of "SSA" form after the first edition was published.

      That said, it's not the greatest book for the front end of the compiler, and maybe overall picture. "Engineering A Compiler" by Cooper and Torczon is a reasonable choice and is clearer and better organized on that front, but doesn't cover as much especially on the advanced side.

      Hopcroft & Ullman has been superceeded by Hopcroft, Motwani, and Ullman, which I point out because the authors and names changed. A lot of people like Sipser's book: I think it's overrated, and much prefer Hopcroft. Sipser's treatment of CFLs for example is anemic.

    2. Re:Some non-Knuth suggestions by Stephan+Schulz · · Score: 1

      Sipser's book is not bad, but I find it much shallower than any of the editions of Hopcroft[,Motwani], Ullman. Many of his proofs seemed to be more hand-waving. On the other hand, he is somewhat good at building intuition, which is valuable for students not yet used to the domain.

      --

      Stephan

    3. Re:Some non-Knuth suggestions by EvanED · · Score: 1

      That's pretty much my impression too, especially in the formal languages part and doubly-especially for CFLs & PDAs. (In fairness, I think Sipser might give a better account of certain complexity topics; e.g. my Hopcroft doesn't seem to talk about logspace, which either Sipser does or my prof did not from a book.)

      My guess is that the people who really like Sipser like it because they took a class that used it, they liked that class, and they haven't seen Hopcroft. :-)

    4. Re:Some non-Knuth suggestions by Pseudonym · · Score: 1

      [...] and in addition the field of compiler optimization was more or less revolutionized by the invention of "SSA" form after the first edition was published.

      Also not covered in the first edition are bottom-up code generation and graph colouring register allocation. These three techniques are the back-end of a typical compiler these days, if you don't count highly machine-specific stuff like static pipeline scheduling and D-cache optimisation.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    5. Re:Some non-Knuth suggestions by Anonymous Coward · · Score: 0

      Regarding the dragon book, I'd like to add that if that's all you know it makes you prone to massive over-engineering. To the point that the likes of XML will seem like a good shortcut to avoid going through all the hassle.

      It's not a book, but a useful skill is explained in this little gem, how to build relatively simple and easy input parsers of remarkable power for their simplicity, and suitable not just for toy compilers but also configuration file parsing and general input parsing: Jack Crenshaw's Let's Build a Compiler (when I checked, the site was slow but functional; there are other sources of the same material available). If nothing else, it's also a good fun exercise to work through.

  20. Programming & databases by leandrod · · Score: 1

    Knuth and Dijkstra for programming, Date for databases.

    --
    Leandro Guimarães Faria Corcete DUTRA
    DA, DBA, SysAdmin, Data Modeller
    GNU Project, Debian GNU/Lin
    1. Re:Programming & databases by MtHuurne · · Score: 1

      If you like Dijkstra's style, I can recommend Programming: The Derivation of Algorithms by Kaldewaij. For details, see my favorites list in a later post.

  21. Books about thinking about CS by Anonymous Coward · · Score: 1

    The Little Schemer, The Seasoned Schemer, and The Reasoned Schemer by Daniel P. Friedman et al - these books together are one of the best guides to thinking-about-programming ever written, even if you never write a line of LISP in your life.
    Gödel, Escher, Bach by Douglas R. Hofstadter - still one of the best introductions to thinking-about-thinking-about-thinking.

  22. Design Patterns by the Gang Of Four by mrflash818 · · Score: 4, Insightful

    I recommend "Design Patterns" by Gamma, Helm, Johnson, Vlissides

    --
    Uh, Linux geek since 1999.
    1. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 1

      The GoF (Gang of Four) Design Patterns book should be a requirement for any undergraduate CS/CE/EE student.

      Also, check out the POSA (Pattern-Oriented Software Architecture) books. http://www.cs.wustl.edu/~schmidt/POSA/POSA2/

      There are 5 books, each focusing on a different area of patterns. I'd get these AFTER you have read and understand 90%+ of Design Patterns.
      http://www.cs.wustl.edu/~schmidt/POSA/ Here is a brief summary of each of the 5.
      (My Recommendation (and that of one of the authors) is to start with #1 or #2, depending on if you going to be writing multi-thread or networked servers/clients )

    2. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 0

      I recommend two:
      The Lazy Man's Guide to Enlightenment
      Computer Science for Dummies (well, this one is made up, so really only one)

    3. Re:Design Patterns by the Gang Of Four by narcc · · Score: 1

      That's not very nice. You should make good recommendations. It's not like the guy asking the question can tell that you're joking, after all.

    4. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 0

      The GoF (Gang of Four) Design Patterns book should be a requirement for any undergraduate CS/CE/EE student.

      Why? The book is terrible. All it has ever lead to is mindless morons parroting patterns and producing over-engineered and unmaintainable code.

    5. Re:Design Patterns by the Gang Of Four by swillden · · Score: 3, Interesting

      I recommend "Design Patterns" by Gamma, Helm, Johnson, Vlissides

      I have trepidation about recommending the GoF book. It's a great book, don't get me wrong, but I think it should be deferred until the reader has a non-trivial amount of real-world experience to dampen any excess of enthusiasm for the patterns. Perhaps what's best is that new software engineers read GoF but are strongly cautioned that they should use it primarily to recognize common patterns, rather than as a recipe book for how they should structure their software, at least until they have more experience.

      It should also be coupled with serious study of anti-patterns. In fact, I'd say that for new professionals a study of anti-patterns is actually more useful than a study of patterns.

      --
      Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
    6. Re:Design Patterns by the Gang Of Four by MtHuurne · · Score: 1

      If you don't read the book until you have lots of experience, you will probably have reinvented most patterns, but using different names for them which will only confuse other people reading your code. Overuse of design patterns may be a necessary developmental phase ;)

      By the way, while it is in the GoF book, I'd argue that Singleton is actually an anti-pattern.

    7. Re:Design Patterns by the Gang Of Four by Pseudonym · · Score: 1

      By the way, while it is in the GoF book, I'd argue that Singleton is actually an anti-pattern.

      It's an anti-pattern in Java and Smalltalk, and probably C# (never used it in anger, so can't say). It's not in lower-level languages (e.g. C++) where the semantics of shared libraries are not specified and you don't have enough meta-object protocol to do dependency injection. In that scenario, singleton is critical to enforce initialisation order.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    8. Re:Design Patterns by the Gang Of Four by MtHuurne · · Score: 1

      Well, I'd argue that a library that needs a single global init call is itself a poorly implemented singleton with all the associated problems. It is unfortunately a common occurrence and wrapping it in a singleton class is a way to deal with it. But in my opinion that is making the best of a bad situation rather than a pattern that I'd recommend if you have anything to say about the library interface.

      I have seen a lot of singleton use in C++ unrelated to libraries and most of those uses became problematic at some point. In C++ in particular, the fact that with a singleton you can't control the moment it destructs can be a problem if the destructor needs to do more than free memory.

    9. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 0

      Right, it does require some experience programming OO before tackling. People also tend to buy GoF for reference and then read Head First Design Patterns along side it (which also brings out a lot of OO principles not that explicit in GoF and has a more readable and modern treatment of the useful patterns on GoF), even Erich Gamma recommended the Head First book.

    10. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 0

      The Design Patterns crowd would beg to differ. Most patterns only emerge after extensive effort and trail and error. The whole point of them is don't reinvent what has already been created through a lot of hard work, you're actually likely to get subtle parts of them wrong.

    11. Re:Design Patterns by the Gang Of Four by david_thornley · · Score: 1

      The GoF book is on patterns of programming, and is fundamentally an attempt to make it easier to communicate programming concepts. It doesn't apply very well to computer science. Also, like Ayn Rand, exposure to Design Patterns at too young an age can distort the growing mind.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    12. Re:Design Patterns by the Gang Of Four by Anonymous Coward · · Score: 0

      Head First Design Patterns is a good intro to the patterns and more accessible than the GoF book.

  23. I was going to say the Stevens Book by Marrow · · Score: 1

    But the original version is 70 bucks! From 1990 no less:

    http://www.amazon.com/UNIX-Net...

    While the 3rd Edition is cheaper:

    http://www.amazon.com/UNIX-Net...

    1. Re:I was going to say the Stevens Book by Desler · · Score: 1

      It's a fucking shame that W. Richard Stevens died so young. His books are still tremendously valuable references and extremely well written.

  24. 24 Deadly Sins of Software Security by rallytales · · Score: 1

    http://www.amazon.com/Deadly-S... Good food for thought dished out in byte-sized chunks. Intellectually tasty and very digestable.

  25. Getting Things Done, David Allen by drgreening · · Score: 1

    "Getting Things Done" by David Allen is certainly not a computer science book, but many successful computer scientists and entrepreneurs I know have read it and use its principles. GTD helps us organize and maintain their opportunities, plans and intents into a structure. It gets our to-do items out of our heads and into an organized system, so we can focus on one thing at a time. This was one of the most transformative books I've read, and I have a computer science Ph.D.

  26. Computer Science Books by Angrywhiteshoes · · Score: 3, Interesting

    Introduction to Probabilistic Automata - Azaria Paz
    Anything by Claude Shannon
    Information theory and statistics - Sollomon Kullback

    1. Re:Computer Science Books by Anonymous Coward · · Score: 0

      I love Kullback's book, but it's pretty dry and uninsightful and almost worthless for CS. Doing classical statistics with information theory is cool, but it's imho far from the best way to be introduced to either subject.

      There are better choices for similar material, like Cover's Elements of Information Theory for information theory, and MacKay's book for an applied context. I wish there were a good statistics book for CS, but I can't think of one; DeGroot and Schervish comes close I guess.

      If you do read Shannon (a good recommendation), consider also reading Khinchin's Mathematical Foundations of Information Theory as a supplement. It's in a very concise and friendly Russian style; you'll either love it or hate it.

  27. Artificial intelligence by Anonymous Coward · · Score: 0

    Artificial intelligence algorithms. Something of the future.

    http://www.amazon.com/Parallel-Programming-MPI-Peter-Pacheco/dp/1558603395

    http://www.amazon.com/Machine-Learning-Algorithmic-Perspective-Recognition/dp/1420067184/ref=sr_1_1?s=books&ie=UTF8&qid=1398382839&sr=1-1&keywords=Machine+Learning%3A+An+Algorithmic+Perspective

  28. No they are not by SuperKendall · · Score: 1

    nonsense, good books about OS and language design, compiler theory, algorithms, information theory: those are good for decades.

    The contents are but it is irrelevant because you will never read them; anything they might say has been said a thousand ways on the internet.

    I have all the "good" books on all those topics from my CS courses. I have not opened them in a decade or longer, despite doing a number of things quite relevant to the topics listed. They do indeed make nice shelf decorations...

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
    1. Re:No they are not by Anonymous Coward · · Score: 2, Insightful

      anything they might say has been said a thousand ways on the internet
      By people who once had a couple conversations with someone who took a class loosely based on the book (who probably ought not be saying much on the subject to those trying to learn it for real).

    2. Re:No they are not by rubycodez · · Score: 1

      no, poseurs will quote certain well known passages without understanding

      you've been duped

    3. Re:No they are not by SuperKendall · · Score: 1

      By people who once had a couple conversations with someone who took a class loosely based on the book

      Those exist to be sure, but sometimes there is wisdom to be found there also. Any given book is the viewpoint and opinion of a single person. I had always found you needed to read at least three books on any subject to start to get a clearer view of the whole, which is another reason even the most classic of books is bested by the huge variety of reflections you can find on the internet.

      It's easy to tell over time where the quality sources are for any given subject...

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
  29. Tufte by Sez+Zero · · Score: 4, Informative
    The Visual Display of Quantitative Information, because you'll probably to do it eventually.

    http://www.edwardtufte.com/tuf...

  30. Suggested Topics by Anonymous Coward · · Score: 1

    I will not recommend a specific book because in graduate level you should be going for advanced topics in com sci. Look at some AI book genetic algos, neural networks, perceptron inference networks, even just language interpretation. Obviously you should read the classics magical man month which honestly is just a big example of why you can never reduce a task to the point that bring in more people in only just makes more mess of the matter at hand. Also Core J2EE Patterns, but again it depends in what are you want to get into I think java patterns are good cause they are easy to use and well billions of devices run java. Go general and then home in on what you like even some books on algos for image object detection, maybe openpr, id say get involved with an open source project. Get a good linux book at least be competent in the command line, maybe write a driver. Anyway enjoy. Orily series are always good but depends on your pace.

  31. Some classics by jnorden · · Score: 1

    If by "computer science" you mean "programming", then Knuth's series is indispensable, and an excellent addition would be Aho, Hopcroft, and Ullman's "Design and Analysis of Computer Algorithms".

    On the other hand, if by "computer science" you mean the branch of mathematics that goes by this name, the best text I know if is Machtey & Young's "Introduction to the general theory of algorithms". Sadly, this book is out of print (few people use use this meaning of "computer science" any more), but right now there are used copies available at amazon. Another excellent book in this category would be Garey & Johnson's "Computers and Intractability: A Guide to the Theory of NP-Completeness". A final text worth looking at is Michael Sipser's "Introduction to the Theory of Computation" (you can save some $$ by purchasing one of the older editions).

    1. Re:Some classics by EvanED · · Score: 1

      If by "computer science" you mean "programming", then Knuth's series is indispensable

      I would not call that programming; there's waaaaay too much algorithm complexity analysis to fall into that camp.

      A final text worth looking at is Michael Sipser's "Introduction to the Theory of Computation" (you can save some $$ by purchasing one of the older editions).

      I said this elsewhere in the thread, but I'm not a fan of Sipser; I would easily go with Hopcroft, Motwani, and Ullman. The latter coverage is both broader and deeper than Sipser's, especially in the automaton/formal languages topic.

  32. Visual display of quantitative information by Anonymous Coward · · Score: 1

    One of the clearest books I've ever read.

  33. Books about graduate school by David+Jao · · Score: 1

    Strangely, nobody has addressed the graduate student part of the question. Being a CS grad student involves much more than technical knowledge. You also need to internalize the social norms of this career choice. For this purpose, there is no better information source than The PhD Grind by Philip Guo. The book is completely free (as in beer) from Guo's web site. His web page also contains a great deal of career advice worth checking out.

  34. My favorites by Anonymous Coward · · Score: 0

    These are my favorites, I consider them essential reading for any developer. They are all about user interface design, a topic which I think developers need to put a lot more thought into.
      * Don't Make Me Think: A Common Sense Approach to Web Usability, by Steve Krug
      * About Face: The Essentials of Interaction Design by Alan Cooper
      * The Inmates Are Running the Asylum: Why High Tech Products Drive Us Crazy and How to Restore the Sanity by Alan Cooper

    This one is amazing if you REALLY want to understand at the deepest level what goes on inside a computer and how it works. It is amazingly simple to understand and detailed at the same time.
      * Code by Charles Petzold

    I haven't read this one yet, but it is on my reading list because I have heard so much good about it:
      * Code Complete: A Practical Handbook of Software Construction by Steve McConnell

    1. Re:My favorites by EvanED · · Score: 1

      Code by Charles Petzold

      I love this book. I think it would be amazingly fun to create a freshmen seminar class around.

  35. My List by Anonymous Coward · · Score: 0

    I am about to get down-voted to hell, but I will go against usual trend.
    1. FOR NOW. Don't buy Knuth books !!!!! Knuth does not address parallel or concurrent programming. Zero, none. But the biggest problem with Knuth books are the knowledge required. You have to know Real and Complex Analysis and Asymptotic Analysis !!! BS graduate in USA in 99% of cases, never take courses in Real Analysis (and by Real Analysis, I don't mean Calculus course).
    Knuth is God of sequential programming.

    Buy Math books !!!!!!!!!!!!!!
    2. Math Books:
              - Complex Analysis (ex. Visual Complex Analysis, Fundamentals of Complex Analysis with Applications 3rd ed)
              - Asymptotic Analysis (ex. Asymptotic Methods in Analysis. Into is written by Knuth)

              - Abstract Algebra (you can't read any modern Formal Language/Automata book without Abstract Algebra)
              - Mathematical Logic. There are many branches in Modern logic. Temporal Logic is de facto language used to describe concurrent systems.
                  Also, Logic and Abstract algebra are used to formalize and verify programs and programming languages. Later on, as you Mathematical Logic knowledge matures, you can learn about Automated theorem proving & Proof assistant.

    I recently graduated from respectable US college with CS degree. Right now, I am studying Abstract Algebra and Mathematical Logic on my own.

    1. Re:My List by Anonymous Coward · · Score: 0

      I'm assuming he's not a retard and knows actual math? What are we doing admitting people to grad school who don't know this shit?

    2. Re:My List by Anonymous Coward · · Score: 0

      How much you willing to bet that CS grads who just entered the program have never taken Complex Analysis ?

    3. Re:My List by retchdog · · Score: 1

      You absolutely do not need real/complex analysis to read 95%+ of Knuth's TAoCP. Even a math illiterate can read easily 50% of TAoCP with just a little patience, and that 50% is still way beyond what any other book will cover. Of course, whether it's worth spending this time is, as you pointed out, not obvious.

      There are many more current topics; particularly, I'd plug statistics and data mining. A solid understanding of advanced statistics combined with strong algorithmic skills (coding, analysis, design, whatever) is probably the most lucrative cross-specialization there is, at least for the next 10-15 years.

      --
      "They were pure niggers." – Noam Chomsky
  36. Is this it? by Anonymous Coward · · Score: 0

    I think you were referring to: The Mythical Man-Month: Essays on Software Engineering by Frederick P. Brooks Jr. It is considered a classic.

    1. Re:Is this it? by david_thornley · · Score: 1

      A must read for software engineering, anyway. Some of the stuff in it is just plain wrong, some of it is old hat, and quite a bit of it is correct and still relevant. (I recommend the Silver Anniversary edition, which has notes on these.)

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    2. Re:Is this it? by Archtech · · Score: 1

      " Some of the stuff in it is just plain wrong..."

      Now THAT really does call for a citation. Please state what parts of "The Mythical Man-Month" are "just plain wrong".

      --
      I am sure that there are many other solipsists out there.
  37. Books on computer arts by Anonymous Coward · · Score: 0

    Since he is likely to have a collection of books on the language(s) he intends to use, I would suggest some on subjects less often covered: Enough Rope to Shoot Yourself in the Foot, by Holub; The Craft of Software Testing, by Marick; Handbook of Walkthroughs, Inspections, and Technical Reviews, by Freedman and Weinberg; What You Need to Know when you can't find your UNIX system administrator, by Mui. I have found these very valuable in maintaining code over the years.

  38. Classics by chriswaco · · Score: 3, Informative

    K & R
    Effective C++
    Object-Oriented Software Construction by Bertrand Meyer
    The PostgreSQL manual

  39. Weisenbaum / Levy / Hofstadter / Turing by Anonymous Coward · · Score: 0

    The fact that most undergrad and grad CS programs don't have courses in ethics and history is deplorable.
    These are some of the best reads in CS:

    Computer Power and Human Reason, Joseph Weisenbaum (1976)
    Computing Machinery and Intelligence, Alan Turing (1950)
    Hackers: Heros of the Computer Revolution, Steven Levy
    Godel, Escher, Bach: An Eternal Golden Braid, Douglas Hofstadter (1979)
    The Cyberiad, Stanislaw Lem (1974)

  40. The two (and-a-half) best computer books ever... by dublin · · Score: 1

    These are classics. My favorite, hands-down, is Ted Nelson's "Computer Lib/Dream Machines". This is an odd book - it's written in hypertext (links to other pages and all - after all Nelson invented the term hypertext!) but in print form. Beyond that, it's really two books joined in the middle: Start reading form one cover, it's Computer Lib, start reading from the other, and it's Dream Machines.

    Sure, parts of it are dated, but the concepts and thinking teach how to *think* about what we now call UI/UX and architectures better than anything else I've ever run across, and the principles are timeless. Without question the single most valuable computer book ever written - like some bizarrely wonderful foreign food dish, it's a delectable combination of manifesto, history, dreaming, ranting, and amazing insights from greats such as Vannevar Bush, Doug Englebart, and many more, especially Nelson himself. It is one of the weirdest, and most wonderfully serendipitous, books ever written. Lewis Carroll would have loved it, and I really wish Jonathan Ives had heard of it before saddling us with the form-over-function trainwreck that is iOS7...

    The only bad thing about this one is that it's quite difficult to find - other than the nearly impossible-to-find original samizdata-like self-xeroxed original version, AFAIK, it's only been published once, by Microsoft Press back in 1987. I had to pay over $100 for a new copy after loaning my original to a reptile that didn't return it...

    The other book is Fred Brooks' "The Mythical Man-Month" This is a book that is still every bit as relevant today as when it was written - my good friend Dewayne Perry, one of the world's foremost software engineering experts, agrees that it's perhaps the most important book ever written on software engineering, and how to deal with building software in the real world.

    Either one of these would be good, but if you reduce my computer library to one, I'm keeping Computer Lib. It's that good.

    --
    "The future's good and the present is nothing to sneeze at." - Roblimo's last ./ post
  41. Two great books by ed1park · · Score: 1

    Computer Science: An Overview by Brookshear. See the forest for the trees.
    http://www.amazon.com/Computer...

    Mythical Man Month by Brooks. Don't get lost in the woods.
    http://www.amazon.com/The-Myth...

    And find a favorite programmer and follow their writings\blogs\tweets. eg: Carmack, Linus, etc.

  42. "Science" == "Argumentum ab auctoritate" ?!?!?!? by mosel-saar-ruwer · · Score: 0

    Cite Knuth... This is, of course, good science.

    Well at least Professor Knuth is still alive, and I don't [YET!] need to refer to the poor man as spinning in his grave.

    Good grief.

    And folks wonder why you fools believe in myths like ManBearPig.

  43. Okay, I'll bite... by ndykman · · Score: 2

    Structure and Interpretation of Computer Programs, 2nd Edition. This used to be an undergraduate text for a course at MIT. But, it is now optional even at MIT. This is shocking to me. We used the text in my sophomore year at the University of Utah. If you hear old timers (okay me) complaining about programmers these days, this is part of it.

    Computer Architecture, A Quantitative Approach (5th edition). I need to update my copy, but this text really allows one to reason about scale and performance.

    An Introduction to the Analysis of Algorithms, 2nd Edition. Again, I need to update my copy, but this provides the key mathematical foundations for algorithmic analysis and their performance.

    Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition). This is much more practical of a book, but it gives key insights into framework design. Yes, it's about .Net, but it's really about large scale object oriented design applied in the real world and therefore useful to all.

    Modern Operating Systems (4th Edition), Tannebaum. A great insight into OS internals, including key concepts that are useful in all sorts of programming.

    Essentials of Programming Languages (3rd Edition). A deep dive into interpretation of programs. Provides a great start into programming language semantics.

    Compiling with Continuations, Andrew Appel. Of course, the Dragon book is useful. But this book really gives some unique insights into program analysis. Combine this with Engineering a Compiler and you have insights into how code really is transformed into executable artifacts.
    In fact, this reminds me, I need to go make sure I still have my copy. It's pricey to replace.

    I'll make a final plug for Semantics Engineering in PLT Redex. There are lots of advanced books on programming language semantics, but this is only book I've found in which the rubber hits the road. It is rigorous in its coverage of major language models, but its an actual tool as well.

    1. Re:Okay, I'll bite... by Missing.Matter · · Score: 1

      I can't believe you are the only person to mention "Structure and Interpretation of Computer Programs", and you haven't been modded up. The wizard book is legendary!

  44. Pragmatic Programmer: From Journeyman to Maste by CokoBWare · · Score: 3, Informative

    The Pragmatic Programmer: From Journeyman to Master - It's not a Computer Science book, but it really talks about essential things any programmer should know in order to excel in their career.

  45. CLR, Tichy, Hacker's Delight by Dr.+Gamera · · Score: 2

    Other than the obvious Cormen, Leiserson, and Rivest (plus Stein these days, apparently): http://en.wikipedia.org/wiki/I... I found H. J. Tichy's _Effective Writing for Engineers, Managers, and Scientists_ very useful. I haven't finished _Hacker's Delight_ by Henry S. Warren, Jr., but there's some good stuff in there.

  46. Books? Who needs books? by Tony+Isaac · · Score: 1

    Books are for grad students. Oh wait, you are one!

    I hope you plan to become a teacher or professor...if you want to be a computer programmer, it's time to quit school and start working!

  47. Technical writing by Anonymous Coward · · Score: 0

    It's not computer science, but get a good technical writing book as well. It's a skill you'll wish you had. It helped me tons when I worked on my MS CS degree.

    I personally like Developing Quality Technical Information 2nd ed. from IBM press

  48. Re:Mein Kampf by Adolf Hitler by Anonymous Coward · · Score: 0

    Press ONE...

  49. God damn it.... by Anonymous Coward · · Score: 0

    If you can get into fucking grad school shouldn't you know this? What the fuck? I can't get in because you need 4 fucking references but at least I know CS theory...

    1. Re:God damn it.... by ranton · · Score: 1

      If you can get into fucking grad school shouldn't you know this? What the fuck? I can't get in because you need 4 fucking references but at least I know CS theory...

      Anyone with a BS degree can get into grad school. Perhaps not MIT or Stanford, but all but the top CS program in my state have no entrance criteria above just filling out an application (and the top program is not in a metropolitan area, so forget studying there while working).

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
    2. Re:God damn it.... by Anonymous Coward · · Score: 0

      every grad program in the US requires several letters (maybe not the for-profit degree mills?). they should also be from people you did research with to count for anything. crazy that higher education is so inaccessible in this country and that a big part of getting in is popularity.

    3. Re:God damn it.... by Missing.Matter · · Score: 1

      Inaccessible? Pretty much any job or position in the world needs references. You even need references to work at McDonalds! Reason being people want to make sure you're not a total fuckup and won't take just your word for it. I know, it's tough for anti-social nerds like you to accept this, but in this life you need to be something more than a loner and *gasp* actually make social connections with other human beings!

    4. Re:God damn it.... by ranton · · Score: 1

      every grad program in the US requires several letters (maybe not the for-profit degree mills?). they should also be from people you did research with to count for anything. crazy that higher education is so inaccessible in this country and that a big part of getting in is popularity.

      I did more research, and it looks like we are both wrong. There are far more programs than I thought which do require references, but by no means all. A small sample size of 10 schools in my state gave 60% needing references. So it does seem to be more common than I thought, but by no means universal. And the other 40% where still quality schools, not diploma mills.

      --
      -- All that is necessary for the triumph of evil is that good men do nothing. -- Edmund Burke
  50. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Anonymous Coward · · Score: 5, Informative

    You seem to misunderstand what a citation is. A citation is not saying, "Here, this is true because Mr. XYZ said so," but, "Here, this is being accepted as true (or just considered even) because Mr. XYZ gave good argument/data in source ABC." It is not an appeal to authority, it is reducing redundancy by not re-deriving something already written about elsewhere. And this is a good science practice, as it is rare to be working on a topic where no one has already done some theory work or found some relevant experimental data.

    You should have spent a lot of time deriving things in your undergrad and early grad courses, and you should double check the calculations of any citation central to your work to catch typos or actual mistakes. But by the time of writing actual papers or your doctoral thesis, you shouldn't be wasting reader's times by re-deriving things in detail beyond what is needed for outlining background and covering your premises. Unless your new contributions are a better way to present or derive the same solution, or showing a mistake in the derivation, you move on to deriving new things while cite others for stuff already done.

  51. Don't bother with CS grad school? by Anonymous Coward · · Score: 0

    Can't you just buy the books you need on Amazon or read the papers on arxiv? If you're so fucking smart just learn the shit and go make something.

  52. Surviving Your Stupid, Stupid Decision to Go to Gr by allan572 · · Score: 1

    First off, what's "pure CS?" Is there a grad school of adulterated CS? Then, get this book: http://www.amazon.com/s/ref=nb...

  53. Comment removed by account_deleted · · Score: 1

    Comment removed based on user account deletion

  54. Theory and practice by HalfFlat · · Score: 2

    Graduate-level CS encompasses a lot of ground!

    Knuth is of course a valuable addition to the book-shelf — as others have pointed out, it's a superb source for chasing up information, details and citations for algorithms and data structures one needs to justify or investigate, if nothing else.

    Okasaki's Purely Functional Data Structures has also already been mentioned, and I'd add my endorsement!

    I would recommend two other texts to add to a collection:

    • Computational Geometry by de Berg et al.: computational geometry techniques have a habit of turning up all over the place in CS and computing more generally, and this is probably the best overview text, providing motivating examples, a good high level theoretical discussion, and pseudo-code.
    • Category Theory for Computing Science by Barr and Wells is an excellent introduction to both type theory and category theory, each informing the other.

    I would recommend a book on convex optimisation and probabilistic graphical models, but frankly I don't know of a single text on either topic that I could whole-heartedly recommend. Any suggestions?

  55. Introduction to Algorithms by flabbergast · · Score: 1

    Introduction to Algorithms by Cormen Leiserson Rivest and Stein.

  56. Non-technical books by Anonymous Coward · · Score: 0

    Are needed in a "home library". Unless you REALLY enjoy reading Algorithms, Software Design Patterns and *NIX technical manuals in your spare time, no thank you. Keep those at the office where they are needed for referenced, not at home.

    Suggestion to start the non-technical collection: Is your Mama a Llama?

  57. "So what does that make us?" by Anonymous Coward · · Score: 0

    "Absolutely nothing."

    Seriously, does the chain of relationships really need to accompany this post? Why not just say "I know someone entering CS masters program. Suggested reading?" No, instead we need to hear about your "former roommate."

  58. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Yaztromo · · Score: 1

    Mod parent up. This is the correct response.

    Yaz

  59. Research Based Interests by NRyhajlo · · Score: 1

    Probabilistic Reasoning in Intelligent Systems: Networks of Plausible Inference. By Judea Pearl. It is a great work on Bayesian Networks. For someone in graduate school, you should avoid books on either specific languages or implementations. That is great for a regular software developer but if he is going to graduate school he is probably more interested in research than implementation.

  60. SICP by Anonymous Coward · · Score: 0

    The Structure and Interpretation of Computer Programs.

  61. Clojure by Anonymous Coward · · Score: 0

    A good book on Clojure. It's an actually practical LISP with a lot of very modern features geared toward concurrency. It's a highly educational language.

  62. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Anonymous Coward · · Score: 1

    In law school you're taught to cite every... single.. sentence, whether you're referencing fact or opinion. It's exhausting, although you tend to get the hang of it fairly quickly.

    And you not only cite every sentence, but you use a highly structured, compressed syntax which not only parses cleanly, but is loaded with semantic meaning--like `this citation is spot on', `this citation tends to support my argument', or `this guy said the opposite of what I'm saying'; plus additional context showing authority and relevance. It's an ontologist's wet dream, and I never understood why more researchers haven't plumbed the depths of legal works.

    I think all university classes should require this degree of reference. It would seriously cut down on the amount of bull crap in college papers, and make it waaayyy easier to grade bad papers--you could randomly check a few of the references, and if any of them are crap then you can cut their grade by a few letters on-the-spot.

  63. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Yaztromo · · Score: 4, Informative

    Cite Knuth... This is, of course, good science.

    Well at least Professor Knuth is still alive, and I don't [YET!] need to refer to the poor man as spinning in his grave.

    AC posted an excellent response here.. In the event you're filtering AC's, take the time to read it, as it's completely on point.

    I would add is this: if you've never completed a Masters thesis or Doctoral dissertation, just try submitting one to your committee without adequate citations. If you write somewhere "I used well-known algorithm ABC because of XYZ" and you don't have a citation for that algorithm, you'll be sent back for rewrites pretty quickly to add appropriate citations.

    By way of example, in my Masters thesis several years ago, I mentioned Unix diff , without a citation. Why would this need a citation? It was mostly mentioned in passing, and every computer scientist under the sun knows what diff is, right?

    Committee came back asking for further citations on a few things, including diff (which, for the record, is "Hunt, J. W., and McIlroy, M. D. An algorithm for differential file comparison. CSTR, 41 (1976).")

    Using citations isn't an appeal to authority. It's akin to using an existing library call in programming. Just as you wouldn't roll-your-own quick sort algorithm when coding, someone writing a scientific paper doesn't re-invent every algorithm ever derived. You find someone who has already done that, and you cite them. The AOCP is useful in this regard due to the sheerly massive number of algorithms Knuth describes. It's hard to go through a Computer Science program and not use one of these algorithms. Knuth himself likewise cites all of the algorithms in the AOCP, so it's not an appeal to his authority, as he delegates that out to others appropriately. It's simply useful because instead of having to track down papers written in the 1960's on your own, you can cite Knuth who cites those papers for you. This is why the AOCP is useful for a graduate student.

    FWIW, I cited Knuth. I needs an algorithm to calculate variance, and another on the Box-Meuller transformation. Art of Computer Programming had one for each, which I adapted for my needs, and cited appropriately.

    Yaz

  64. I strongly agree by Anonymous Coward · · Score: 0

    After a several year hiatus away from computer stuff I agree completely. I gradated CS in 2002. There was much more priority given to imperative programming and arrays for everything than there should have been. Most of the lecturers were brainwashed by terms like "object oriented is the future", "extreme programming" and other such nonsense because it's "kewl". We did some Prolog but not nearly enough. It wasn't emphasized. We did no lisp! or Scheme.. It's sad that I'm more mature than many of those guys despite being younger. They wanted to market the course with the latest in vogue sound bites and they all bought into it. Ruby is imo another overrated pile of hype. CS courses prepare people to accept the status quo: - The ivory tower people at the top with FP, and everyone else at the bottom dicking about with deprecated methods, broken dependency issues and defunct frameworks. I'm glad I had my hiatus. I program in Prolog, Erlang, and Elixir now, and I'm fascinated by compilers. To be fair I was interested in compilers in CS too but only moderately so.. I program the way I want to with the languages I want to use using programming languages that think the way I think. I forget all the crap they told me. I'm learning functional data structures and abstractions like Monads, and I find it much more rewarding than the unnecessarily convoluted syntactic sugar of imperative languages which seems deigned for 'gottcha'. Also, I believe Erlang's abstracted process based concurrency and declarative paradigm is the true path. And Elixir inherits those too. If I was to design a CS course, it would be Erlang world with some assembler, after learning Lisp/Scheme and Prolog of course. To be fair, Erlang was open sourced long after I graduated.

    1. Re:I strongly agree by NJRoadfan · · Score: 1

      After a several year hiatus away from computer stuff I agree completely. I gradated CS in 2002. There was much more priority given to imperative programming and arrays for everything than there should have been. Most of the lecturers were brainwashed by terms like "object oriented is the future", "extreme programming" and other such nonsense because it's "kewl". We did some Prolog but not nearly enough.

      Of that list, maybe object oriented programming is important to "know". Otherwise computer science courses should be treated as language and platform agnostic, and only focus on stuff like data structures, arrays, etc. Basic theory that is applicable to any language.

      It wasn't emphasized. We did no lisp! or Scheme.. It's sad that I'm more mature than many of those guys despite being younger.

      I never did any LISP programming in school either. Oddly enough the language that always fascinated me was Postscript. Its amazing what a printer page description language is capable of.

    2. Re:I strongly agree by david_thornley · · Score: 1

      Different languages represent different ways to think about programming, and it is useful to learn languages for the ideas even if you never use them again. Moreover, different languages are suited for different problems. I wouldn't submit a numerical analysis assignment in Scheme, and Fortran isn't real good as an AI language.

      In a computer science curriculum, at least after the freshman year, the students are normally expected to be able to pick up languages as they need them. It's a lot easier to do that when you already know a few different languages.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  65. You're already studying CS, why read more CS? by Anonymous Coward · · Score: 0

    The Arrogance of Humanism by David Ehrenfeld. A little bit outdated but worth reading because it offers a perspective that you will rarely, if ever, encounter in a computer science department.

    Don't bother chasing canon-- by set union everyone's read all that. You might as well juice a rock.

  66. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Anonymous Coward · · Score: 1

    After a paragraph or two of background and previous results being built upon, where there can be multiple citations per sentence, the meat of a science paper is going to be mostly new work or likely dependent on a very small number of other papers. And half the citations in the intro are just there to point out other work that may be relevant or reviews of general material to give the reader context for the research. Review papers that paraphrase large numbers of other papers have plenty of citations through out though, and might be more on par with what you are thinking of for college papers. Other than review papers though, if you have citations for every line, what did you do that was new and added by you?

  67. Lisp in Small Pieces by Anonymous Coward · · Score: 0

    it really depends what your focus is, but personally for me thats a real that I always
    feel I learn from every time I pick it up

    Another golden oldie in Jains the Art or Computer Performance Analysis

    neither of which is going to be particularly interesting if you're doing pure theory

    or dorking around with web applications so you can run out and get vc

  68. A personal library is an investment in yourself by Anonymous Coward · · Score: 0

    The point of a personal library is to have the tools you need readily to hand. Often the answer is not where you expected to find it. I've got 70+ feet of CS books. Some I've used a lot and some I've used very little. Except for scavenged discards, all are there because I perceived value and the potential need for the information. Some things I've used a lot are now pretty much obsolete. I've never needed to use Knuth much, but I have both editions and have referenced them many times over the years. Usually I found I was dealing with the trivial case, but not always. Knowing whether I was dealing with the trivial case was worth the price of admission.

  69. A Couple of Extras by Anonymous Coward · · Score: 0

    I heartily agree with all of the Knuth votes. I would add Structure and Interpretation of Computer Programs and Concepts, Techniques and Models.

  70. I'm in CS grad school and we don't use textbooks by dont_jack_the_mac · · Score: 0

    ...what am I missing here?

  71. Stick with the classics by Anonymous Coward · · Score: 0

    Introduction to Metamathematics by Stephen Cole Kleene for logic

    Introduction to the Theory of Probability by Hans Reichenbach for probablility

    Introduction to Automata Theory, Languages and Compuation by Hopcraft and Ullman for automata studies

    Mathematical Theory of Communication by Claude Shannon and The Calculus of Linguistic Observations by Gustav Herdan for information theory and statistical language processing

    As for programming choose a book for whatever poison you work with

  72. Algol 68 by belmolis · · Score: 1

    How about C. H. Lindsey's Informal Introduction to Algol 68? Obviously he isn't going to be using Algol 68, but this is beautifully and wittily written, describes a language with some interesting features, and has a very unusual two-dimensional organization.

  73. Need a list of "non-traditional" programming books by rbrander · · Score: 2

    For me, it was "Thinking Forth" by Leo Brodie. Forth is a pretty unique language, barely above assembler level, but able to (quickly) build up code/data structures of Lisp-like complexity (and like Lisp, can self-modify). Brodie's Thinking Forth pulls apart how you'd solve problems with procedural language and completely re-factors them to take advantage of how Forth works.

    Even if you don't ever use Forth (and most of us enthusiasts never did for anything but school and our own utilities), learning it changes your thinking. But I'd concede that Forth itself isn't the necessity - it's to learn languages and approaches that solve problems in whole different ways. There should be books on functional languages, APL, or Lisp.

    I'm not sure what the classic list would be - but for me, Starting Forth I pull off the shelf decades later to peruse when I need to pull my head outside the box. (It's now available as a free PDF, by the way.)

  74. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by TeethWhitener · · Score: 1

    IANAL, but as I recall, in the practice of law (at least in the US), you don't add anything new. Unless you're a Supreme Court Justice. A lawyer's job is to piece together relevant laws and cases for precedent to provide a legal framework for whatever argument they're presenting.

  75. Re:The two (and-a-half) best computer books ever.. by narcc · · Score: 1

    Ted Nelson's "Computer Lib/Dream Machines"

    It's a little tough to find, and stupid expensive. Makes a good gift though. It's pure madness, like other computer books of the time such as My computer likes me and What to Do After You Hit Return. It's okay though, as it adds a lot of charm.

    As far as gifting goes, it's much better than The Mythical Man-Month, which is about as charming as the average Slashdotter.

  76. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by swillden · · Score: 1

    if you have citations for every line, what did you do that was new and added by you?

    The conclusion.

    A legal paper is like a mathematical proof, where every step must be justified by drawing on an axiom, a definition or an existing theorem. In proofs, relatively few of the arguments need to explicitly state their justification, particularly those that just manipulate symbols according to the very well-known rules, but that's only because the reader can be expected to see the obvious rationales. Beginners are often required to rigorously justify every single step in order to help them understand how the game works.

    Law is also about proving things, but the axioms, definitions and theorems aren't as well-defined, so even advanced practitioners need to justify nearly every step.

    --
    Note to ACs: I usually delete AC replies without reading them. If you want to talk to me, log in.
  77. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Anonymous Coward · · Score: 0

    That post wasn't about law papers though, it was about science papers, in response to a post saying that style should apply to apply to topics in much more general than just law (in a thread originally talking about CS thesis, where you should be adding something new besides just a conclusion).

  78. My advice to my students.... by gwolf · · Score: 1

    I teach "Operating Systems". And yes, I don't expect (I'd love, though!) many from them to have to implement a Second-Chance (Clock) memory page replacement algorithm. But I do expect them to understand how duing professional their lives the programs they write will be treated by the operating system, and how to avoid bad performance resulting from inefficient patterns.

  79. The Design of Everyday Things by Anonymous Coward · · Score: 0
  80. Re:"Science" == "Argumentum ab auctoritate" ?!?!?! by Anonymous Coward · · Score: 2, Informative

    If a civil case is being litigated in court there's very often a new question to be answered, because the relevant statutory and case law are unclear about the case at hand. Your job as a lawyer is to show the court how the pre-existing law applies favorably to your novel situation, when appropriately extended or amended. In the common law this is how the law slowly grows organically overtime.

    Trial and lower appeals courts make new law all the time, and stare decisis demands that one trial court judge normally follow the rule of another trial court judge's opinion in his jurisdiction, even if the case never went up to a higher court, presuming no other rule from a higher court was issued in the mean time.

    Take, for example, Judge Vaughn Walker's decision in Perry v. Schwarzenegger, which struck down Proposition 8 as unconstitutional. The case posed a novel question, and Judge Walker's bold decision created new constitutional law in California. But it was not yet binding on other courts. When the plaintiff's won, the state of California declined to appeal. A new litigant entered to take the place of the defendant, but ultimately SCOTUS said that the new litigant did not have standing. That meant that Perry v. Schwarzenegger reached the end of its rope, without any more avenues of appeal, solidifying Walker's opinion as law within his jurisdiction. Walker's decision is now binding precedent on all trial courts in Northern California, the jurisdiction of the court of which Judge Walker was a member. Only the Ninth Circuit Court of Appeals or SCOTUS can overturn that law; any other trial court in Norther California is technically bound by the principles of stare decisis. As more time goes on it becomes increasingly more likely that, if the issue came up again and the Ninth Circuit Court of Appeals heard a similar case, they'd likely adopt Walker's decision, in part or in whole, making it binding on all courts in the Ninth Circuit (basically the Western United States). That's because while Walker's decision is not binding outside his jurisdiction, the longer it stands the more society will orient itself around his ruling, and so the more persuasive it will become to other district courts.

  81. No Soul? by Anonymous Coward · · Score: 0

    Soul of a New Machine - Tracy Kidder
    The Cokoo's Egg -Clifford Stoll

  82. "usability" by globaljustin · · Score: 1

    ugh...I don't want to sound cross but "usability" texts have a long way to go..."computing" isnt about the "computability function"...its' about a user task...if there is no user in the chain somewhere then it's pointless

    "usability" is really "human/machine interaction" of a specific instance and context...most texts talk only about those instances of design questions in a context, not the *theory*...any book or "U/X" theory that doesn't start with a *cybernetics* or system science perspective is doomed to become tangled in language and abstractions

    I used to teach Human/Computer Interaction as an Adjunct at Washington State University and none of the texts were fit to properly teach the course.

    Ben Shneidermans "Designing the User Interface" and his "golden rules for interface design" is, IMHO much more "grown up" than the Krug text.

    I'll admit, Krug has a few passages where I say, "Yes, every programmer ever needs to have this concept pounded into their cranium"....but again, that doesn't make it a good "bible" for interface design

    honestly there is no one tome anyone can point to for studying computers...it's just machines following instructions...everything else is application of a type of instruction to a context with a user

    cue controversy: there **will not be** a true overarching computer science theory until we get past Turing & the 'computability function'

    **its all machines following instructions**

    --
    Thank you Dave Raggett
  83. Check out texts that universities use by Anonymous Coward · · Score: 0

    Comp. Sci. is a very large and diverse field of study. I would suggest taking a look at the texts used in graduate level courses you're interested in from top universities (MIT, CMU, Berkley, etc.). MIT's OpeCourseware would be an excellent resource for this.

  84. a little philosophy maybe? by turndevil · · Score: 1
  85. Vital classics by Anonymous Coward · · Score: 0

    "Lord of the Flies", "1984", "Fahrenheit 451", and "The Mythical Man Month".

  86. Domain Driven Design by Laz10 · · Score: 1

    The book that had the greatest influence om me was Domain Driven Design, by Eric Evans.
    It really made the difference from thinking like a developer, to thinking like an architect (I still write code every day)

    http://www.amazon.com/Domain-D...

  87. "Algorithms" by Robert Sedgewick by haemish · · Score: 1

    The definitive "kitchen sink" for how to do everything.

  88. Depends on the area by Anonymous Coward · · Score: 0

    If it's languages, Bob Harper's Practical Foundations for Programming Languages is good, along with the HoTT book (http://homotopytypetheory.org/book/) if he wants to be on the cutting edge.

  89. Gödel, Escher, Bach by Anonymous Coward · · Score: 0

    Gödel, Escher, Bach - an eternal golden braid, by Douglas Hofstadter.

    I think it exposes nicely some fundamental concepts of computer science.

  90. Old school by Anonymous Coward · · Score: 0

    BASIC Computer Games, Microcomputer edition.

    As a reminder that you kids have it easy nowadays.

  91. Yea well by Anonymous Coward · · Score: 0

    He didn't ask about software development, but about Computer Science. There is a huge difference there. In CS you actually kinda have to use common sense. That common sense has become so good you can pile layers of nonsensical software on top of the underlaying layers of hardware, firmware, and low level software, and it still works.

  92. Dilbert strips by Katatsumuri · · Score: 2

    One has to be prepared.

  93. High, low, middle by waimate · · Score: 1

    Knuth for how things work, Mythical man month for how things don't work. Everything else is left as an exercise for the reader.

  94. Pascal User Manual And Report by Old+Aylesburian · · Score: 1

    Wirth's classic, more for the style than the content.

  95. My favorites by MtHuurne · · Score: 2

    Computer Architecture: A Quantitative Approach by Hennessy & Patterson Helps you understand what goes on inside a computer at the hardware and OS level, as well as illustrating how you can reason about the performance of a system before you actually build it. Computer Graphics: Principles and Practice by Foley & van Dam A good starting point for learning about computer graphics. Not all of it is still relevant, but even if you skip the chapters about vector displays and user interfaces there is still plenty of useful material in there. Programming: The Derivation of Algorithms by Kaldewaij Teaches a way of constructing algorithms that are provably correct. Although I rarely follow this approach to the letter (it is very time consuming), elements of it are extremely valuable in everyday programming. For example, thinking in terms of preconditions, postconditions and invariants (design by contract) helps in designing good interfaces, finding bugs, placing useful asserts etc. Even just thinking to yourself "could I prove this program?" without actually doing it is useful, since if the answer is negative, the program is too complex and probably incorrect.

  96. Elements of the Theory of Computation by Anonymous Coward · · Score: 0

    by Harry Lewis and Christos Papadimitriou.

    Since the course was pure CS, you don't need any "Cloud computing for Dummies" books.
    That book goes deep into theory and makes for a delightfully light coffee-table reading too.

    www.amazon.co.uk/Elements-Theory-Computation-Harry-Lewis/dp/0132624788/ref=sr_1_1?ie=UTF8&qid=1398418173&sr=8-1

    The one-star review is about the book being paperback instead of hardcover. Sigh...

  97. Not all books are equal by Anonymous Coward · · Score: 0

    Just because a book is about a topic you are interested in, one should not assume that your questions will be answered. Some topics are just so terse or vague or on the fringe that books on the subject will make you more confused, not less.

    For example, Haskell. Haskell is like learning to swim in the deep ocean with one arm tied behind your back. I'm sure there are advanced techniques a swimmer like that can use, for example to avoid attracting sharks, but in a swimming pool there are no sharks. This also goes for automatic memory management, favor that at almost any cost. It is not wrong to say that man has become civilized only because he removed by force obstacles in his way, in place of learning to manage them.

    Lastly, avoid topics that are too "out there". Categorical logic, intuitionistic type theory, the Y-combinator. One needs to learn to say no. And don't be afraid to exercise judgment. For example, Okasaki's Purely Functional Data Structures is going down the wrong road.

    It's about finding the right road. The Liskov substitution principle or Meyer's Design-by-contract are the type of distilled knowledge that one should aim to acquire. And if you like methodologies, a combination of agile development and test-driven development where one tests small units thoroughly is just about right.

  98. Re:Books? Who needs books? by serviscope_minor · · Score: 1

    if you want to be a computer programmer, it's time to quit school and start working!

    Nope. There are plenty of intresting things out there to do which would be very hard to get started on without some sort of higher degree.

    --
    SJW n. One who posts facts.
  99. Re: "Science" == "Argumentum ab auctoritate" ?!?!? by lucm · · Score: 1

    no citation to support your point?

    --
    lucm, indeed.
  100. Read about being a software developer by Anonymous Coward · · Score: 0

    - The Pragmatic Programmer: From Journeyman to Master
    - Apprenticeship Patterns
    - Refactoring: Improving the Design of Existing Code
    - Driving Technical Change
    - The Clean Coder
    - Personal Kanban: Mapping Work, Navigating Life
    - The Pomodoro Technique
    - Practices of an Agile Developer
    - Pragmatic Thinking & Learning
    - Practical Object-Oriented Design in Ruby - If only for Chapter 1 (free on Amazon) which is language agnostic

  101. Three non-CS recommendations by DoctorBonzo · · Score: 1

    Plato's 'Republic' to see what geniuses our politicians are.

    Plato's Theaetetus to see what idiots philosophers are.

    And Lillian Lieber's "The Education of T. C. Mits" to see why we should all know more mathematics than we do.

  102. Why is no one proposing the obvious? by angel'o'sphere · · Score: 1

    There are plenty ' "language x/technology y" in 24 hours' books, why not start with them?
    Or the plenty 'XYZ for dummies'? ... or the 'What managers should know about XYZ'? /me runs and hides :)

    --
    Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  103. Abelson and Sussman by Anonymous Coward · · Score: 0

    Structure and Interpretation of Computer Programs ...

  104. The Cuckoo's Egg by Cliff Stoll by id+est · · Score: 2

    It was part of my required reading for a computer ethics course. Very entertaining. You really empathize with this college sys admin who is battling an unknown adversary trying to gain access to systems he is responsible for. Throw in the love story as a background and I still remember it to this day.

  105. Re:Need a list of "non-traditional" programming bo by mlosh · · Score: 1

    Yep, this is a great book!

  106. Feynman's Lectures on Computation by jerpyro · · Score: 3, Interesting

    I suggest Richard Feynman's Lectures on Computation. People in the physics world will know the name, but the topics covered are great for CS/CE topics, and probably not things that were considered and/or covered in regular classes.

    http://www.amazon.com/Feynman-...

  107. The Art of Scalability by Assmasher · · Score: 1

    ...If she's planning on getting a job instead of teaching.

    Every software engineer should read this when they're ready.

    It condenses decades of pain/suffering/learning concisely and provides a framework for many of the things that I've learned and experienced but had to rediscover all too often.

    If you plan on starting a software company, being a critical part of a startup, or scaling someone's product - you had better read it - it will likely save you huge amounts of time, money, effort, and risk.

    --
    Loading...
  108. Strunk & White - Elements Of Style. by Anonymous Coward · · Score: 0

    Doesn't matter how good your ideas are if you can't communicate them.

  109. Rattiest Books on My Shelves by scruffy · · Score: 1

    Knuth's books are very book, but they don't get much use from me. Instead:

    Introduction to Algorithms by Cormen et al.

    A good statistics book. Mine is an old thing: Mathematical Statistics with Applications by Mendenhall and Scheaffer.

    A good operations research book (linear programming, queueing theory, Markov models/decision processes, and the like). Another old thing: Operations Research by Hillier and Lieberman.

    Other than that, it's books that are/were used often for programming reference: Common Lisp: The Language by Steele and LaTeX: A Document Preparation System by Lamport look the most worn.

    Hopefully, someone will come up with something a little more recent than the "old things" I mentioned above.

  110. SE, not CS by Goonie · · Score: 1
    Haven't read "Death March" but the others you recommend (and I endorse) are about software engineering, not CS, in my view.

    Incidentally, It's kinda sad how little of the topics under discussion in "Peopleware" have actually been empirically examined in the peer-reviewed literature...

    --

    Any sufficiently advanced technology is indistinguishable from a rigged demo
    --Andy Finkel (J. Klass?)
  111. Three words... by DavidHumus · · Score: 1

    A Programming Language

    (by Ken Iverson)

  112. They don't exist by Murdoch5 · · Score: 1

    There is no good example of a CS book, well language references like "The C Book" are great for a single language, no CS book can cover all languages. Simply put, if you want a good CS book, pick a language and find the reference manual for that language.

    1. Re:They don't exist by Albanach · · Score: 1

      That's a thoroughly strange premise that a good CS book must be language specific? As if the stuff by Knuth or the gang of four no longer has relevance. There's also obviously non-technical books like The Cathedral & the Bazaar or The Mythical Man Month (the later of which may have dated a little) that should be in any comp sci focused library.

  113. Oldies but goodies by DavidHumus · · Score: 1

    The Psychology of Computer Programming by Gerald Weinburg
    The Mythical Man-Month by Fred Brooks

  114. Re:I'm in CS grad school and we don't use textbook by DavidHumus · · Score: 1

    History?

    Don't worry - it's a lot like a soul - if you don't have it, you'll never know.

  115. Let him pick his own boosk by Anonymous Coward · · Score: 0

    A graduate student in any subject is likely to have some areas of interest and consequently will know the kind of books he might need or benefit from. Graduate studies are more specialized, so in my mind it makes little sense to just give some books a bunch of people on the Internet recommended because they happen to be useful to THEM. For instance, I don' quite understand why so many here recommend TAoCP by Knuth. There are other (sometimes more specialized and up to date) books on algorithms and data structures. Different areas of computer science need different foundations. Something like the venerable Hopcroft/Ullman (1st edition, please!) serves much better as a go to reference for theoretical questions about formal languages, computability and complexity in much more detail than someone who does not specialize in these areas will probably need. And it's quite a small volume. Some people might not even need any of the algorithms detailed in the currently available (or planned) volumes of TAoCP, they might need logic or probability theory, type theory, automata theory, algorithms for model checking, decision procedures for interesting logics, heuristics, concurrency theory, parallel or distributed algorithms, networking, constraint programming, or any number of things. There's really no need to choose the technical literature someone might use for him.

  116. Dealers in Lightning by Anonymous Coward · · Score: 0

    Not a purely scientific read, but excellent book about a time involving a number of computer inventions at Xerox PARC.

    http://www.amazon.com/Dealers-Lightning-Xerox-PARC-Computer/dp/0887309895

  117. Re:Books? Who needs books? by Anonymous Coward · · Score: 0

    If you actually never went to school, you probably don't even know all the things you don't know.

  118. Re:I'm in CS grad school and we don't use textbook by dont_jack_the_mac · · Score: 0

    You're an idiot. You learn history from textbooks in undergrad. In grad school, you innovate and push the frontier.

  119. My must haves by Anonymous Coward · · Score: 0

    Gang of Four, Code Complete

  120. Re:I'm in CS grad school and we don't use textbook by EvanED · · Score: 1

    In grad school, you innovate and push the frontier.

    You do that in a PhD program; the question was about a MS. Some masters students to research, but at least where I went to school (on the border of top-10 grad schools in CS) the masters students who do research outside of class were a minority.

    Even when working on your PhD, there's a ton of learning about history that you won't have done in undergrad.

  121. Re:I'm in CS grad school and we don't use textbook by EvanED · · Score: 1

    That being said... I'm not sure any of my grad-level classes had textbooks. I don't think so. :-)

    But I still stand by my statement for the following reasons:
    1.) There were at least a couple classes where we easily could have
    2.) In my grad-level math classes, we used texts
    3.) Grad students take more than grad classes (almost always, anyway)
    4.) There will be background knowledge in books not covered directly by your classes that will nevertheless be useful.

  122. Brooks & Skeet by Anonymous Coward · · Score: 0

    Fred Brook's Mythical Man Month - yes, it's more software engineering than CS but some awareness of practicalities is important. ... and, at the risk of incurring significant opprobrium, Jon Skeet's C# In Depth.

    Justification for the second of these: yes, it's language specific (and MS-orientated - predictable boos, etc.). However, as a software engineering or computer scientist it'll be necessary at some point to convey technical detail clearly to other people. Jon Skeet does this exceptionally well: ignoring the subject it's possibly the best written technical books I've encountered. (And as a bonus recent editions cover implementations of some interesting CS concepts, e.g. lambas, etc.)

  123. from a coding English major by Anonymous Coward · · Score: 0

    Useful for its brevity: The Elements of Style, Strunk and White. Classic and handy.

  124. Very little found in books that isn't free online by rhyous · · Score: 1

    Drop the books. Unless you are going to be tested on them or have to do exercises from the end of a chapter. And if you are going to do that, get a friend in class and share the book.

    Books are awesome, but not for Computer Science. There are plenty of online tutorials/videos that are free.

  125. Conceptual Mathematics - Lawvere and Schanuel by Anonymous Coward · · Score: 0

    You can't really understand modern programming languages without understanding category theory -- and this is the best book to start from. It starts out trivial, and then does mental judo on you half-way through after which you never see mathematics the same way again. (BTW this is good across all the mathematical disciplines, not just comp sci.) P.S. Do the exercises!

    http://www.amazon.com/Conceptual-Mathematics-First-Introduction-Categories/dp/052171916X

  126. To prepare for Wall Street Financial Programming by Anonymous Coward · · Score: 0

    If you'd like to know what its like working in the IT field on Wall Street, I recommend "120 Days of Sodom" by the Marquis de Sade.

  127. Comer - Internetworking with TCP/IP by dave562 · · Score: 0

    In order to be a successful IT professional, an individual must understand: Programming, Networking and Systems Administration

    On the subject of networking, Comer's work on TCP/IP is invaluable. (http://www.amazon.com/Internetworking-TCP-Volume-One-Edition/dp/013608530X)

  128. Programming Pearls, et al... by Taed · · Score: 1

    Off the top of my head:
    * _Programming Pearls_ by Bentley
    * _Debugging the Development Process_ by Maguire
    * _Cuckoo's Egg_ by Stoll
    * _Windows Internals_ by Russinovich and Solomon if you're doing low-level Windows work.
    * _Code Complete_ McConnell and _Writing Solid Code_ by Maguire are good for someone just getting their first programming job.

    1. Re:Programming Pearls, et al... by Taed · · Score: 1

      I forgot:
      * _TCP/IP Illustrated. Volume 1_ by Stevens.

      I know the list is light on academic books -- I many other books due to college and grad school computer science, but the're not something that I look at very often.

  129. Re:I'm in CS grad school and we don't use textbook by dont_jack_the_mac · · Score: 1

    Not all MS programs are made equal. I'm in MS program for one of the top CS programs in the country. We don't use textbooks and PhD and MS students share the same classes. My program is heavily research-oriented rather than class-oriented. This is probably due to my grad program being heavily populated by PhD students where MS students are a tiny population. There are more class-oriented MS degrees that are basically an extension of a BS program, but obviously more specialized.

  130. learn how to learn (meta-learning) by lkcl · · Score: 1

    there is actually something which is far more useful to be able to do, more than any amount of books read, which is only really possible effectively and efficiently now that internet searches are possible (and quick, and accurate), and that is meta-learning. in its crudest most disparaging form one might mistakenly call this cut-and-paste programming but it is actually nothing of the sort.

    basically what you do is treat everything as a black box, and use the principles of the 6 different types of knowledge (listed on the wikipedia page for Advaita Vedanta, which is mentioned specifically because the western word Epistemology is woefully inadequate) to basically reverse-engineer the subject matter and in effect teach yourself *on the go* by way of analysing the results achieved, even though you are starting out from quite literally zero knowledge.

    it does however take a hell of a lot of balls to do this *whilst being paid* and most employers simply will not believe you when you tell them that this is something that you can do... and be *more effective* at applying this technique than people who have been explicitly trained or quotes have experience quotes in the field.

    to be fair to those people who genuinely do have experience, often such people *may* have encountered the circumstances before, such that they *may* have the answer much quicker than you-who-has-no-experience-at-all, *but*, the critical critical thing that you need to tell prospective employers is: what happens when something falls *outside* of the experience of the person who quotes has experience quotes? whom then would the employer rather have (if they had to choose one or the other rather than both people) - the person who will get there in the end, regardless of what they are asked to do, or would they rather have the person who can get there *most* of the time but who does not have the skills or intelligence to work out the all-important remaining last 10% of the job, without which the contract will remain unfulfilled and the company will go bust because of it?

    in short: no amount of reading will substitute for learning how to learn and applying that skill *every single moment of your life*. when i hear people say i am too old to learn it makes me cringe, and i feel sad for them - i cannot say anything so i have to remain silent - but i feel sad for them because i know that inside they have given up. the only time to give up learning is when you are actually dead, and not before!!!

  131. I am a physicist by drolli · · Score: 1

    But the books which shaped my view on computing were
    -The dragon book
    -Algorithms (Sedgewick)
    -An Introduction to Database Systems, (C. J. Date)
    -Finite fields and their applications (Lidl, Niederreiter)
    -Design Patterns
    -The art of computing (Partially)

  132. Re:I'm in CS grad school and we don't use textbook by david_thornley · · Score: 1

    Lots of mine did have textbooks. Some had specially collected packs of papers. I'm not thinking of any class offhand that didn't have some sort of reference.

    --
    "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
  133. Ellen Ullman by wendyg · · Score: 1

    I'd recommend Ellen Ullman's Close to the Machine, a book of essays written in the late 1990s. It's not a computer science book per se, but it is very insightful about how the choices programmers make trickle down to the eventual actual users of the system - that is, not the administrators and employees but the people the system makes decisions for and about. (eg, in the UK's DWP benefits system it would be the people receiving those benefits, not the people deciding whether or not they deserve them).

    wg

  134. Re:I'm in CS grad school and we don't use textbook by EvanED · · Score: 1

    I feel like most of what you said is true is true of my program, except that the proportion of people who leave with an MS is a majority. And in my case, I had 3 grad-level classes (compilers, PL, and algorithms) that broadly speaking worked like advanced undergrad classes -- no substantive research portion. Like I said, we didn't use texts either -- but I feel we could have easily. Other classes (with research projects as a large portion of the class) also could have, but had us reading actual papers instead -- presumably in large part to give PhD students practice. :-)

    I also wouldn't say that a classes-only MS program would be more specialized, unless you mean "better aimed at someone who wants to work in industry." (But in that case, in some ways a PhD program would be much more specialized than that!)

  135. Re:I'm in CS grad school and we don't use textbook by EvanED · · Score: 1

    Lots of mine (actually, almost all) had assigned paper readings, but now that you can get almost any CS paper you want free on the web collecting said papers into something that your students pick up explicitly is a lot less important than it was 20 years ago. I wouldn't count that anyway -- by "textbook" I really mean, well, a textbook. An attempt to write up of lots of existing, widely-accepted knowledge into a coherent presentation aimed at a "broad" audience. (Broad here is relative of course; I just mean not "here's what we put together for CS #### at Awesome State University.")

  136. Obliged? by krid4 · · Score: 1

    Title: The Elements of Computing Systems Authors: Noam Nisan and Simon Schocken Excellent book, excellent free online course