Want to read Slashdot from your mobile device? Point it at m.slashdot.org and keep reading!


Forgot your password?
Books Programming

Ask Slashdot: Books for a Comp Sci Graduate Student? 247

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 .
This discussion has been archived. No new comments can be posted.

Ask Slashdot: Books for a Comp Sci Graduate Student?

Comments Filter:
  • Computer Science (Score:4, Informative)

    by hackus ( 159037 ) on Thursday April 24, 2014 @07:00PM (#46836881) Homepage

    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... [amazon.com]

    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.

  • Code Complete (Score:4, Informative)

    by Anonymous Coward on Thursday April 24, 2014 @07:01PM (#46836887)

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

  • Tufte (Score:5, Informative)

    by Sez Zero ( 586611 ) on Thursday April 24, 2014 @07:44PM (#46837223) Journal
    The Visual Display of Quantitative Information, because you'll probably to do it eventually.

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

  • by Yaztromo ( 655250 ) on Thursday April 24, 2014 @07:56PM (#46837301) Homepage Journal

    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.


  • Classics (Score:4, Informative)

    by chriswaco ( 37809 ) on Thursday April 24, 2014 @08:12PM (#46837409)

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

  • by CokoBWare ( 584686 ) on Thursday April 24, 2014 @08:41PM (#46837569)

    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.

  • by Anonymous Coward on Thursday April 24, 2014 @09:18PM (#46837781)

    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.

  • by Yaztromo ( 655250 ) on Thursday April 24, 2014 @10:29PM (#46838105) Homepage Journal

    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. [slashdot.org]. 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 [wikipedia.org] , 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.


  • by Anonymous Coward on Friday April 25, 2014 @12:46AM (#46838543)

    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.

Mr. Cole's Axiom: The sum of the intelligence on the planet is a constant; the population is growing.