Please note that I'm going against my own previous advice here, as I haven't finished reading every one of these books from cover to cover (
NOTE: One Anonymous poster pointed out that there's more material missing from the Google Book Search selections than at first appeared. I've had to remove those books, but you can search their selection through the link provided.
Without further ado, I present to you the 7 best free programming books that I could find online. Enjoy.
- Structure and Interpretation of Computer Programs
- Thinking in Java (3rd ed.)
- Thinking in C++ (2nd ed.)
- Algorithms and Complexity
- How to Think Like a Computer Scientist(Learning with C++)
- Programming Ruby (1st ed.)
- Dive Into Python
I'd also certainly be interested to learn of any other free online book resources that anyone can recommend.
Related posts:
Even More Free Programming Books
27 comments:
MJD's fantastic Higher-Order Perl was recently made available for free download, too.
Andy,
Thanks for the link to Higher-Order Perl. I learned Perl exclusively from O'Reilley books, and I'd never heard of it before. If you've read the O'Reilley Perl series, can you give me a rough estimate of where Higher-Order Perl fits on the Learning-Programming-Mastering Perl scale?
I'd say HOP is on the 'Advanced Perl' level, slightly lower if you've got previous experience in functional programming.
It's basically the functional programming equivalent to Damian Conways OOP Perl book (Manning, also recommended).
mhd,
Thanks for the perspective on HOP.
Trust me, SICP is the best programming book in existence. To no book and no man do I owe more of my programming skills and inclinations than I do to SICP.
You should also have a look at the corresponding video lectures: they differ from the book in the sense that they are more understandable and cover some topics that the book doesn't. On the other hand, the book covers some topics that the lectures don't. In any case, Abelson and Sussman are both very good speakers and it is a joy to listen to them.
Thanks for that endorsement of SICP, jkff. I'll certainly take it into consideration.
I have to agree that SICP is a great book. Well worth your time. I especially recommend working through the exercises.
Brian,
Thanks for the tip. I've heard that SICP is a Lisp book. Can the exercises be done in any language, or would I need to stick to Lisp? Is Scheme a suitable substitute?
SICP is good, all right. I don't know if I'd say it's the best ever, but it's very good. Two other excellent online books (again, not "best ever") are:
Paul Graham's On Lisp, about using Lisp's syntactic flexibility to improve your code; and Leo Brodie's Thinking Forth, about using the simplicity behind Forth's designs in your own designs. (You may also want to read Brodie's Starting Forth, also online, if you're not the type that can just skim over programming languages you don't know yet.)
If you really want to get "out there", check out Iverson's Calculus (link includes other books he's posted online), RIP. This is an opportunity to learn a unique and useful programming language, J, while at the same time reviewing/learning calculus. The two most amazing things about this book is that first, it teaches calc without using limits (cool, less boring); and second, it teaches aspects of calc that are normally considered very advanced, like fractional integrals, and makes the completely reasonable for beginners.
Bill, Scheme is a Lisp dialect; SICP actually uses Scheme rather than (say) Common Lisp for its examples. The translation is mostly trivial, except for a missing feature on one side or the other (macros aren't trivial to translate, nor is call/cc).
wtanksley,
Thanks for the recommendations. I'm a long time reader of Paul Graham, so I'm surprised at myself for not knowing that On Lisp was available. I'll be sure to add the Forth books to my ever-growing book queue as well.
Thanks also for clearing up my question about using Scheme with the SICP examples. I've always wanted to learn Scheme, so it looks like I should definitely give SICP a try.
I also just found .NET Book Zero by Charles Petzold for free online. It's an introduction to C# and the .NET Framework for programmers who have experience with C or C++.
...and for CS math I found Basics of Algebra and Analysis for Computer Science.
"Concepts, Techniques, and Models of Computer Programming" is often viewed as a followup to SICP. Eraly drafts of the book were available free before it was published by MIT. For example, at http://www.ulb.ac.be/di/rwuyts/INFO020_2003/vanRoyHaridi2003-book.pdf
Info on the printed edition is at:
http://www.info.ucl.ac.be/~pvr/book.html
dandrew,
Thanks for the information about "Concepts, Techniques, and Models of Computer Programming". I hadn't heard of it before. I'm having a little trouble with the URL to the early draft, and can't seem to get it to open (I get a blank page). Google and Wikipedia seem to link to the same URL. Anyone else having this problem? I'll check a different computer when I go home.
SICP is really worth reading. I am "only" at the middle of the 2nd chapter but it is a solid material. I try to take 20 minutes before i start my work every day to read it.
You can find SICP in other languages than Scheme.
I don't have read through one of them but if you are interested...
Last but not least, you can follow the path of Eli Bendersky to complete SICP... Or just read his conclusion to gain enough motivation to start it!
Pollux,
Thanks for the recommendation and the links. I'm glad you mentioned the approach of taking 20 minutes a day to work through a book. I've used that method to get through several programming books, and I find that those 20 minute sessions really add up over time.
Hi,
check this also:
Foundations of Computer Science (Al Aho and Jeff Ullman)
http://infolab.stanford.edu/~ullman/focs.html
Ala'a [cmo-0],
Thanks for the link. I think it's almost time to post another list of free books. I just found some good PDFs at the Numerical Recipes web site. They're older versions of the books, but much of the content is still relevant (particularly the C book, since C syntax seems like it will never go away).
hi bill
could u recommend be a good begginer book on algorithms? our college is followin CLRS but i am finding it very dense.
Hi sam,
My two favorite beginner-level algorithm books are Algorithms in a Nutshell and Skiena's The Algorithm Design Manual. If you're a Java programmer, you might also like Sedgewick & Wayne's Algorithm's 4th edition. It has a really great companion Web site, and the authors are currently using it to teach a free algorithms course on Coursera.
I'd like to suggest having a look on this book also since it takes different approach.
Introduction to the Design and Analysis of Algorithms
http://www.amazon.com/Introduction-Design-Analysis-Algorithms-2nd/dp/0321358287/ref=sr_1_28?s=books&ie=UTF8&qid=1350798619&sr=1-28&keywords=Algorithms
Dive into html 5 is available for free. I'm most of the way through it and finding it a good fast read.
http://diveintohtml5.info/
I am self taught student who likes to read books cover to cover and now I am realizing purchasing CLRS was a very bad choice for me.
Its very hard for beginners to understand without any help, too advance and I don't think I will be able to ever finish this book
Varun,
I can't say I blame you. I really like that book, but I had a professor available to answer questions the first time I was introduced to it. It is a hard read if it's your first exposure to that material. I'd still keep it around as a reference, though. You may want to check out a more accessible introductory book, like *Algorithms in a Nutshell*.
McAfee antivirus allows the user to prevent the devices and the data from the viruses, which affect the same. The official page to purchase the McAfee software is mcafee.com/activate, from where you can select the McAfee product best suitable for your device.
You can secure your devices and data if you have McAfee in your devices. To enable the security for your devices, download, install and perform McAfee activate to your devices.
Post a Comment