Computer programming offers a fascinating career path. It’s full of challenges, a great way of collaborating, teaches you how to think, and most importantly offers a way to improve your life. Become more productive, efficient, and effective in life by learning the discipline of coding.
Anyone wanting to become a programmer needs a kick-start. There are so many questions to contemplate. What’s the best way of building a solid programming foundation? What’s the best way to learn? Should I read one of the ‘Teach yourself [insert programming language] in 24 hours’?
This is a compilation of useful free programming books. And free is in the sense of respecting freedom and community, as all of the books are released under an open source license. You are therefore free to copy, distribute, study, and display these books to your heart’s content.
The last book featured in this roundup is not intended for newcomers to programming. But once you have digested the first 7 books, I suggest you give it a read.
By David Evans (266 pages)
This book introduces the most important fundamental ideas in computing using the Scheme and Python programming languages. This book is probably the best starting place for any budding programmer.
The authors concentrate on describing information processes by defining procedures, how to analyze the costs required to carry out a procedure, and the fundamental limits of what can and cannot be computed mechanically.
By Harold Abelson and Gerald Jay Sussman with Julie Sussman (688 pages)
This is a textbook which teaches the principles of computing programming. It is a classic text in computer science, a definite must read.
The book focuses on the main role played by different approaches to dealing with time in computational models.
The material in this book has been the basis of MIT’s entry-level computer science subject since 1980. The authors use the programming language Lisp to educate the reader.
By Steven F. Lott (285 pages)
This book teaches how to move from object-orientated programming to object-oriented design through a series of design exercises. Build applications step-by-step with real-world sophistication. The code examples focus on the Python programming language. It uses casino table games (Roulette, Craps and Blackjack) as its context.
The purpose of this book is to build skills in object-oriented design prior to a project with fixed cost and deadline.
By Karl Seguin (79 pages)
This short book is a compilation of posts focusing on helping programmers help themselves.
By Karl Fogel (232 pages)
Producing Open Source Software is a expertly written and highly readable book about the human side of open source development. It describes how successful projects operate, the expectations of users and developers, and the culture of free software. The 2nd edition was published this month and brings the text bang up to date.
Topics covered include:
Edited by Amy Brown, Greg Wilson (432 pages)
This book describes the architecture of 25 open source applications written by their respective authors. It explains how their software are structured, how parts interact, why it’s built that way, and what lessons have been learned that can be applied to other big design problems.
Some of the open source applications referenced are Asterisk, Audacity, Eclipse, LLVM, Sendmail, and VTK.
Edited by Amy Brown, Greg Wilson (390 pages)
This is the second volume of The Architecture of Open Source Applications. The authors of twenty-four open source applications explain how their software is structured, and why. What are each program’s major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to this book provide unique insights into how they think.
The open source applications include Firefox Release Engineering, GDB, Git, GNU Mailman, Moodle, nginx, and ZeroMQ.
By Mark Mitchell, Jeffrey Oldham, and Alex Samuel, of CodeSourcery LLC (269 pages)
This book takes a tutorial approach, introducing the most important programming concepts and techniques, and providing examples of how to use them. Unlike the other books in this roundup, this title is not intended for beginners, and readers are expected to be competent with the C programming language and C library functions.
This book is helpful if you want to:
|Introduction to Computing||Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License|
|Structure and Interpretation of Computer Programs||Creative Commons Attribution ShareAlike 4.0 License|
|Building Skills on Object-Oriented Design||Creative Commons License.Attribution-NonCommercial-NoDerivs 2.0 Generic License|
|Foundations of Programming||Creative Commons Attribution-NonCommercial-Share-Alike3.0 Unported License|
|Producing Open Source Software||Creative Commons Attribution-ShareAlike 4.0 International License|
|The Architecture of Open Source Applications||Creative Commons Attribution 3.0 Unported License|
|The Architecture of Open Source Applications, Volume II||Creative Commons Attribution 3.0 Unported License|
|Advanced Linux Programming||Open Publication License|