New to Programming? Check out these Outstanding Open Source Programming Books

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.

Introduction to Computing: Explorations in Language, Logic, and Machines

Introduction to Computing: Explorations in Language, Logic, and Machines

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.

Structure and Interpretation of Computer Programs

Structure and Interpretation of Computer Programs

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.

Building Skills in Object-Oriented Design

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.

Foundations of Programming

Foundations of Programming

By Karl Seguin (79 pages)

This short book is a compilation of posts focusing on helping programmers help themselves.

Chapters cover:

  • Domain driven design
  • Persistence
  • Dependency injection
  • Unit Testing
  • Object Relational Mappers
  • Back to Basics: Memory
  • Back to Basics: Exceptions
  • Back to Basics: Proxy This and Proxy That
Producing Open Source Software: 2nd Edition

Producing Open Source Software: 2nd Edition

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:

  • General advice on starting a project: Choose a Good Name, Have a Clear Mission Statement, Make it clear the Project is Free, Scope the Project
  • Technical Infrastructure such as Mailing Lists, Version Control, Bug tracking, Web site
  • Social and Political Infrastructure
  • How to bring funding into a free software environment
  • The art of good communications
  • Packaging, Releasing and Daily Development
  • Managing Volunteers
  • Licenses, Copyrights and Patents
The Architecture of Open Source Applications

The Architecture of Open Source Applications

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.

The Architecture of Open Source Applications, Volume II

The Architecture of Open Source Applications, Volume II

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.

Advanced Linux Programming

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:

  • Develop Linux software that works the way users expect it to
  • Write more sophisticated programs with features such as multiprocessing, multi-threading, interprocess communication, and interaction with hardware devices
  • Improve programs by making them run faster, more reliably, and more securely
  • Understand the peculiarities of a Linux system, including its limitations, special capabilities, and conventions

License Information

Book License
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

 

3 Comments

Leave a Reply