Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Ask Slashdot: Books for a Comp Sci Graduate Student?

Unknown Lamer posted about 4 months ago | from the suggesting-some-knowledge dept.

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

cancel ×

247 comments

Sorry! There are no comments related to the filter you selected.

Shove it up your snap! (-1)

Anonymous Coward | about 4 months ago | (#46836625)

[darklord tail threesome], [bleeding char melty], [lofty researchers], [horse spectators marine], [poopy's buying industries], [europeans festivals], [civilize combusted repulsive], [devils is becoming fags],
                                            [gloryholes plaguing watery], [insignificant amending torturing], [ignorant racer], [virtual haunted], [trucks infects a schools], [oscillating pansexuals tunes], [climb goblins blaire witch]

Re: Shove it up your snap! (-1)

Anonymous Coward | about 4 months ago | (#46836689)

Lol oscillating pansexuals

knuth's art of computer programming (5, Insightful)

whyloginwhysubscribe (993688) | about 4 months ago | (#46836661)

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

Re:knuth's art of computer programming (4, Interesting)

Animats (122034) | about 4 months ago | (#46836775)

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.

Re:knuth's art of computer programming (5, Informative)

Yaztromo (655250) | about 4 months ago | (#46837301)

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

"Science" == "Argumentum ab auctoritate" ?!?!?!? (0)

mosel-saar-ruwer (732341) | about 4 months ago | (#46837491)

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.

Re:"Science" == "Argumentum ab auctoritate" ?!?!?! (5, Informative)

Anonymous Coward | about 4 months ago | (#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.

Re:knuth's art of computer programming (2)

ImprovOmega (744717) | about 4 months ago | (#46837333)

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.

Re:knuth's art of computer programming (0)

Anonymous Coward | about 4 months ago | (#46837879)

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.

Re:knuth's art of computer programming (0)

Anonymous Coward | about 4 months ago | (#46836835)

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

Suggested Topics (1)

Anonymous Coward | about 4 months ago | (#46837233)

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.

Is this it? (0)

Anonymous Coward | about 4 months ago | (#46837381)

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

Several languages (1)

Anonymous Coward | about 4 months ago | (#46836663)

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.

Re:Several languages (1)

rubycodez (864176) | about 4 months ago | (#46836739)

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

Re:Several languages (1)

sribe (304414) | about 4 months ago | (#46836773)

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 ;-)

Re:Several languages (2)

rubycodez (864176) | about 4 months ago | (#46836819)

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

Re:Several languages (2)

HornWumpus (783565) | about 4 months ago | (#46836891)

Before learning any existing ones!

So you don't spoil your purity.

Re:Several languages (2)

rubycodez (864176) | about 4 months ago | (#46837029)

a comp-sci grad student has already done that

Re:Several languages (1)

HornWumpus (783565) | about 4 months ago | (#46837143)

All of them? None of them focused elsewhere?

That has not been my experience with advanced degree holders.

Re:Several languages (1)

epee1221 (873140) | about 4 months ago | (#46837245)

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

Re:Several languages (0)

Anonymous Coward | about 4 months ago | (#46836991)

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.

relations (4, Funny)

cosm (1072588) | about 4 months ago | (#46836667)

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

Re:relations (4, Funny)

MikeTheGreat (34142) | about 4 months ago | (#46836801)

"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... [imdb.com] )

Personal (0)

Anonymous Coward | about 4 months ago | (#46836677)

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.

Books are decorations (0)

tomhath (637240) | about 4 months ago | (#46836683)

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.

Re:Books are decorations (1)

AdamHaun (43173) | about 4 months ago | (#46836701)

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

Re:Books are decorations (1)

Anonymous Coward | about 4 months ago | (#46836745)

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.

Re:Books are decorations (2)

narcc (412956) | about 4 months ago | (#46836915)

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!

Re:Books are decorations (1)

Anonymous Coward | about 4 months ago | (#46837051)

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

Re:Books are decorations (2)

Desler (1608317) | about 4 months ago | (#46837091)

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.

Re:Books are decorations (-1)

Anonymous Coward | about 4 months ago | (#46836763)

He asked for computer science books not technical books you uneducated plebeian.

Re:Books are decorations (2)

rubycodez (864176) | about 4 months ago | (#46836793)

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

Re:Books are decorations (0)

Anonymous Coward | about 4 months ago | (#46837067)

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.

No they are not (1)

SuperKendall (25149) | about 4 months ago | (#46837213)

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

Re:No they are not (2, Insightful)

Anonymous Coward | about 4 months ago | (#46837281)

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

Re:Books are decorations (1)

Anonymous Coward | about 4 months ago | (#46836885)

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.

Re:Books are decorations (1)

motorhead (82353) | about 4 months ago | (#46837641)

Yep
Good start...

There Is Only One Answer: (0)

Anonymous Coward | about 4 months ago | (#46836715)

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.

Um, shouldn't he already know? (2, Insightful)

Anonymous Coward | about 4 months ago | (#46836725)

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.

Mein Kampf by Adolf Hitler (-1, Troll)

Anonymous Coward | about 4 months ago | (#46836735)

It's a must read for anyone of European heritage concerned about the pillaging of our civilization by oriental nomads.

Re:Mein Kampf by Adolf Hitler (0)

Anonymous Coward | about 4 months ago | (#46836789)

Don't you mean levantine nomads???

Re:Mein Kampf by Adolf Hitler (1)

presidenteloco (659168) | about 4 months ago | (#46836949)

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.

Re:Mein Kampf by Adolf Hitler (0)

Anonymous Coward | about 4 months ago | (#46837717)

Press ONE...

Classics (4, Insightful)

DaveAtFraud (460127) | about 4 months ago | (#46836779)

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

Of course he may change majors after reading them.

Cheers,
Dave

Re:Classics (0)

Anonymous Coward | about 4 months ago | (#46837101)

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

Beginning Linux Programming (0)

Anonymous Coward | about 4 months ago | (#46836795)

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

Computer Science (3, Informative)

hackus (159037) | about 4 months ago | (#46836881)

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.

Re: Computer Science (0)

Anonymous Coward | about 4 months ago | (#46837001)

Is this "calculas" anything like calculus?

Re:Computer Science (4, Insightful)

ImprovOmega (744717) | about 4 months ago | (#46837383)

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.

Re:Computer Science (0)

Anonymous Coward | about 4 months ago | (#46837667)

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.

Code Complete (4, Informative)

Anonymous Coward | about 4 months ago | (#46836887)

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

Introduction to Algorithms (1)

Anonymous Coward | about 4 months ago | (#46836895)

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

in my library ... (1)

kairis (865663) | about 4 months ago | (#46836905)

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

A good hardware book or three. (1)

HornWumpus (783565) | about 4 months ago | (#46836919)

Circuit analysis for dummies.

It's time he learned the fundamentals.

The Psychology of Computer Programming (2)

PolygamousRanchKid (1290638) | about 4 months ago | (#46836939)

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

Re:The Psychology of Computer Programming (1)

codegen (103601) | about 4 months ago | (#46837683)

This...

A graph theory book... (2, Funny)

Anonymous Coward | about 4 months ago | (#46836945)

to clarify your relationship to this guy!

Some non-Knuth suggestions (4, Interesting)

Stephan Schulz (948) | about 4 months ago | (#46836967)

Re:Some non-Knuth suggestions (1)

EvanED (569694) | about 4 months ago | (#46837109)

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.

Re:Some non-Knuth suggestions (1)

Stephan Schulz (948) | about 4 months ago | (#46837193)

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.

Re:Some non-Knuth suggestions (1)

EvanED (569694) | about 4 months ago | (#46837317)

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

Programming & databases (1)

leandrod (17766) | about 4 months ago | (#46836975)

Knuth and Dijkstra for programming, Date for databases.

Books about thinking about CS (1)

Anonymous Coward | about 4 months ago | (#46836977)

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.

Design Patterns by the Gang Of Four (4, Insightful)

mrflash818 (226638) | about 4 months ago | (#46836989)

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

Re:Design Patterns by the Gang Of Four (1)

Anonymous Coward | about 4 months ago | (#46837707)

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 )

Re:Design Patterns by the Gang Of Four (0)

Anonymous Coward | about 4 months ago | (#46837885)

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

I was going to say the Stevens Book (1)

Marrow (195242) | about 4 months ago | (#46837035)

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

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

While the 3rd Edition is cheaper:

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

Re:I was going to say the Stevens Book (1)

Desler (1608317) | about 4 months ago | (#46837111)

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

24 Deadly Sins of Software Security (1)

rallytales (2959345) | about 4 months ago | (#46837093)

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

Getting Things Done, David Allen (1)

drgreening (594381) | about 4 months ago | (#46837097)

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

Computer Science Books (3, Interesting)

Angrywhiteshoes (2440876) | about 4 months ago | (#46837135)

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

Artificial intelligence (0)

Anonymous Coward | about 4 months ago | (#46837187)

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

Tufte (4, Informative)

Sez Zero (586611) | about 4 months ago | (#46837223)

The Visual Display of Quantitative Information, because you'll probably to do it eventually.

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

Some classics (1)

jnorden (152055) | about 4 months ago | (#46837295)

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

Re:Some classics (1)

EvanED (569694) | about 4 months ago | (#46837391)

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.

Visual display of quantitative information (1)

Anonymous Coward | about 4 months ago | (#46837331)

One of the clearest books I've ever read.

Books about graduate school (1)

David Jao (2759) | about 4 months ago | (#46837337)

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 [pgbovine.net] 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.

Godel, Escher, Bach: An Eternal Golden Braid (-1)

Anonymous Coward | about 4 months ago | (#46837349)

By Douglas R. Hofstadter

My favorites (0)

Anonymous Coward | about 4 months ago | (#46837351)

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

Re:My favorites (1)

EvanED (569694) | about 4 months ago | (#46837411)

Code by Charles Petzold

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

My List (0)

Anonymous Coward | about 4 months ago | (#46837373)

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.

Re:My List (0)

Anonymous Coward | about 4 months ago | (#46837869)

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?

Books on computer arts (0)

Anonymous Coward | about 4 months ago | (#46837401)

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.

Classics (3, Informative)

chriswaco (37809) | about 4 months ago | (#46837409)

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

Weisenbaum / Levy / Hofstadter / Turing (0)

Anonymous Coward | about 4 months ago | (#46837439)

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)

The two (and-a-half) best computer books ever... (1)

dublin (31215) | about 4 months ago | (#46837475)

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.

Two great books (1)

ed1park (100777) | about 4 months ago | (#46837489)

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

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

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

Okay, I'll bite... (2)

ndykman (659315) | about 4 months ago | (#46837501)

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.

Pragmatic Programmer: From Journeyman to Maste (3, Informative)

CokoBWare (584686) | about 4 months ago | (#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.

CLR, Tichy, Hacker's Delight (2)

Dr. Gamera (1548195) | about 4 months ago | (#46837575)

Other than the obvious Cormen, Leiserson, and Rivest (plus Stein these days, apparently): http://en.wikipedia.org/wiki/I... [wikipedia.org] 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.

Books? Who needs books? (1)

Tony Isaac (1301187) | about 4 months ago | (#46837625)

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!

Technical writing (0)

Anonymous Coward | about 4 months ago | (#46837643)

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

God damn it.... (0)

Anonymous Coward | about 4 months ago | (#46837733)

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

Re:God damn it.... (1)

ranton (36917) | about 4 months ago | (#46837895)

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

Don't bother with CS grad school? (0)

Anonymous Coward | about 4 months ago | (#46837797)

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.

Surviving Your Stupid, Stupid Decision to Go to Gr (1)

allan marcus (3380849) | about 4 months ago | (#46837833)

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

K & R (1)

Tim99 (984437) | about 4 months ago | (#46837835)

It's all a real Comp Sci needs...

Theory and practice (2)

HalfFlat (121672) | about 4 months ago | (#46837861)

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 [amazon.com] has also already been mentioned, and I'd add my endorsement!

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

  • Computational Geometry [amazon.com] 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 [google.com.au] 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?

Introduction to Algorithms (1)

flabbergast (620919) | about 4 months ago | (#46837863)

Introduction to Algorithms by Cormen Leiserson Rivest and Stein.

Non-technical books (0)

Anonymous Coward | about 4 months ago | (#46837871)

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?
Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>