practical-tutorials
project-based-learning
Python

Curated list of project-based tutorials

Last updated Jul 8, 2026
272.5k
Stars
35.2k
Forks
283
Issues
+431
Stars/day
Attention Score
100
Language breakdown
Python 100.0%
Files click to expand
README

Project Based Learning

Gitter Link rot sweep

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++:

- 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:

##

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

🔗 More in this category

© 2026 GitRepoTrend · practical-tutorials/project-based-learning · Updated daily from GitHub