Comp Sci Recommended Reading

A place to discuss the science of computers and programs, from algorithms to computability.

Formal proofs preferred.

Moderators: phlip, Larson, Moderators General, Prelates

Comp Sci Recommended Reading

Postby mjp41 » Thu Oct 06, 2011 5:02 pm UTC

I just started my Computer Science undergraduate degree and it turns out the first term is largely work I covered in my computing A-level, so I've decided this is a good time to jump head first into my university's rather excellent library and work on my background knowledge of the very basics of the subject.

Currently I'm reading Algorithmics: The Spirit Of Computing by David Harel, I was just wondering if anyone had any other suggestions of things I could look into? :)
mjp41
 
Posts: 1
Joined: Thu Oct 06, 2011 4:56 pm UTC

Re: Comp Sci Recommended Reading

Postby radams » Sat Oct 08, 2011 9:04 am UTC

Knuth's The Art of Computer Programming. That will keep you busy for a while.
radams
 
Posts: 77
Joined: Fri May 14, 2010 12:49 pm UTC

Re: Comp Sci Recommended Reading

Postby KnightExemplar » Sun Oct 09, 2011 5:53 am UTC

Knuth's book is great because it covers a ton of math that you'll likely not read in any other book. The breadth and depth of Knuth's series is beyond anything I've ever seen. But because of it, its rather hard to read... in particular, its extremely dense. Small font, few pictures, with example code in an archaic assembly language... I'd recommend an easier book before tackling that one.

As far as Algorithm Design itself, I've found Jon Kleinberg's "Algorithm Design" to be a much easier read, with prettier pictures and larger text. It satisfies a separate purpose than Knuth's book, and both are excellent books. While Knuth's books attempt to cover everything, Kleinberg's "Algorithm Design" focuses on strategies on creating new algorithms. It was used in my 400 level Advanced Algorithms class, but I think the book is self-sufficient. A dedicated student will be able to go through this book much eaiser than Knuth's books.

------------

If you've got a specific language in mind, you should point it out. There are tons of technical books specific to a language that are great. But they're only good if you plan to use that language.
First Strike +1/+1 and Indestructible.
KnightExemplar
 
Posts: 1589
Joined: Sun Dec 26, 2010 1:58 pm UTC

Re: Comp Sci Recommended Reading

Postby Jplus » Sun Oct 09, 2011 11:32 am UTC

Introduction to The Design and Analysis of Algorithms by Anany Levitin is also a nice and very digestible book. Knuth's work is brilliant, but not very useful if you don't know alot about algorithms already.

However, let's not forget that CS isn't only about programming. If you want to know about 'the very basics' of CS, you might enjoy to read some of Alan Turing's work. I haven't read any of it but I heard he did a good job in explaining himself.
Hey, like coding? Perhaps you should check out the red spider project.
Feel free to call me Julian. J+ is just an abbreviation.
User avatar
Jplus
 
Posts: 1091
Joined: Wed Apr 21, 2010 12:29 pm UTC

Re: Comp Sci Recommended Reading

Postby naschilling » Sun Oct 09, 2011 11:52 am UTC

I'll agree that Kleinberg's "Algorithm Design" is a good book. I had a worthless professor for my algorithms class and that book is the reason I was able to pass. EvanD knows who I'm talking about....

I also really liked Stevens series on Network Programming, Volume 1 (ISBN: 9780134900124) and Volume 2 (ISBN: 9780130810816). They are starting to be a bit dated, but the network programming and interprocess communication are still done how they describe.

I will also mention that the best books you can find for general theory and understanding will be old. Many will be from the 1980's and 1990's. If you're looking to learn a specific topic, this isn't generally true, but the general topics don't change. I learned assembly from one of Peter Norton's books based upon the 8088 and 8086 processor (ISBN: 9780136619017), and although the registers and instruction set have changed significantly over the years, the ideas are still the same. By knowing the ideas and the theory, I was able to pick up 64-bit assembly language, as well as MIPS and PPC when I needed to. All modern computing is based upon ideas introduced decades ago.
If you don't have walls, why would you need Windows?
User avatar
naschilling
 
Posts: 142
Joined: Wed Apr 06, 2011 2:52 pm UTC

Re: Comp Sci Recommended Reading

Postby headprogrammingczar » Sun Oct 09, 2011 12:31 pm UTC

If you really want to get into theory, TAPL is a great book to get started with, if you don't mind having to buy it. TTFP covers most of the same stuff and is free on the author's website. They should be easy to read, if you don't go too fast.
<quintopia> You're not crazy. you're the goddamn headprogrammingspock!
<Weeks> You're the goddamn headprogrammingspock!
<Cheese> I love you
User avatar
headprogrammingczar
 
Posts: 2953
Joined: Mon Oct 22, 2007 5:28 pm UTC
Location: Beaming you up

Re: Comp Sci Recommended Reading

Postby freakish777 » Wed Oct 12, 2011 8:13 pm UTC

AI: A Modern Approach

This one is a bit advanced, but a fantastic book.

Head First: Design Patterns

This one is a bit basic, but a fantastic book. In fact more CompSci books need to be like this, instead of over complicating things, simplifying them to the point where anyone can pick it up, and have it make sense to them. Yes, there are some incredibly powerful things you can do the deeper your knowledge goes, but I'm sick of professors and authors of books saying any the following:

"Programming is complicated and hard to understand (and that's the way it should be)." No, it's as hard and complicated as you make it.

"You can't possibly program (or be a good programmer) until you first understand the underlying hardware, processor instructions, OS, history of computers (In My Day We didn't have hard drives! Everything was written to tape!), etc." Actually you can. Will you inevitably write a memory leak at some point? Sure. And when that happens, that's when you should start teaching students about how the underlying system is important, and considerations that have to be made to avoid making this error in the future.

"<Wall of text/speech, no parallels, allusions, comparisons or analogies given at all and expect you to understand>, congrats you're an expert now." Fuck. That. The concepts aren't hard to understand if you phrase them right. Stop phrasing them wrong.
User avatar
freakish777
 
Posts: 328
Joined: Wed Jul 13, 2011 2:14 pm UTC

Re: Comp Sci Recommended Reading

Postby KnightExemplar » Thu Oct 13, 2011 12:40 am UTC

freakish777 wrote:AI: A Modern Approach

This one is a bit advanced, but a fantastic book.


A wee bit specialized ya think? But yes, fantastic book nonetheless.

Head First: Design Patterns

This one is a bit basic, but a fantastic book. In fact more CompSci books need to be like this, instead of over complicating things, simplifying them to the point where anyone can pick it up, and have it make sense to them. Yes, there are some incredibly powerful things you can do the deeper your knowledge goes, but I'm sick of professors and authors of books saying any the following:

"Programming is complicated and hard to understand (and that's the way it should be)." No, it's as hard and complicated as you make it.

"You can't possibly program (or be a good programmer) until you first understand the underlying hardware, processor instructions, OS, history of computers (In My Day We didn't have hard drives! Everything was written to tape!), etc." Actually you can. Will you inevitably write a memory leak at some point? Sure. And when that happens, that's when you should start teaching students about how the underlying system is important, and considerations that have to be made to avoid making this error in the future.

"<Wall of text/speech, no parallels, allusions, comparisons or analogies given at all and expect you to understand>, congrats you're an expert now." Fuck. That. The concepts aren't hard to understand if you phrase them right. Stop phrasing them wrong.


I haven't read "Head First: Design Patterns", but that does remind me of another book. The Practice of Programming by Brian W. Kernighan and Rob Pike (Yes, that Kernighan. The "K" in K&R C). Simple, practical advice for how to program. It has a chapter on theory (Big Oh and stuff), but the majority of the book talks about those things that other books don't talk about.
First Strike +1/+1 and Indestructible.
KnightExemplar
 
Posts: 1589
Joined: Sun Dec 26, 2010 1:58 pm UTC

Re: Comp Sci Recommended Reading

Postby Simon Shine » Thu Oct 13, 2011 10:45 am UTC

Here's a list of useful books that every computer scientist should at least have considered reading:

Structure and Interpretation of Computer Programs (Abelson, Sussman, Sussman)
Selected Papers on Computer Science (Knuth)
Introduction to Algorithms (Cormen, Leierson, Rivest, Stein)
Computer Organization and Design (Patterson, Hennessy)
Compilers: Principles, Techniques, and Tools (Aho, Sethi, Ullman)

Other books that I've found interesting in my university library or elsewhere:
Basic Category Theory for Computer Scientists (Pierce)
Logic in Computer Science (Huth, Ryan) -- quicker than reading Gödel-Escher-Bach
Implementing Functional Languages (Peyton Jones, Lester) -- very easy read

There comes a time in every computer scientist's life where she picks up her TAOCP (The Art of Computer Programming) and starts reading it from some random entry point. The question is just when. ;-P The fact that Knuth writes his code in a virtual assembly language he made up that isn't entirely like the ones we use today, or the ones generally used in teaching today, just makes it slightly more abstract.
Simon Shine
 
Posts: 1
Joined: Thu Oct 13, 2011 10:17 am UTC

Re: Comp Sci Recommended Reading

Postby EvanED » Thu Oct 13, 2011 2:10 pm UTC

Simon Shine wrote:Compilers: Principles, Techniques, and Tools (Aho, Sethi, Ullman)

Personally, I am not a huge fan of this book. If you want stuff for a beginner, I don't think it presents things as clearly as it could: I would suggest Cooper and Torczon's Engineering a Compiler. For more advanced topics, Muchnick's (whatever it's called) is pretty good.

There is some stuff not covered by those two which the dragon book (Aho) covers though. It's biggest strength is its completeness; you could probably get three semesters of complier classes out of that book with no problem.

If you do get the dragon book, the 2nd edition is critical.
EvanED
 
Posts: 3765
Joined: Mon Aug 07, 2006 6:28 am UTC
Location: Madison, WI

Re: Comp Sci Recommended Reading

Postby Meem1029 » Thu Oct 13, 2011 6:46 pm UTC

If you're looking for a fairly simple introduction to programming, <a href="http://htdp.org">How to Design Programs</a> is a pretty good book. It's what I learned with in high school and I believe is used at MIT for an introductory course.
cjmcjmcjmcjm wrote:If it can't be done in an 80x24 terminal, it's not worth doing
Meem1029
 
Posts: 377
Joined: Wed Jul 21, 2010 1:11 am UTC

Re: Comp Sci Recommended Reading

Postby letterX » Fri Oct 14, 2011 6:24 am UTC

Meem1029 wrote:If you're looking for a fairly simple introduction to programming, <a href="http://htdp.org">How to Design Programs</a> is a pretty good book. It's what I learned with in high school and I believe is used at MIT for an introductory course.

HTDP is how I learned to program in the first place, so it will always hold a special place in my list of awesome books. It's pretty much the kinder, friendlier version of SICP which is itself a wonderful book. Also, every first course in programming needs to have a meta-circular evaluator. Because... why the hell not?
letterX
 
Posts: 490
Joined: Fri Feb 22, 2008 4:00 am UTC
Location: Ithaca, NY


Return to Computer Science

Who is online

Users browsing this forum: Fekeenuisance and 1 guest