Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
List of freely available programming books (stackoverflow.com)
364 points by parallel on Nov 13, 2011 | hide | past | favorite | 28 comments


There are several lists like this floating around, but this one is just amazingly comprehensive. Reading a subset of these books (and actually building stuff with the knowledge gained) will most likely provide one with a better education than all but the top-tier computer sci programs.

And the cost is $0. Now one might argue that a college cuts down on the time it takes to select courses, find and work with other students, get access to mentors, etc. But I doubt it. Whatever learning inefficiencies colleges address, other inefficiencies more than counteract those gains.

Consider that colleges also force you to spend more time on classes you could complete more quickly on your on, plus all the required coursework that might be completely unnecessary for your goals.


I never pursued a comp sci degree in college, and it's possible that you're right, their subject matter is so basic you don't need to actually take classes to learn the content. I guess you could further argue that sites like Hacker News are so good at helping you meet like-minded coders that literally living with people who have the same passions doesn't yield the same reward that it used to.

That said:

> plus all the required coursework that might be completely unnecessary for your goals.

These were the courses I have become most thankful for at college. I've taken courses on religion, existentialism, the history of the Enlightenment, an analysis of film genres, a course on silent cinema, a flamenco course, and a number of other classes which each incidentally taught me a new way to look at the world. A liberal arts education is a valuable thing, and it's so much easier to grasp its meaning when you're guided there by a number of skilled, caring professors than when you try and read your way to the same goal. I have no doubt that one day people will create a virtual experience that duplicates or improves on what my college experience has been like, but so far nothing comes close.

In fact, one of my only regrets at college was that it didn't make math or science courses mandatory. I'm regretting more and more that my science knowledge was a high school year of biology, chemistry, and physics apiece. I suspect that taking college courses in the sciences would have exposed me to teachers talented enough to make learning those subjects worthwhile. And it's difficult to search for books about rekindling your passions in the sciences; I find the field pretty obscure and not at all easy to navigate on my own.


I agree that these courses were some of the most valuable. For me a course in Eastern Religions was one of the most eye-opening.

However, there's nothing stopping someone from taking these courses later in life (I've known single moms working 50+ hours who make time for education "just for the sake of learning" so no excuses).

I think where we disagree is in requiring people to do one things (liberal arts learning) while their clear priority is to do something else (get a job to survive in this economy). I think that's unfair, even to college students, who can be an admittedly obnoxious bunch. Forced product bundling rarely has the effect it's intended to have. Sure, there may be some people who learn something neat from a class they're forced to take, but there are a lot more who learn nothing and are simply delayed in achieving their goals.

Why should students from poor families be forced to pay for something that economically secure college administrators insist is for their own good when all the student is trying to do is make a better living for himself than his parents had?

In that light forcing students to take these class is rather morally repugnant. It's tantamount to a tax inflicted on people to pay for more product than they want.


Good arguments. I'm extremely fortunate and have been able to attend a costly 4-year college without debt; I have a tendency to take my time here for granted, which I absolutely shouldn't. I feel that it would be wrong of a college that professes to teach a deeper education not to require a breadth of learning from its students, but again, my perspective is unfairly privileged and I'm not thinking in any sort of cost-efficient manner.


In theory, yes. The student would have to be highly self motivated, but this is actually how I learned to program, until I started joining open source projects. It's cost effective, and in my experience, the majority of engineering jobs (especially in startups) that such a student would apply for care more about your ability to code than your degree. A recent topic here actually showed that most programmers applying for a job can't do all but the simplest of programming tasks in languages they list on their resumés. There are fields where a degree is essential, like medical fields with a lot of hands on work. But the beauty of programming fields is that you can learn from the machine that is principally used in programming: the computer.


One free book that I like is "The Z Notation: A Reference Manual" by Spivey. You can get a pdf version for free at http://spivey.oriel.ox.ac.uk/~mike/zrm/zrm.pdf. I would say that learning Z Notation had a bigger impact on my ability to understand and model software than anything else. It isn't exactly programming but it will teach you how to be a better software engineer. I never used it to prove program correctness or refinement but rather to express the relationships between the parts of a software system. It made me better at object oriented modeling.


I've been looking for something like this for a long time - thanks. I'm also interesting in finding something that operates at a level removed from this - making diagrams of the creative process itself, as you go down routes and reach dead ends, and then fork from an earlier path. If readers know of anything like this please let me know.


I've been interested in precisely this same question. I don't know that there are any books that cover that. If there are, I'd also be interested in reading them. As far as visually modeling a creative process, mindmaps or concept maps are the closest. Tony Buzan has written a number of books on Mindmapping.

If you have an Android or iOS device, there are many apps for mindmapping and concept mapping available but I don't know if they are comprehensive in the way that you are looking for, especially for backtracking and annotating failures and routes to avoid. Also, many desktop diagramming software, like ConceptDraw, have templates for mind/concept mapping. Microsoft Visio is a possibility too, although it is more expensive.


Yeah I've got a notation that's kind of based on mind maps. I put 'standing stones' in the middle of a whiteboard to represent desired outcomes, and then try to create a path from the edge of the whiteboard into the stones.

It's useful to track where your dead ends are for further discussion. Someone else comes along and says "why didn't you just do this?" and you can't remember why, just that there was what seemed like a good reason at the time.


Whenever I see lists like this, I think:

- why doesn't it read "list of good programming books"? (the more the merrier, but how about quality?)

- how can such a huge list help anyone? Certainly no-one will read a significant percentage of them.

I'm all for free quality content, but these lists seems to be just for collectors.


I guess someone could take the list, and put a rate up next to each book to see which ones people think are actually the quality books.

I still rate paper books over scanning through pdf for a solution or fix to a book. I'm definitely wrong though as the rest of the world values searchability over knowledge.


It does help me. Decent data for a topic-specific search engine, NLP, etc.

What I usually do when it comes to finding good books is hitting amazon and see the reviews and recommendations. But I already have a big stack of great books that I should finish instead of wasting too much time looking for more.


That would be a great weekend project for someone ;)

If a rating and/or description exists online somewhere, it/they can be retrieved and displayed. Then add a way to make ratings & reviews, give them all some sorting options, and you'll have a nice, useful tool for programmers.

I'd do it, but I already have a long list of weekend projects. :P


I tried to compile such list in past, see http://www.strchr.com/links


The books are on different topics. You only read the ones you want to.


Sigh... I guessed even before clicking the stackoverflow link that the topic would be locked/closed. It seems like every time I find something really interesting on stackoverflow I can count on it being closed.

I realize the moderators are trying to restrict things to specific questions with specific answers, but it's damn frustrating. Why can't they find a way to take advantage of the open-ended questions that you really want a community of programmers to answer?


"Mining of Massive Datasets" and "Introduction to Information Retrieval" are both excellent college-level texts to their respective subjects.

Also, the machine learning book is available for free, "Elements of Statistical Learning":

http://www-stat.stanford.edu/~tibs/ElemStatLearn/download.ht...



In the spirit of freely available learning material, here's this http://hackety-hack.com/. It's a good guide for people who want to learn with a visual aid in real time, as opposed to reading rote literature off a screen. In that sense, it's good for rudimentary basics a beginning programming student would need to understand before they could visualize what's being said in the literature in more complicated manuals, without the visual aid. It's recent, so there aren't many lessons available yet, but the authors are updating more in the future. Thanks for this parallel. Very useful for learning other languages.


Our educational system is so antiquated. If they could only teach kids how to be self motivated. I know when I was young, I didn't care about making grades, but to have the power to write video games was prety damn cool. Videogames 101, robotics 101, those should be a high school electives, kids would love it.


I remember having an excel class in high school as a required elective. Spreadsheets are important of course. It's amazing how many white collar office people still don't know the basics of it -- but how hard is it to fit in two weeks of simple scripting? I think kids learning even just the bare mechanics of programming could be better off


Great list. My office bookshelves are overflowing, with 4 large stacks also on the floor - about half are technical books. I would like to see which of my physical books I can toss because they are available online.


This is a lifesaver, just what I was looking for. I tried google searching for something similar, but some how I never found this list, and only found useless links. Thanks.


Brilliant! Scalable and modular CSS is a great read. Some good practices for anything where you're structuring files period, not even just CSS. Great list.




That's already on the list, but thanks anyway.


This is a nice compilation. Thanks!




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: