项目介绍

Project Based Learning 是 GitHub 上最受欢迎的编程学习资源之一,收录了大量基于项目的编程教程。这些教程引导开发者从零开始构建完整的应用程序,通过实际动手来学习编程技能。

"学以致用"是最有效的编程学习方法。与传统的语法讲解不同,项目驱动式学习让你在构建真实可用的软件过程中,自然而然地掌握语言特性、设计模式和工程实践。无论你是编程新手还是想学习新语言的资深开发者,这份列表都能帮助你找到合适的实战教程。

编程语言分类

教程按主要编程语言分类,方便您根据学习目标快速定位:

Python

最丰富的分类之一。涵盖 Web 爬虫、机器学习、Web 框架、聊天机器人、区块链、数据可视化等项目。

JavaScript

从原生 JS 到 React/Vue/Angular 框架项目,包括全栈应用、游戏、浏览器扩展、桌面应用等。

C/C++

构建解释器、内存分配器、Shell、文件系统、文本编辑器、操作系统、NES 游戏等底层项目。

Go

Web 应用、CLI 工具、容器运行时、分布式系统、区块链等适合 Go 语言特性的项目。

Rust

操作系统内核、Web 浏览器引擎、数据库、命令行工具等系统级编程项目。

Java

企业级 Web 应用、Android 开发、游戏、数据结构实现等经典项目教程。

Ruby

Rails Web 应用、API 服务、静态网站生成器、区块链实现等项目教程。

更多语言

还包括 C#、Kotlin、Swift、Haskell、Elixir、Erlang、Scala、PHP、R、Lua、OCaml、Dart、F#、Clojure 等。

主要特点

  • 项目驱动学习 — 每个教程都是完整的项目实战,从零开始构建真实应用,而非零散的代码片段。
  • 覆盖 20+ 编程语言 — 从主流的 Python、JavaScript 到系统级的 Rust、C,几乎涵盖所有常用编程语言。
  • 难度层次丰富 — 从初学者友好的 Todo 应用到高级的操作系统内核开发,适合各水平的开发者。
  • 类型多样 — Web 应用、游戏、CLI 工具、机器人、区块链、编译器、神经网络、操作系统等应有尽有。
  • 完全免费 — 收录的教程绝大多数为免费资源,部分来自知名技术博客和开源社区。
  • 社区持续更新 — 由开源社区活跃维护,不断添加新的高质量项目教程。

热门项目类型

项目类型说明推荐语言
Web 应用全栈 Web 应用开发,包括前端、后端和数据库JavaScript, Python, Ruby, PHP
游戏开发2D/3D 游戏、文字冒险、扫雷、俄罗斯方块等C/C++, Python, JavaScript, C#
命令行工具Shell、文件管理器、系统监控等 CLI 应用Go, Rust, Python, C
聊天机器人Telegram、Discord、Slack 等平台的自动化机器人Python, JavaScript, Go
区块链从零构建简易加密货币和区块链系统Python, JavaScript, Go, Rust
编译器/解释器构建编程语言的词法分析、语法分析和代码生成C/C++, Python, Rust, Haskell
操作系统从零编写操作系统内核、引导加载程序C, Rust, Assembly
机器学习神经网络、图像识别、自然语言处理等 AI 项目Python, R

如何开始学习

步骤说明
1. 选择语言根据你的学习目标选择一门编程语言。新手推荐 Python 或 JavaScript。
2. 选择项目从列表中选择一个感兴趣的项目教程。建议从简单的开始,逐步挑战更复杂的项目。
3. 搭建环境按照教程要求安装开发环境和依赖工具。
4. 跟随实践逐步跟随教程编写代码,不要只是复制粘贴,理解每一步的原理。
5. 扩展改进完成基础教程后,尝试添加新功能或优化代码,将项目变成自己的作品。

克隆仓库以便离线浏览:

# 克隆仓库到本地
git clone https://github.com/practical-tutorials/project-based-learning.git

# 进入目录查看内容
cd project-based-learning
cat README.md

常见问题

完全零基础可以使用这个资源吗?
建议先掌握所选编程语言的基础语法,再开始跟随项目教程。大多数教程假设读者具备基本的编程知识。如果是纯零基础,建议先通过入门课程学习语言基础。
教程是中文的吗?
列表中的大部分教程为英文资源。但不必担心,技术类英文文章通常使用简单的句式,配合代码示例,理解起来并不困难。同时也有少量中文教程被收录。
如何选择适合自己水平的项目?
初学者建议从 Web 应用(如 Todo List、博客)或简单游戏开始。中级开发者可以尝试聊天机器人、API 服务等。高级开发者可以挑战编译器、操作系统、数据库等底层项目。
可以将完成的项目放到简历中吗?
当然可以。但建议在完成基础教程后,对项目进行个性化的扩展和改进,使其成为真正属于你的作品。单纯跟随教程的复刻项目价值有限,有自己独特改进的项目更能展示你的能力。
如何为这个列表贡献新的教程?
Fork 该仓库,参照 CONTRIBUTING.md 指南添加教程链接,确保教程是完整的项目实战教程(而非零散的代码片段),然后提交 Pull Request。

社区议题

以下是该项目当前开放的 Issue(按评论数排序),共 81 条,标题已翻译为中文供参考。

编号 议题标题(中文翻译 / 英文原文) 创建日期 评论
#380 损坏/Dead 链接: 实现 a 搜索 Engine
Broken/Dead Links: Implementing a Search Engine
缺陷适合新手
2022-08-26 32
#310 Looking for maintainers
Looking for maintainers
需要帮助
2021-08-16 31
#282 添加 Flutter 教程
Add Flutter tutorials
增强需要帮助适合新手
2021-02-16 16
#344 Clean up dead or outdated 教程
Clean up dead or outdated tutorials
需要帮助适合新手
2022-01-28 10
#578 All languages and with their projects
All languages and with their projects
2024-06-15 10
#347 损坏 链接 in java 教程
broken link in java tutorial
需要帮助适合新手
2022-02-22 8
#259 添加 dropdowns to the 列表
Add dropdowns to the list
2020-10-02 8
#63 添加 resource type alongside 教程 title.
Add resource type alongside tutorial title.
增强需要帮助适合新手
2018-04-19 7
#610 Programing
Programing
2024-08-17 5
#365 添加 dropdowns to the 列表
Adding dropdowns to the list
2022-07-03 5
#94 Is 添加 an Arduino section aligned with intent of this 教程? (添加 an Arduino section)
Is adding an Arduino section aligned with intent of this tutorial? (add an Arduino section)
增强需要帮助适合新手
2018-07-09 5
#788 损坏 链接: Deep Learning -> "Mask detection using PyTorch Lightning" leads to 404 错误
Broken Link: Deep Learning -> "Mask detection using PyTorch Lightning" leads to 404 error
2026-01-11 4
#620 Addition of New 教程 and Projects Featuring the Latest Tech Stack
Addition of New Tutorials and Projects Featuring the Latest Tech Stack
2024-09-01 4
#143 提案 for better gatekeeping: stick to masterpiece materials
Proposal for better gatekeeping: stick to masterpiece materials
增强问题
2018-11-06 4
#140 Table of content does not match the order of the presented content.
Table of content does not match the order of the presented content.
in progress
2018-11-03 4
#93 Elixir chat 教程 is outdated
Elixir chat tutorial is outdated
增强需要帮助适合新手
2018-07-07 4
#773 Gojo
Gojo
2025-12-07 3
#689 Learn Javascript Easily
Learn Javascript Easily
2025-02-13 3
#624 My learning curve
My learning curve
2024-09-08 3
#494 Feature: WEBSITE
Feature: WEBSITE
2023-12-12 3
#457 Typo in project "构建 A Simple Web App With Flask"
Typo in project "Build A Simple Web App With Flask"
2023-09-23 3
#769 Task - 1
Task - 1
2025-11-18 2
#744 为什么 jupter notebook in Javascript?
why jupter notebook in Javascript?
2025-10-05 2
#733 Ball Balancing Robot(PyCharm)
Ball Balancing Robot(PyCharm)
2025-08-11 2
#710 #PUBG/BGMI Sensitivity & Control Settings Guide
#PUBG/BGMI Sensitivity & Control Settings Guide
2025-04-22 2
#704 Here are so many projects, which 应该 i start with? such as if i 想要 learn C/C++
Here are so many projects, which should i start with? such as if i want learn C/C++
2025-03-23 2
#634 Mini projects
Mini projects
2024-09-30 2
#608 CodeDV
CodeDV
2024-08-11 2
#512 In javascript section, 构建 an App in Pure JS 链接 is not working
In javascript section, Build an App in Pure JS link is not working
2024-01-08 2
#484 Sort projects in order of difficulty
Sort projects in order of difficulty
2023-12-03 2
#475 .
.
2023-11-16 2
#463 链接 is 损坏 #python -> Adventure Presentations
Link is broken #python -> Adventure Presentations
2023-11-01 2
#456 I 想要 to 添加 a new project of mine, how do I do so?
I want to add a new project of mine, how do I do so?
2023-09-14 2
#453 Project todo
Project todo
2023-09-10 2
#360 请 添加 topic for Embedded C/C++ in project based learning
Please add topic for Embedded C/C++ in project based learning
2022-06-04 2
#332 Android 教程
Android Tutorial
增强需要帮助适合新手
2021-09-11 2
#764 https://justoarts.netlify.app/
https://justoarts.netlify.app/
2025-11-13 1
#738 I cant open Write a C compiler
I cant open Write a C compiler
2025-08-22 1
#721 Write a NoSQL 数据库 in Python leads to a wrong website
Write a NoSQL Database in Python leads to a wrong website
2025-06-13 1
#719 React 教程 on cloning Yelp redirects to random spam
React tutorial on cloning Yelp redirects to random spam
2025-05-31 1
#692 更新 on Data Scientist and Data Engineer Tools
Update on Data Scientist and Data Engineer Tools
2025-02-23 1
#683 Dead website 链接 to codewall.co.uk
Dead website link to codewall.co.uk
2025-01-16 1
#681 Python learning
Python learning
2025-01-04 1
#619 Project Based Learning GetHub
Project Based Learning GetHub
2024-09-01 1
#613 Programmer
Programmer
2024-08-25 1
#596 Андроид ios
Андроид ios
2024-07-25 1
#562 Project based learning
Project based learning
2024-05-07 1
#556 Whole things
Whole things
2024-04-24 1
#544 [添加] 添加 a DevOps section which is so essential.
[ADD] Adding a DevOps section which is so essential.
2024-04-14 1
#534 New
New
2024-03-20 1
#532 Practice
Practice
2024-03-17 1
#531 Hello, I 创建 a navigation 页面 for this repository
Hello, I created a navigation page for this repository
2024-03-11 1
#495 y'all got any lisps?
y'all got any lisps?
2023-12-13 1
#489 Graph Adv | Knowledge Graph
Graph Adv | Knowledge Graph
2023-12-11 1
#482 New
New
2023-12-01 1
#470 Tt
Tt
2023-11-04 1
#468 测试
Test
2023-11-02 1
#467 Teste
Teste
2023-11-02 1
#448 Learning Skills
Learning Skills
2023-08-05 1
#440 Python
Python
2023-06-30 1
#438 Loo
Loo
2023-06-29 1
#241 Addition of More Evolutionary/Genetic Algorithms
Addition of More Evolutionary/Genetic Algorithms
2020-07-16 1
#784 损坏 链接: 构建 a Google+ clone with Django and AngularJS (Angular 1.x)
Broken link: Build a Google+ clone with Django and AngularJS (Angular 1.x)
2026-01-08 0
#778 master
master
2025-12-24 0
#777 Bhavesh3288
Bhavesh3288
2025-12-24 0
#768 Issue 2
Issue 2
2025-11-17 0
#767 Issue
Issue
2025-11-17 0
#766 !
!
2025-11-16 0
#761 "构建 a Reddit Bot" 链接 损坏
"Build a Reddit Bot" link broken
2025-11-08 0
#759 Nomas
Nomas
2025-11-02 0
#748 8
8
2025-10-10 0
#743 Camel can be 添加 in languages
Camel can be added in languages
2025-09-13 0
#742 Script SQL para crear esquema de base de datos financiera (Opción A)
Script SQL para crear esquema de base de datos financiera (Opción A)
2025-09-11 0
#735 My problem
My problem
2025-08-13 0
#731 Project learning
Project learning
2025-07-21 1
#730 构建 a Cryptocurrency Bot in R 页面 可以 not be found
Build a Cryptocurrency Bot in R page could not be found
2025-07-17 0
#724 Basic
Basic
2025-06-24 0
#722 Great day
Great day
2025-06-14 0
#720 为什么 enter 创建 a Character Voting App with React, Node, MongoDB and SocketIO in react tutoral give us show a screen ?
Why enter Create a Character Voting App with React, Node, MongoDB and SocketIO in react tutoral give us show a screen ?
2025-06-12 0
#706 缺陷 report
Bug report
2025-03-28 0
#702 . a.. b..
. a.. b..
2025-03-15 0