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 .
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 .
knuth's art of computer programming (Score:5, Insightful)
Re:knuth's art of computer programming (Score:5, 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.
Re:knuth's art of computer programming (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
Re:"Science" == "Argumentum ab auctoritate" ?!?!?! (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.
Re: (Score:2)
Mod parent up. This is the correct response.
Yaz
Re: "Science" == "Argumentum ab auctoritate" ?!?!? (Score:2)
no citation to support your point?
Re: (Score:2)
Re: (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 norma
Re: (Score:2)
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 under
Re:"Science" == "Argumentum ab auctoritate" ?!?!?! (Score:5, 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. [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.
Yaz
Re: (Score:3)
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.
My advice to my students.... (Score:2)
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.
Re: (Score:2)
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.
Re: (Score:2)
Reasons I've needed to roll my own Knuth-ish data structures or algorithms in the last 10 years:
Re: (Score:2)
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.
Re: (Score:2)
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.
Re: (Score:2)
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
relations (Score:5, Funny)
Re:relations (Score:5, 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... [imdb.com])
Um, shouldn't he already know? (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.
Classics (Score:5, Insightful)
Brooks - "The Mythical Man-month"
Yourdon - "Death March"
DeMarco & Lister - "Peopleware"
Of course he may change majors after reading them.
Cheers,
Dave
Re: (Score:2)
Re: (Score:2)
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 [wikipedia.org] 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 a
Re: (Score:2)
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.
SE, not CS (Score:2)
Incidentally, It's kinda sad how little of the topics under discussion in "Peopleware" have actually been empirically examined in the peer-reviewed literature...
Computer Science (Score:4, 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... [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 (Score:5, Insightful)
Code Complete (Score:4, Informative)
Code Complete has been one of the most useful texts that I have found.
Re: (Score:2)
A good hardware book or three. (Score:2)
Circuit analysis for dummies.
It's time he learned the fundamentals.
The Psychology of Computer Programming (Score:3)
. . . from Gerald Weinberg: http://en.wikipedia.org/wiki/G... [wikipedia.org]
Re: (Score:2)
Re: (Score:2)
A graph theory book... (Score:2, Funny)
to clarify your relationship to this guy!
Re: (Score:2)
Nah, go with Foley and van Dam. Most modern hardware gives you at least 256 shades of grey.
Some non-Knuth suggestions (Score:5, Interesting)
Compiler construction teaches many different aspects of computer science, and this is a classic.
One of the best-written technical books, ever. On the practical side, but doing useful things (tm) is not illegal in computer science.
A good introduction to the fundamentals of theoretical computer science.
Re: (Score:2)
Re: (Score:2)
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.
Programming & databases (Score:2)
Knuth and Dijkstra for programming, Date for databases.
Re: (Score:2)
If you like Dijkstra's style, I can recommend Programming: The Derivation of Algorithms by Kaldewaij. For details, see my favorites list [slashdot.org] in a later post.
Design Patterns by the Gang Of Four (Score:5, Insightful)
I recommend "Design Patterns" by Gamma, Helm, Johnson, Vlissides
Re: (Score:2)
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.
Re:Design Patterns by the Gang Of Four (Score:4, 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 [c2.com]. In fact, I'd say that for new professionals a study of anti-patterns is actually more useful than a study of patterns.
Re: (Score:2)
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.
Re: (Score:2)
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.
Re: (Score:2)
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 a
I was going to say the Stevens Book (Score:2)
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]
Computer Science Books (Score:4, Interesting)
Anything by Claude Shannon
Information theory and statistics - Sollomon Kullback
Tufte (Score:5, Informative)
http://www.edwardtufte.com/tuf... [edwardtufte.com]
Books about graduate school (Score:2)
Classics (Score:4, Informative)
K & R
Effective C++
Object-Oriented Software Construction by Bertrand Meyer
The PostgreSQL manual
The two (and-a-half) best computer books ever... (Score:2)
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 an
Re: (Score:2)
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.
Two great books (Score:2)
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... (Score:3)
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 (Score:4, 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.
CLR, Tichy, Hacker's Delight (Score:3)
Books? Who needs books? (Score:2)
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!
Re: (Score:2)
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.
Re: (Score:2)
Theory and practice (Score:3)
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:
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?
Algol 68 (Score:2)
Need a list of "non-traditional" programming books (Score:3)
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.)
A nice list here (Score:2)
Domain Driven Design (Score:2)
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... [amazon.com]
Dilbert strips (Score:3)
High, low, middle (Score:2)
Knuth for how things work, Mythical man month for how things don't work. Everything else is left as an exercise for the reader.
My favorites (Score:3)
Why is no one proposing the obvious? (Score:2)
There are plenty ' "language x/technology y" in 24 hours' books, why not start with them? ... or the 'What managers should know about XYZ'? /me runs and hides :)
Or the plenty 'XYZ for dummies'?
The Cuckoo's Egg by Cliff Stoll (Score:2)
Feynman's Lectures on Computation (Score:4, 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-... [amazon.com]
The Art of Scalability (Score:2)
...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.
Rattiest Books on My Shelves (Score:2)
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: Co
Three words... (Score:2)
A Programming Language
(by Ken Iverson)
They don't exist (Score:2)
Oldies but goodies (Score:2)
The Psychology of Computer Programming by Gerald Weinburg
The Mythical Man-Month by Fred Brooks
Re: (Score:2)
This is graduate level, though. Grad-level books tend to stick around for decades.
Re: (Score:3)
nonsense, good books about OS and language design, compiler theory, algorithms, information theory: those are good for decades.
No they are not (Score:2)
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: (Score:2, Insightful)
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: (Score:2)
no, poseurs will quote certain well known passages without understanding
you've been duped
Re: (Score:3)
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: (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.
Re: (Score:2)
"Sinclair's The jungle"
An important book for preparing any college student for what life is like in today's job market.
Re: (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.
Re: (Score:3)
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,
Re: (Score:2)
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: (Score:2)
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: (Score:3)
better to design a few types of languages and build compilers for them
Re: (Score:3)
Before learning any existing ones!
So you don't spoil your purity.
Re: (Score:3)
a comp-sci grad student has already done that
Re: (Score:2)
All of them? None of them focused elsewhere?
That has not been my experience with advanced degree holders.
Re: (Score:2)
in their undergrad days, yes
Re: (Score:2)
Re: (Score:2)
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.
Re: (Score:2)
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: (Score:2)
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).
Re: (Score:2)
And to go with that: "concrete mathematics" which gives lots of basics many grad students lack.
http://www.amazon.com/Concrete... [amazon.com]
"usability" (Score:2)
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
Re: (Score:2)
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, wh