it's a really good book, no doubt, but comparing it to sicp is a bit much. if you don't program in perl already, it might be more beneficial to just learn haskell, and writing some functional perl could be a first step toward that goal, particularly if you're coming from a background in C. i read some of if while learning perl because i was already somewhat familiar with functional programming.
Higher Order Perl is the book that actually got me excited about Perl again after using it for ten years and then not needing to touch it for five. As usual MJD is clear, absorbing, and has great taste in what to write about. So many techniques are a great fit for Perl/Ruby/Python and yet are completely absent from books on those languages.
It seems worth mentioning specific books by name, since lists of lists don't help people differentiate the great from the good. Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani looks really promising as an introductory algorithms textbook. I wonder if anyone has experience using it in class?
It's basically just the lecture notes for their class bundled up into a book. I took the class it was based off, and, well, it was okay but not great.
It lacks any sort of underlying narrative or structure--I think this is common with algorithms texts in general. Probably why I didn't like the course much. It feels like a bunch of disjoint topics held together very loosely by some techniques that get repeated a bit.
I compare it very unfavorably to Sispser's Introduction to the Theory of Computation which, I felt, was much more coherent as a book. It's not a fair comparison at all because they're about different (although related) subjects, but I think it neatly illustrates my point.
Also, I don't believe Sipser's book is free, so it's not entirely relevant in that sense either. I just brought it up because I think it's the best example of the underlying narrative and structure I was talking about.
Two and a half years into my bachelor's, Sipser's Introduction to the Theory of Computation is the only computer science textbook I've had so far that I'd say I really found useful for anything beyond the homework problems, besides K.N. King's C Programming: A Modern Approach.
(To keep this on topic, my assembly instructor -- the legendary [to NC State students] Dana Lasher -- posts his course pack online. [1] It's a comprehensive introduction to computer architecture topics and original 8086 assembly programming.)
They're not similar at all. FoCS is mostly about introductory programming and data structures (with a tiny bit about automata). Sipser's book is about computation and complexity - it's comparable to Hopcroft and Ullman's Intro to automata theory, languages, and computation, for which Ullman recommends FoCS or equivalent as a prerequisite.
Coincidentally I just signed up for Ullman's Automata course at Coursera. The description makes it seem pretty basic but I'm interested to see what he does with it.
I've used Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani for the course they teach at Berkeley and didn't like it at all. I'm a pretty big fan of Algorithms by Sedgewick. There is a class on Cousera is also taught by Sedgewick and uses the book. The first half of the book follows a traditional data structures course and the second half a traditional algorithms course.
Some people might find it as a downside but the book was written with Java in mind. I personally didn't mind this at all.
As often as this gets recommended, I'd go with Introduction to Algorithms (CLRS)[1]. I'm currently in the process of going through it on my own as I'm taking a semester off, and I find it perfect to study from. It goes in depth, explaining the math behind run times (which some may like about it, while other might not), and it covers a lot of ground. I haven't fully finished it, and I'm only on chapter 6, but so far it's one of my favourite textbooks to study from.
Skiena's Algorithm Design Manual and Kleinberg and Tardos' Algorithm Design are both very nice books. CLRS is very nice, and depending on your personal ethics the Solutions manual for the 2nd edition is pretty easily obtainable online, which might be useful for that despicable and highly discouraged activity known as self-study. Sedgwick's stuff is not bad.
I used Aho, Hopcroft, and Ullman's two Algorithms books in class. They are old but extremely good. If you want to buy dead tree books they're available used for a very low price.
I can go into the strengths and weaknesses of each (I'm kind of a packrat...) but you haven't said anything about yourself or what you're looking for. If you really don't know what you're looking for you should just do what the majority of people here would tell you to do and get CLRS. It's not an accident that these are popular textbooks or that CLRS is the most popular.
(I didn't really mean to recommend Sedgwick's stuff. As I said, I just think it's not bad.)
Algorithms by S. Dasgupta, C.H. Papadimitriou, and U.V. Vazirani looks really promising as an introductory algorithms textbook. I wonder if anyone has experience using it in class?
We used this in our upper-division intro to algorithms course. Solid book, goes over important algorithms while remaining short and concise, A+ would read again.
I took the Dasgupta's algorithms class at UCSD a couple years ago. I don't know the legal status of the PDF there, exactly, but he gave the link out to the class and almost everyone in the class used it instead of a physical textbook.
I thought the text (and class) was pretty good, although I'm sure being in the class helped. You should definitely have some experience with basic data structures, discrete math and graph theory before diving into it.
Yeah, especially with Markdown integration, which makes incredibly easy for someone to host their own "information site" and make it look nice and modern. I wonder if Wikipedia would ever change their revision system in favor of git.
Someone would have to own each Wikipedia page to approve pull requests. As it is now, anyone can do the edits directly even if there's not a person dedicated to curating a particular page.
This one about building Android apps using HTML/JS/CSS isn't free anymore - http://ofps.oreilly.com/titles/9781449383268/ - itwas in Open Feedback Publishing System some time ago. Now you'd need to buy it. (BTW, it has 2.5 stars on Oreilly site.)
I discovered that when I Read The Fine Article directly. I also discovered that the original list os frozen and out-of-date. It includes at least one book that is no longer freely available, and omits my own JavaScript Allongé, which was made free this month.
I just started on "JavaScript Allongé" and am really enjoying your prose and working through the examples. Good job!
I had to look up what _allongé_ meant as I've never heard it ordered. It sounds like the perfect drink.
"coffee beverage made by using an espresso machine to make an espresso (single or double dose or shot) with much more water (generally twice as much), resulting in a stretched espresso"
README.md says : " This list initially was a clone of stackoverflow - List of freely available programming books by George Stocker. Now updated, with dead links gone (hopefully) and new content. "
I've had this SO list in my bookmarks for long enough, and there were more and more dead links in it. I felt the need to move it to github in order to keep it up-to-date and to augment it.
I apologize if the intention or original source were not made clear.
This is the right thing to do. SO has a very specific vision, that of finding and displaying the definitive answer to an objective question.
A resource like this doesn't fit their model, even if you strain it by trying to invent a question that appears to fit their format.
"This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed."
This is thing I hate about SO. Its view of what is on-topic is completely arbitrary and narrow-minded. I understand that Jeff's initial vision was to create a site for objective questions & answers, but over time SO mods have taken it to the extreme.
The list of best programming books may not be totally objective, but the wisdom of the crowds just should be enough to filter out what's good from what's bad. When mods lock the allegedly non-objective questions, they force content to become stale and rot - but still showing up at the top of search engines.
I used to have the same reaction when stumbling upon lists like this. But it has never proved to be a great idea. You get easily overwhelmed by the amount and variety of content available. Before even starting reading one of these books, you need to filter them by topic, by scope, by usefulness, and by quality. You inevitably end up starting none of them.
I prefer focusing on one subject or programming language, search the internet for feedbacks and reviews, select the one book (free or not) that fits my needs and read that one. I'm consequently more informed about what my further needs are: do I want to learn more about this programming language? Or about a different but complementary one? Or do I need to reach for a more language-agnostic topic?
It's the usual "quality over quantity" issue, that prevents yourself from taking no decision at all when facing too many options.
i had that same experience. most books are good but are usually replaceable. some books i can't understand how good they are because they're beyond my level. And a few are just right, and also take you to that "a-ha moment."
you need to do your research and select that one right book and work through it. If in the middle of a book you think you're not making good progress, you should just drop it and find another one.
I think the point is that there are only so many hours in a human lifespan. While I'd love to read everything that the world has to say on the subject, I'd like to focus on books that will be the most enlightening (or entertaining).