Overview
Relevant source files
- README.md
- books/free-programming-books-langs.md
- books/free-programming-books-subjects.md
- casts/free-podcasts-screencasts-es.md
- casts/free-podcasts-screencasts-my.md
- courses/free-courses-en.md
- courses/free-courses-hi.md
- courses/free-courses-my.md
- more/free-programming-cheatsheets.md
- more/free-programming-interactive-tutorials-en.md
- more/free-programming-playgrounds.md
The Free Programming Books repository is a community-curated catalog of free programming educational resources organized by resource type, programming language, and natural language. Maintained by the Ebook Foundation, it functions as a federated content aggregation system that indexes links to external educational platforms rather than hosting content directly.
Mission and Core Function
The repository serves as a discovery layer connecting learners to free educational content across:
- MOOC providers (Coursera, edX, Udacity, MIT OCW, freeCodeCamp)
- Video platforms (YouTube playlists and channels)
- Documentation sites and online books
- Interactive coding environments and playgrounds
- Problem sets and competitive programming platforms
- Podcasts and screencasts
Repository Scale and Metrics
Resource Type Distribution (by importance score):
Content Coverage:
- 100+ programming languages and frameworks indexed
- 40+ computer science subject categories
- 50+ natural language editions
- 2000+ markdown files maintained
- 10,000+ external resource links
Major Language Communities (by total importance):
- English: ~1900 (courses 936.01 + books 615.38 + 366.71)
- Hindi: ~460 (courses 440.56 dominant, books 19.09)
- Portuguese (Brazil): ~227 (courses 126.04 + books 101.25)
- Indonesian: ~179 (courses 112.65 + books 66.61)
- Bengali: ~160 (courses 116.37 + books 43.85)
- Korean: ~89 (books 64.58 + courses 24.28)
Sources: README.md1-40 courses/free-courses-en.md1-150 courses/free-courses-hi.md1-77 books/free-programming-books-langs.md1-10
Repository Structure
Directory Organization:
Key File Purposes:
| Directory | Primary Files | Function | Pages |
|---|---|---|---|
books/ | free-programming-books-langs.mdfree-programming-books-subjects.md | Dual-indexed book catalog | See [3.1], [3.2] |
courses/ | free-courses-en.mdfree-courses-hi.mdfree-courses-*.md | Video course collections | See [2], [2.1-2.6] |
more/ | free-programming-cheatsheets.mdfree-programming-interactive-tutorials-en.mdfree-programming-playgrounds.mdproblem-sets-competitive-programming.md | Hands-on practice resources | See [4], [4.1-4.4] |
casts/ | free-podcasts-screencasts-{ISO}.md | Audio/video media | See [4.5] |
docs/ | CONTRIBUTING.mdCODE_OF_CONDUCT.mdHOWTO.md | Community guidelines | See [6] |
.github/workflows/ | fpb-lint.ymlcheck-urls.ymlrtl-ltr-linter.ymlcomment-pr.yml | Quality assurance automation | See [5] |
Sources: README.md1-236 courses/free-courses-en.md1-121 courses/free-courses-hi.md1-77 books/free-programming-books-langs.md1-10 more/free-programming-cheatsheets.md1-50
Dual Organization System for Books
The books collection implements a two-axis indexing strategy to support different learning approaches:
Books Organization Architecture:
Organizational Comparison:
| Approach | File | Organization Principle | Use Case | Example Entry |
|---|---|---|---|---|
| By Language | free-programming-books-langs.md | Programming language → Framework/library → Resources | "I know I want to learn React" | ### JavaScript → #### React → book links |
| By Subject | free-programming-books-subjects.md | Computer science topic → Resources (any language) | "I want to understand machine learning" | ### Machine Learning → books in Python, R, Julia |
Navigation Paths:
- Language-specific: books/free-programming-books-langs.md1-10 → Search for language → Find framework subsections
- Topic-based: books/free-programming-books-subjects.md1-58 → Browse index → Navigate to subject section
This dual organization creates cross-referencing opportunities: a Python machine learning book may appear in both free-programming-books-langs.md under ### Python → #### Machine Learning libraries and in free-programming-books-subjects.md under ### Machine Learning.
Sources: books/free-programming-books-langs.md1-520 books/free-programming-books-subjects.md1-142 README.md76-78
Course Organization by Technology
Courses are organized hierarchically by technology domain, with free-courses-en.md serving as the primary template that other language editions often mirror.
Course Index Architecture (free-courses-en.md):
Technology Coverage Patterns:
| Category | Line Range | Subsection Depth | Example Technologies |
|---|---|---|---|
| Languages | Throughout | 2-3 levels | C (374-390), Python (95-100), JavaScript (55-74) with React, Angular, Vue |
| Cloud Platforms | 449-496 | 2 levels | Cloud Computing → AWS, Azure, GCP, IBM |
| DevOps Tools | 36-115 | 2 levels | DevOps → Ansible, Chef, Jenkins, Docker, Kubernetes |
| Web Frameworks | Scattered | 1-2 levels | Django (96), Flask (98), Spring Boot (90), Ruby on Rails (104) |
| Specializations | Throughout | 1 level | AI (8-286), Blockchain (14-371), Security (107), Game Development (45) |
Hierarchical Structure Pattern:
### Programming Language
#### Framework 1
#### Framework 2
#### Library/Tool
Example from courses/free-courses-en.md95-100:
### Python
#### Django
#### FastAPI
#### Flask
#### Jupyter
Sources: courses/free-courses-en.md1-500 courses/free-courses-hi.md79-290
File Naming Conventions and Multilingual Support
ISO Language Code Mapping
The repository uses ISO 639-1 language codes with regional variants to organize multilingual content:
File Naming Pattern: {resource-type}-{ISO-code}.md or {resource-type}-{ISO-code}_{REGION}.md
Diagram: Language Code to Filename Mapping
Standard Markdown Structure
Each resource file follows a consistent internal structure:
Diagram: Resource File Internal Structure
Entry Format Standards:
| Element | Pattern | Example |
|---|---|---|
| Basic Link | * [Title](URL) | * [Learn Python](https://example.com) |
| With Author | * [Title](URL) - Author | * [Python Crash Course](https://example.com) - Eric Matthes |
| With Platform | * [Title](URL) - Instructor (Platform) | * [CS50 Python](https://cs50.harvard.edu) - David Malan (Harvard) |
| With Format | * [Title](URL) (Format) | * [Python Guide](https://example.com) (PDF) |
| Section Anchors | <a id="{id}"></a> or ### {Title} | <a id="python"></a>, ### Python |
Sources: README.md80-169 courses/free-courses-en.md1-121 courses/free-courses-hi.md1-77 books/free-programming-books-te.md1-21 courses/free-courses-my.md1-20
External Platform Integration
The repository functions as a federation layer connecting learners to content on external platforms. It does not host content directly.
Platform Categories and Link Patterns
Diagram: External Platform Integration Architecture
Resource Type to Platform Mapping
| Resource Type | Primary Platforms | Link Pattern Examples |
|---|---|---|
| Books | PDF hosts, GitHub repos, documentation sites | https://github.com/{user}/{repo}, https://{domain}/book.pdf |
| Courses | Coursera, edX, YouTube, Udacity, MIT OCW | https://www.coursera.org/learn/{course-id}, https://youtube.com/playlist?list={id} |
| Cheat Sheets | GitHub Gists, PDF hosts, quick reference sites | https://github.com/{user}/{repo}/cheatsheet.pdf |
| Interactive Tutorials | Codecademy, freeCodeCamp, interactive docs | https://www.codecademy.com/learn/{language}, https://www.freecodecamp.org/learn |
| Playgrounds | Replit, CodePen, JSFiddle, language-specific REPLs | https://repl.it/, https://codepen.io/, https://play.golang.org |
| Problem Sets | LeetCode, HackerRank, Codeforces, Project Euler | https://leetcode.com/, https://www.hackerrank.com/domains/algorithms |
| Podcasts | Podcast hosts, YouTube channels, Spotify | https://anchor.fm/{podcast-id}, https://youtube.com/@{channel} |
Content Type Distribution
English Courses Platform Breakdown (free-courses-en.md):
| Section | Lines | Primary Platforms Referenced |
|---|---|---|
| MOOC aggregators | 123-146 | Coursera, edX, Udacity, freeCodeCamp, MIT OCW, Khan Academy |
| Algorithms | 148-203 | MIT OCW, Princeton, Stanford, YouTube (Abdul Bari, freeCodeCamp) |
| Android | 211-243 | Udacity, YouTube, Google Developers |
| Cloud Computing | 426-471 | AWS, Azure, GCP training platforms, YouTube |
| Machine Learning | Lines 500+ | Coursera, YouTube, Kaggle, DeepLearning.ai |
| Web Development | Lines 600+ | freeCodeCamp, Udemy, YouTube, The Odin Project |
Sources: courses/free-courses-en.md123-878 README.md11-13
Language Coverage and RTL Support
Multilingual Edition Tiers
The repository implements a tiered language coverage strategy based on content availability and community contribution:
Tier 1 Languages (40+ topics each):
- English (
-en.md) - Importance: 852.64 for courses - Hindi (
-hi.md) - Importance: 446.80 for courses - Portuguese (Brazil) (
-pt_BR.md) - Spanish (
-es.md)
Tier 2 Languages (20-40 topics):
- Indonesian (
-id.md), Korean (-ko.md), Chinese (-zh.md), Russian (-ru.md) - German (
-de.md), French (-fr.md), Italian (-it.md), Japanese (-ja.md)
Tier 3 Languages (10-20 topics):
- Bengali (
-bn.md), Tamil (-ta.md), Telugu (-te.md), Malayalam (-ml.md) - Vietnamese (
-vi.md), Persian (-fa_IR.md), Arabic (-ar.md), Turkish (-tr.md)
Tier 4 Languages (<10 topics):
- Polish (
-pl.md), Hebrew (-he.md), Estonian (-et.md), Thai (-th.md) - Burmese (
-my.md), Sinhala (-si.md), and others
Right-to-Left (RTL) Language Handling
Diagram: RTL Validation Pipeline
RTL Languages with Dedicated Validation:
Sources: README.md82-123 README.md131-168 courses/free-courses-hi.md1-77 books/free-programming-books-te.md1-21 casts/free-podcasts-screencasts-my.md1-9
Searching and Discovering Resources
Users can find resources in several ways:
-
Search Website: The repository provides a dedicated search website at https://ebookfoundation.github.io/free-programming-books-search/ where users can search for books or authors.
-
Directory Navigation: Users can browse through the repository's directory structure based on resource type and language.
-
GitHub Search: Users can utilize GitHub's search functionality to find specific resources within the repository.
-
Table of Contents: Each file begins with a table of contents that links to various categories.
Sources: README.md11-21
Community Aspects
The repository is maintained by the Free Ebook Foundation and a community of contributors. It operates under a Code of Conduct adapted from the Contributor Covenant and encourages contributions from everyone, especially newcomers to open source.
The project welcomes contributions in the form of:
- Adding new resources
- Fixing broken links
- Translating documentation
- Improving organization
Sources: README.md43-68
Repository Growth and Impact
The Free Programming Books repository has grown significantly since its inception:
- Originally started as a clone of a StackOverflow list
- Now one of GitHub's most popular repositories
- Contains thousands of free resources across multiple categories
- Supports 40+ natural languages
- Maintained by a community of contributors
Sources: README.md24-40
Refresh this wiki
On this page
- Overview
- Mission and Core Function
- Repository Scale and Metrics
- Repository Structure
- Dual Organization System for Books
- Course Organization by Technology
- File Naming Conventions and Multilingual Support
- ISO Language Code Mapping
- Standard Markdown Structure
- External Platform Integration
- Platform Categories and Link Patterns
- Resource Type to Platform Mapping
- Content Type Distribution
- Language Coverage and RTL Support
- Multilingual Edition Tiers
- Right-to-Left (RTL) Language Handling
- Searching and Discovering Resources
- Community Aspects
- Repository Growth and Impact
