Project Based Learning
A list of programming tutorials in which learners build an application from scratch. These tutorials are divided into different primary programming languages. Some have intermixed 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
- Elixir
- Erlang
- Go
- Haskell
- HTML/CSS
- Java
- JavaScript
- Kotlin
- Lua
- OCaml
- PHP
- Python
- R
- Ruby
- Rust
- Swift
- Additional resources
C/C++:
- Build an Interpreter (Chapter 14 on is written in C)
- Write a Shell in C
- Write a FUSE Filesystem
- Build Your Own Text Editor
- Build Your Own Lisp
- How to Program an NES Game in C
- Write an OS from scratch
- How to create an OS from scratch
- How to Write an Emulator (CHIP-8 interpreter)
- Beginning Game Programming with C++ and SDL
- Implementing a Key-Value Store
- Writing a minimal x86-64 JIT compiler in C++
- Build a Live Code-reloader Library for C++
- Write a hash table in C
- Let's Build a Simple Database
- Let's Write a Kernel
- Write a Bootloader in C
- Linux Container in 500 Lines of Code
- Write a C compiler
- Implementing a Language with LLVM
- Meta Crush Saga: a C++17 compile-time game
- High-Performance Matrix Multiplication
- Space Invaders from Scratch
- Tetris Tutorial in C++ Platform Independent
- Writing a Linux Debugger
Network programming
-
Let's Code a TCP/IP Stack
-
Programming concurrent servers
OpenGL:
- Creating 2D Breakout game clone in C++ with OpenGL
- Handmade Hero
- How to Make Minecraft in C++/OpenGL (video)
C#:
- Learn C# By Building a Simple RPG Game
- Create a Rogue-like game in C#
- Create a Blank App with C# and Xamarin (work in progress)
- Build iOS Photo Library App with Xamarin and Visual Studio
- Building the CoreWiki This is a Wiki-style content management system that has been completely written in C# with ASP.NET Core and Razor Pages. You can find the source code here.
Clojure:
- Build a Twitter Bot with Clojure
- Bulding a Spell-Checker
- Building a JIRA integration with Clojure & Atlassian Connect
Elixir
Erlang
- ChatBus : build your first multi-user chat room app with Erlang/OTP
- Making a Chat App with Erlang, Rebar, Cowboy and Bullet
Java:
- Build an Interpreter (Chapter 4-13 is written in Java)
- Build a Simple HTTP Server with Java
- Build an Android Flashlight App (video)
- Build a Spring Boot App with User Authentication
JavaScript:
HTML and CSS:
Mobile Application:
Web Applications:
React:
- Create Serverless React.js Apps
- Create a Trello Clone
- Create a Character Voting App with React, Node, MongoDB and SocketIO
- React Tutorial: Cloning Yelp
- Build a Full Stack Movie Voting App with Test-First Development using Mocha, React, Redux and Immutable
- Build a Twitter Stream with React and Node
- Build a Serverless MERN Story App with Webtask.io
- Build A Simple Medium Clone using React.js and Node.js
- Integrate MailChimp in JS
- Build A Chrome Extension with React + Parcel
- Build A ToDo App With React Native
- Make a Chat Application
- Create a News App with React Native
- Learn Webpack For React
- Testing React App With Pupepeteer and Jest
- Build Your Own React Boilerplate
- Code The Game Of Life With React
- A Basic React+Redux Introductory Tutorial
- Build an Appointment Scheduler
- Build A Chat App with Sentiment Analysis
- Build A Full Stack Web Application Setup
Angular:
- Build an Instagram Clone with Angular 1.x
- Build an offline-capable Hacker News client with Angular 2+
- Build a Google+ clone with Django and AngularJS (Angular 1.x)
- Build A Beautiful Real World App with Angular 6 :
- Build Responsive layout with BootStrap 4 and Angular 6
- ToDo App with Angular 5
Node:
- Build A Simple Website With Node,Express and MongoDB
- Build a real-time Markdown Editor with NodeJS
- Test-Driven Development with Node, Postgres and Knex
- Write a Twitter Bot in Node.js
- Create A Simple RESTFUL Web App
- Build A Simple Search Bot in 30 minutes
- Build A Job Scraping Web App
Vue
- Vue 2 + Firebase: How to build a Vue app with Firebase authentication system in 15 minutes
- Vue.js Application Tutorial – Creating a Simple Budgeting App with Vue
- Build a Blog with Vue, GraphQL and Apollo
- Build a full stack web application using MEVN (MongoDB, Express, Vue, Node) stack
- Vue.js To-Do List Tutorial (video)
Others (Hapi, Express...):
- Build a Progressive Web Application (PWA)
- Build A Support Ticket Application With AdonisJs
- Build A Native Desktop App with JS
- Build a Powerful API with NodeJs,GraphQL and Hapi
D3.js
Game Development:
- Make 2D Breakout Game using Phaser
- Make Flappy Bird in HTML5 and JavaScript with Phaser
Desktop Application:
- Build a Music Player with React & Electron
- (Build A Desktop Chat App with React and Electron)[https://medium.freecodecamp.org/build-a-desktop-chat-app-with-react-electron-and-chatkit-744d168e6f2f]
Miscellaneous:
- How to Build a Web Framework in Less Than 20 Lines of Code
- Build Yourself a Redux
- How to write your own Virtual DOM
- Build A Realtime Serverless GraphQL API with WebSockets on AWS
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:
- Mining Twitter Data with Python
- Scrape a Website with Scrapy and MongoDB
- How To Scrape With Python and Selenium WebDriver
- Which Movie Should I Watch using BeautifulSoup
Web Applications:
- Build a Microblog with Flask
- Create a Blog Web App In Django
- Choose Your Own Adventure Presentations
- Build a Todo List with Flask and RethinkDB
- Build a Todo List with Django and Test-Driven Development
- Build a RESTful Microservice in Python
- Microservices with Docker, Flask, and React
- Build A Simple Web App With Flask
- Build a RESTful API with Flask – The TDD Way
- Create A Django API in under 20 minutes
Bots:
- Build a Reddit Bot
- How to Make a Reddit Bot - YouTube (video)
- Build a Facebook Messenger Bot
- Making a Reddit + Facebook Messenger Bot
- How To Create a Telegram Bot Using Python
- Create a Twitter Bot In Python
Data Science:
- Learn Python For Data Science by Doing Several Projects (video):
Machine Learning:
- Write Linear Regression From Scratch in Python (video)
- Step-By-Step Machine Learning In Python
- Predict Quality Of Wine
- Solving A Fruits Classification Problem
- Learn Unsupervised Learning with Python
- Build Your Own Neural Net from Scratch in Python
- Linear Regression in Python without sklearn
- Multivariate Linear Regression without sklearn
- Music Recommender using KNN
OpenCV:
- Build A Document Scanner
- Build A Face Detector using OpenCV and Deep Learning
- Build a Face Recognition System using OpenCV, Python and Deep Learning
- Detect The Salient Features in an Image
- Build A Barcode Scanner
- Learn Face Clustering with Python
- Object Tracking with Camshift
- Semantic Segmentation with OpenCV and Deep Learning
- Text Detection in Images and Videos
- People Counter using OpenCV
- Tracking Multiple Objects with OpenCV
- Neural Style Transfer with OpenCV
- OpenCV OCR and Text Recognition
- Text Skew Correction Tutorial
- Facial Landmark Detection Tutorial
- Object Detection using Mask-R-CNN
- Automatic Target Detection Tutorial
- EigenFaces using OpenCV
- Faster(5-point) Facial Landmark Detection Tutorial
- Hand Keypoint Detection
Deep Learning:
- Using Convolutional Neural Nets to Detect Facial Keypoints
- Generate an Average Face using Python and OpenCV
- Break A Captcha System using CNNs
- Use pre-trained Inception model to provide image predictions
- Create your first CNN
- Build A Facial Recognition Pipeline
- Build An Image Caption Generator
- Make your Own Face Recognition System
- Train a Language Detection AI in 20 minutes
- Object Detection With Neural Networks
- Learn Twitter Sentiment Analysis -
- 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 Tfdif vectors
- Part X - Neural Nets with word2vec/doc2vec
- Part XI - CNN with Word2Vec
- Use Transfer Learning for custom image classification
- Learn to Code a simple Neural Network in 11 lines of Python
- Build a Neural Network using Gradient Descent Approach
- Train a Keras Model To Generate Colors
- Get Started with Keras on a Custom Dataset
- Use EigenFaces and FisherFaces on Faces94 dataset
- Kaggle MNIST Digit Recognizer Tutorial
- Fashion MNIST tutorial with tf.keras
- CNN using Keras to automatically classify root health
- Keras vs Tensorflow
Miscellaneous:
- Build a Simple Interpreter
- Build a Simple Blockchain in Python
- Write a NoSQL Database in Python
- Building a Gas Pump Scanner with OpenCV/Python/iOS
- Build a Distributed Streaming System with Python and Kafka
- Writing a basic x86-64 JIT compiler from scratch in stock Python
- Making a low level (Linux) debugger
- Implementing a Search Engine
- Build the Game of Life
- Create terminal ASCII art
Go:
- Create a Real Time Chat App with Golang, Angular 2, and WebSocket
- Building Go Web Applications and Microservices Using Gin
- How to Use Godog for Behavior-driven Development in Go et started with Godog
- Building Blockchain in Go
- Build Web Application with GoLang
- Building a container from scratch in Go - Liz Rice (Microscaling Systems)
PHP:
- How To Build A Blog With Laravel (video)
- Make Your Own Blog (in Pure PHP)
- Build A Real Estate Website Example with SilverStripe
- Building Realtime Chat App with Laravel 5.4 and VueJS (video)
- Build A Social Network: Laravel 5 - Youtube (video)
- Build a full-featured multi-tenant app with Laravel
OCaml:
Ruby:
Ruby on Rails:
- The Ruby on Rails Tutorial
- Build Instagram From Scratch with Ruby on Rails
- Build a CMS with Ruby on Rails
- Build a Social Network using Rails
Haskell:
- Write You a Haskell - Build a modern functional compiler
- Write Yourself a Scheme in 48 hours
- Write You A Scheme, Version 2
- Roll Your Own IRC Bot
- Let's Build A Basic Compiler in Haskell
- Making Movie Monad
- Making a Website with Haskell (outdated)
R:
Rust:
- A Simple Web App in Rust
- Write an OS in pure Rust
- Build a browser engine in Rust
- Write a Microservice in Rust
- Learning Rust with Too Many Linked Lists
- Rust in Detail: Writing Scalable Chat Service from Scratch