The Books Collection represents the second-largest content category in the Free Programming Books repository, with a combined importance score of 888.42. This collection provides curated access to thousands of freely available programming books organized through two complementary systems: categorization by programming language (books/free-programming-books-langs.md) and categorization by subject area (books/free-programming-books-subjects.md). The collection spans 40+ language editions, making it the most comprehensive multilingual programming book directory maintained by the repository.
For information about online courses, see Course Collections. For supplementary learning materials including cheat sheets and interactive tutorials, see Supplementary Educational Resources.
Sources: README.md74-126 books/free-programming-books-langs.md1-6 books/free-programming-books-subjects.md1-5
The Books Collection employs a sophisticated dual-index system that allows users to locate resources through two orthogonal access patterns: technology-specific navigation and topic-based discovery.
Diagram: Books Collection Organizational Structure
This architecture enables two distinct user workflows: (1) developers seeking books about a specific programming language or framework navigate through books/free-programming-books-langs.md while (2) developers interested in language-agnostic concepts like algorithms or design patterns use books/free-programming-books-subjects.md The cross-reference system between these files prevents duplication while maintaining comprehensive coverage.
Sources: books/free-programming-books-langs.md1-234 books/free-programming-books-subjects.md7-57 README.md74-126
The books/free-programming-books-langs.md file implements a hierarchical categorization scheme with 200+ top-level programming language sections and nested framework subsections for major language ecosystems.
Diagram: Language Index Navigation Structure in free-programming-books-langs.md
The index implementation uses standard Markdown anchor syntax (<FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Language" undefined file-path="Language">Hii</FileRef>) to enable rapid navigation within the file. Each language section begins with a level-3 heading (###) followed by an alphabetically-sorted list of book resources. Framework subsections are nested as level-4 headings (####) under their parent language.
Sources: books/free-programming-books-langs.md8-233
The following table shows the primary language sections and their associated framework subsections:
| Language | Framework Subsections | Line Range |
|---|---|---|
| C | N/A (monolithic) | 440-484 |
| C# | N/A (monolithic) | 486-516 |
| C++ | N/A (monolithic) | 518-564 |
| Java | Codename One, Java Reporting, Spring, Spring Boot, Spring Data, Spring Security, Wicket | 87-94 (index) |
| JavaScript | AngularJS, Backbone.js, Booty5.js, D3.js, Dojo, Electron, Ember.js, Express.js, Fastify, Hydrogen, Ionic, jQuery, Meteor, Next.js, Node.js, Nuxt.js, Om, React, React Native, Redux, Svelte, Vue.js | 95-118 (index) |
| Python | Django, FastAPI, Flask, Kivy, Numpy, Pandas, PyOpenCl, Pyramid, Tornado | 171-180 (index) |
| PHP | CakePHP, CodeIgniter, Drupal, Laravel, Symfony, Yii, Zend | 157-164 (index) |
| Ruby | RSpec, Ruby on Rails, Sinatra | 189-192 (index) |
| Scala | Lift, Play Scala | 195-197 (index) |
| TypeScript | Angular, Deno | 218-220 (index) |
Table: Major Language Ecosystems with Framework Subsections
Sources: books/free-programming-books-langs.md31-233
At line 122, the language index includes a special entry directing users to the subject-based organization:
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Language Agnostic" undefined file-path="Language Agnostic">Hii</FileRef>
This link appears within the alphabetical language index, indicating that general programming topics not tied to a specific language are maintained in the separate subject file. This prevents duplication and establishes clear boundaries between the two organizational systems.
Sources: books/free-programming-books-langs.md122
The books/free-programming-books-subjects.md file organizes programming books by conceptual topics that transcend specific programming languages. This file's introduction explicitly states its relationship to the language-based organization:
"This list, organized by subject, is for books that cover a programming-related subject in a programming-language agnostic way. Books that cover a specific programming language can be found in the BY PROGRAMMING LANGUAGE list."
Sources: books/free-programming-books-subjects.md1-5
Diagram: Subject-Based Organization Hierarchy
The subject index spans lines 7-57 and includes 50+ distinct categories. Each category leads to a section containing curated book listings relevant to that topic.
Sources: books/free-programming-books-subjects.md7-57
The subject organization includes several major conceptual domains:
Foundational Computer Science:
Artificial Intelligence and Data:
Systems and Infrastructure:
Software Engineering Practices:
Specialized Domains:
Sources: books/free-programming-books-subjects.md7-57 books/free-programming-books-subjects.md95-142 books/free-programming-books-subjects.md144-378
The "0 - Meta-Lists" section (lines 60-92) serves as a curated directory of external book collections and aggregators. This includes:
Sources: books/free-programming-books-subjects.md60-92
The Books Collection extends across 40+ language editions, each maintained as a separate markdown file following the naming convention free-programming-books-{language_code}.md.
Diagram: Multilingual Edition Hierarchy
Sources: README.md80-126
The following table catalogs all multilingual book editions as referenced in README.md80-126:
| Language | File Name | ISO Code | Notes |
|---|---|---|---|
| Arabic | free-programming-books-ar.md | ar | RTL language |
| Armenian | free-programming-books-hy.md | hy | |
| Azerbaijani | free-programming-books-az.md | az | |
| Bengali | free-programming-books-bn.md | bn | South Asian |
| Bulgarian | free-programming-books-bg.md | bg | |
| Burmese | free-programming-books-my.md | my | Southeast Asian |
| Catalan | free-programming-books-ca.md | ca | |
| Chinese | free-programming-books-zh.md | zh | Importance: 47.31 |
| Czech | free-programming-books-cs.md | cs | |
| Danish | free-programming-books-da.md | da | |
| Dutch | free-programming-books-nl.md | nl | |
| Estonian | free-programming-books-et.md | et | |
| Finnish | free-programming-books-fi.md | fi | |
| French | free-programming-books-fr.md | fr | |
| German | free-programming-books-de.md | de | |
| Greek | free-programming-books-el.md | el | |
| Hebrew | free-programming-books-he.md | he | RTL language |
| Hindi | free-programming-books-hi.md | hi | Importance: 19.13 |
| Hungarian | free-programming-books-hu.md | hu | |
| Indonesian | free-programming-books-id.md | id | Importance: 66.66 |
| Italian | free-programming-books-it.md | it | |
| Japanese | free-programming-books-ja.md | ja | Importance: 39.51 |
| Korean | free-programming-books-ko.md | ko | |
| Latvian | free-programming-books-lv.md | lv | |
| Malayalam | free-programming-books-ml.md | ml | South Asian |
| Norwegian | free-programming-books-no.md | no | |
| Persian (Farsi) | free-programming-books-fa_IR.md | fa_IR | RTL language |
| Polish | free-programming-books-pl.md | pl | |
| Portuguese (Brazil) | free-programming-books-pt_BR.md | pt_BR | Importance: 99.53 |
| Portuguese (Portugal) | free-programming-books-pt_PT.md | pt_PT | |
| Romanian | free-programming-books-ro.md | ro | |
| Russian | free-programming-books-ru.md | ru | Importance: 43.85 |
| Serbian | free-programming-books-sr.md | sr | |
| Slovak | free-programming-books-sk.md | sk | |
| Slovenian | free-programming-books-sl.md | sl | |
| Spanish | free-programming-books-es.md | es | |
| Swedish | free-programming-books-sv.md | sv | |
| Tamil | free-programming-books-ta.md | ta | South Asian |
| Telugu | free-programming-books-te.md | te | South Asian |
| Thai | free-programming-books-th.md | th | |
| Turkish | free-programming-books-tr.md | tr | |
| Ukrainian | free-programming-books-uk.md | uk | |
| Urdu | free-programming-books-ur.md | ur | RTL language |
| Vietnamese | free-programming-books-vi.md | vi |
Table: Complete Multilingual Book Edition Catalog
Sources: README.md82-125
Each book entry in the collection follows a standardized markdown format that includes metadata indicators for format, licensing, and status.
Book entries follow this pattern:
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Book Title" undefined file-path="Book Title">Hii</FileRef> - Author Name <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/(Additional Formats)" undefined file-path="(Additional Formats)">Hii</FileRef>) (Metadata Tags)
Common metadata tags include:
(PDF) - PDF format available(HTML) - HTML version available(EPUB) - EPUB ebook format(Kindle) - Kindle format available(CC BY-NC-SA) - Creative Commons license type*( :construction: in process)* - Book under active development*( :card_file_box: archived)* - Archived/historical resource*(email address *requested*, not required)* - Registration optional(Packt account *required*) - Account required for accessFrom books/free-programming-books-langs.md:
C Language entries (lines 442-484):
* [Beej's Guide to C Programming](https://beej.us/guide/bgc/) - Brian "Beej Jorgensen" Hall (HTML, PDF) (CC BY-NC-ND)
* [C Notes for Professionals](https://goalkicker.com/CBook) - Compiled from StackOverflow Documentation (PDF)
* [Modern C](https://gustedt.gitlabpages.inria.fr/modern-c/) - Jens Gustedt (PDF) (CC BY-NC-ND)
Python entries (lines 171-180 index references):
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Python" undefined file-path="Python">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Django" undefined file-path="Django">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Flask" undefined file-path="Flask">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Pandas" undefined file-path="Pandas">Hii</FileRef>
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/FastAPI" undefined file-path="FastAPI">Hii</FileRef>
Sources: books/free-programming-books-langs.md442-484
The collection includes books in multiple digital formats to accommodate different reading preferences and devices:
| Format | Description | Common Usage |
|---|---|---|
| HTML | Web-based reading | Primary online format, searchable |
| Portable Document Format | Download and offline reading | |
| EPUB | E-reader format | E-ink devices, mobile readers |
| Kindle | Amazon proprietary | Kindle devices and apps |
| Markdown | Plain text markup | GitHub reading, local processing |
| AsciiDoc | Documentation format | Technical documentation |
| LaTeX | Typesetting source | Academic/mathematical content |
Table: Available Book Formats
Sources: books/free-programming-books-langs.md244-484
The Books Collection integrates with other repository components through cross-references and complementary resource types.
Diagram: Books Collection Integration and User Workflow
Sources: README.md70-126
The Books Collection serves as the foundational reference material that complements other resource types:
Sources: README.md70-222
Diagram: Books Directory File Structure
All book-related files are contained within the books/ directory at the repository root. The English editions (free-programming-books-langs.md and free-programming-books-subjects.md) serve as the canonical references, while language-specific editions are named with ISO language codes appended to the base filename.
Sources: README.md74-126
Book entries are maintained through community contributions following the repository's standardized workflow. Contributors add new book resources by:
The automated validation system checks:
check-urls workflow (see Quality Assurance and Automation)fpb-lint workflowSources: README.md43-58
The Books Collection originated from the repository's initial purpose. As stated in README.md23-27:
"This list was originally a clone of StackOverflow - List of Freely Available Programming Books with contributions from Karan Bhangui and George Stocker."
The collection has evolved from a single list into a sophisticated dual-index system spanning 40+ languages, maintained by thousands of contributors through the Free Ebook Foundation.
Sources: README.md23-40
Refresh this wiki