practical-tutorials/project-based-learning 封面
GitHub 热门
beginner-projectcppgolang

practical-tutorials/project-based-learning

Curated list of project-based tutorials

28.8万语言:Python来源:GitHub收录于 2026年10月27日

站内导读

中文 这是一个按编程语言分类的实战教程清单,收录从零构建应用的教程,覆盖 C/C++、Go、Python、Rust 等二十余种语言。它解决的是学习者找不到完整项目练习的问题,每条链接指向一个可动手实现的课题,如写解释器、Shell、数据库、Redis 与操作系统。仓库通过 GitHub Actions 定期扫描失效链接,适合想脱离语法练习、积累项目经验的开发者。

README · 详细文档

来源 · 查看原文

Project Based Learning

0 1

A list of programming tutorials in which aspiring software developers learn how to build an application from scratch. These tutorials are divided into different primary programming languages. Tutorials may involve multiple technologies and languages.

To get started, simply fork this repo. Please refer to CONTRIBUTING.md for contribution guidelines.

Table of Contents:

  • C#
  • C/C++
  • Clojure
  • Dart
  • Elixir
  • Erlang
  • F#
  • Go
  • Haskell
  • HTML/CSS
  • Java
  • JavaScript
  • Kotlin
  • Lua
  • OCaml
  • PHP
  • Python
  • R
  • Ruby
  • Rust
  • Scala
  • Swift
  • Additional resources

C/C++:

- Tiny Renderer or how OpenGL works: software rendering in 500 lines of code - Understandable RayTracing in 256 lines of bare C++ - KABOOM! in 180 lines of bare C++ - 486 lines of C++: old-school FPS in a weekend

  • Writing a minimal x86-64 JIT compiler in C++

- Part 1 - Part 2

- Part 1: Integers, Lexing and Code Generation - Part 2: Unary Operators - Part 3: Binary Operators - Part 4: Even More Binary Operators - Part 5: Local Variables - Part 6: Conditionals - Part 7: Compound Statements - Part 8: Loops - Part 9: Functions - Part 10: Global Variables

- Part 1 - Part 2 - Part 3 - Part 4 - Part 5

- Part 1: Setup - Part 2: Breakpoints - Part 3: Registers and memory - Part 4: Elves and dwarves - Part 5: Source and signals - Part 6: Source-level stepping - Part 7: Source-level breakpoints - Part 8: Stack unwinding - Part 9: Handling variables - Part 10: Advanced topics

  • Let's write a compiler

- Part 1: Introduction, selecting a language, and doing some planning - Part 2: A lexer - Part 3: A parser - Part 4: Testing - Part 5: A code generator - Part 6: Input and output - Part 7: Arrays - Part 8: Strings, forward references, and conclusion

Network programming

  • Let's Code a TCP/IP Stack

- Part 1: Ethernet & ARP - Part 2: IPv4 & ICMPv4 - Part 3: TCP Basics & Handshake - Part 4: TCP Data Flow & Socket API - Part 5: TCP Retransmission

  • Programming concurrent servers

- Part 1 - Introduction - Part 2 - Threads - Part 3 - Event-driven - Part 4 - libuv - Part 5 - Redis case study - Part 6 - Callbacks, Promises and async/await

  • MQTT Broker from scratch

- Part 1 - The protocol - Part 2 - Networking - Part 3 - Server - Part 4 - Data structures - Part 5 - Topic abstraction - Part 6 - Handlers - Bonus - Multithreading

OpenGL:

  • Creating 2D Breakout game clone in C++ with OpenGL

- Breakout - Setting up - Rendering Sprites - Levels - Collisions - Ball - Collision detection - Collision resolution - Particles - Postprocessing - Powerups - Audio - Render text - Final thoughts

C#:

Clojure:

Dart:

Flutter:

Elixir

Erlang

F#:

Java:

JavaScript:

HTML and CSS:

Mobile Application:

Web Applications:

React:

- Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6 - Part 7

Next.js:
Angular:

- Part 1 - Part 2

- Part I - Part II

- Introduction to Angular - Part 1

Node:

- Part 1 - Part 2

- Part 1 - Part 2

Vue

- Part 1 - Part 2

Others (Hapi, Express...):
  • Build a Progressive Web Application (PWA)

- Part 1 - Part 2 - Part 3

- Part I

D3.js

Game Development:

- Part 1 - Part 2

Desktop Application:

Miscellaneous:

Kotlin:

Lua:

LÖVE:

  • BYTEPATH: Creation of a Complete Game with Lua and LÖVE

- Part 0: Introduction - Part 1: Game Loop - Part 2: Libraries - Part 3: Rooms and Areas - Part 4: Exercises - Part 5: Game Basics - Part 6: Player Basics - Part 7: Player Stats and Attacks - Part 8: Enemies - Part 9: Director and Gameplay Loop - Part 10: Coding Practices - Part 11: Passives - Part 12: More Passives - Part 13: Skill Tree - Part 14: Console - Part 15: Final

Python:

Web Scraping:

Web Applications:

- Part 1 - Part 2

  • Realtime Chat application with Vue, django-notifs, RabbitMQ and uWSGI

- Part 1 - Part 2 - Part 3 - Part 4 - Part 5 - Part 6

Bots:

- Part 1 - Part 2

Data Science:

  • Learn Python For Data Science by Doing Several Projects (video):

- Part 1: Introduction - Part 2: Twitter Sentiment Analysis - Part 3: Recommendation Systems - Part 4: Predicting Stock Prices - Part 5: Deep Dream in TensorFlow - Part 6: Genetic Algorithms

Machine Learning:

- Using BOW, TFIDF and Xgboost - Using Word2Vec and Xgboost

OpenCV:

- Single Object Tracker - Multiple Object Tracker

Deep Learning:

- Part I - Data Cleaning - Part II - EDA, Data Visualisation - Part III - Zipf's Law, Data Visualisation - Part IV - Feature Extraction(count vectoriser) - Part V - Feature Extraction(Tfidf vectoriser) - Part VI - Doc2Vec - Part VII - Phrase Modeling + Doc2Vec - Part VIII - Dimensionality Reduction - Part IX - Neural Nets with TF-IDF vectors - Part X - Neural Nets with word2vec/doc2vec - Part XI - CNN with Word2Vec

Miscellaneous:

- Part 1 - Part 2: C

  • Implementing a Search Engine

- Part 1 - Part 2 - Part 3

Go:

- Part 1: Basic Prototype - Part 2: Proof of Work - Part 3: Persistence and CLI - Part 4: Transactions 1 - Part 5: Address - Part 6: Transactions 2 - Part 7: Network

- Part 1: Initial Setup - Part 2: Simple Communication - Part 3: Designing our Frontend - Part 4: Handling Multiple Clients - Part 5: Improving the Frontend - Part 6: Dockerizing your Backend

- Part 1 - standard library - Part 2 - using a router package - Part 3 - using a web framework - Part 4 - using OpenAPI and Swagger - Part 5 - middleware - Part 6 - authentication - Part 7 - GraphQL

  • Let's build a URL shortener in Go - with Gin & Redis

- Part 1 - Project setup - Part 2 - Storage Layer - Part 3 - Short Link Generator - Part 4 - Forwarding

PHP:

- Part 0: Introduction - Part 1: Setup - Part 2: Roles and Permissions - Part 3: Invitation - Part 4: Authentication - Part 5: Testing - Part 6: User Profile - Part 7: Deployment

OCaml:

Ruby:

- Part 0: Introduction - Part 1: Barebones TCP Server - Part 2: PING <-> PONG - Part 3: Concurrent Clients - Part 4: ECHO

Ruby on Rails:

Haskell:

R:

Rust:

  • A Simple Web App in Rust

- Part 1 - Part 2a - Part 2b

- Part 1: Implementing WebSocket. Introduction. - Part 2: Sending and Receiving Messages

- Part 1 - Part 2 - Part 3 - Part 4

Scala:

Swift:

Additional Resources

同类项目 · GitHub 热门