Project Based Learning 是 GitHub 上最受欢迎的编程学习资源之一,收录了大量基于项目的编程教程。这些教程引导开发者从零开始构建完整的应用程序,通过实际动手来学习编程技能。
"学以致用"是最有效的编程学习方法。与传统的语法讲解不同,项目驱动式学习让你在构建真实可用的软件过程中,自然而然地掌握语言特性、设计模式和工程实践。无论你是编程新手还是想学习新语言的资深开发者,这份列表都能帮助你找到合适的实战教程。
教程按主要编程语言分类,方便您根据学习目标快速定位:
最丰富的分类之一。涵盖 Web 爬虫、机器学习、Web 框架、聊天机器人、区块链、数据可视化等项目。
从原生 JS 到 React/Vue/Angular 框架项目,包括全栈应用、游戏、浏览器扩展、桌面应用等。
构建解释器、内存分配器、Shell、文件系统、文本编辑器、操作系统、NES 游戏等底层项目。
Web 应用、CLI 工具、容器运行时、分布式系统、区块链等适合 Go 语言特性的项目。
操作系统内核、Web 浏览器引擎、数据库、命令行工具等系统级编程项目。
企业级 Web 应用、Android 开发、游戏、数据结构实现等经典项目教程。
Rails Web 应用、API 服务、静态网站生成器、区块链实现等项目教程。
还包括 C#、Kotlin、Swift、Haskell、Elixir、Erlang、Scala、PHP、R、Lua、OCaml、Dart、F#、Clojure 等。
| 项目类型 | 说明 | 推荐语言 |
|---|---|---|
| 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
以下是该项目当前开放的 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 |