mirror of
https://github.com/practical-tutorials/project-based-learning
synced 2024-11-27 14:11:49 +00:00
239 lines
13 KiB
Markdown
239 lines
13 KiB
Markdown
# 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 intermix technologies and languages.
|
|
|
|
To get started, simply fork this repo. Please refer to [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines.
|
|
|
|
## Table of Contents:
|
|
|
|
* [C/C++](#cc)
|
|
* [C#](#c)
|
|
* [Clojure](#clojure)
|
|
* [Elixir](#elixir)
|
|
* [Java](#java)
|
|
* [JavaScript](#javascript)
|
|
* [Kotlin](#kotlin)
|
|
* [Python](#python)
|
|
* [Go](#go)
|
|
* [Ruby](#ruby)
|
|
* [Haskell](#haskell)
|
|
* [PHP](#php)
|
|
* [OCaml](#ocaml)
|
|
* [R](#r)
|
|
* [Rust](#rust)
|
|
* [Swift](#swift)
|
|
* [Additional resources](#additional-resources)
|
|
|
|
## C/C++:
|
|
|
|
* [Write a Shell in C](https://brennan.io/2015/01/16/write-a-shell-in-c/)
|
|
* [Build Your Own Text Editor](http://viewsourcecode.org/snaptoken/kilo/)
|
|
* [Build Your Own Lisp](http://www.buildyourownlisp.com/)
|
|
* [How to Program an NES Game in C](https://nesdoug.com/)
|
|
* [Write an OS from scratch](https://github.com/tuhdo/os01)
|
|
* [How to Make Minecraft in C++/OpenGL](https://www.youtube.com/playlist?list=PLMZ_9w2XRxiZq1vfw1lrpCMRDufe2MKV_)
|
|
* [How to Write an Emulator (CHIP-8 interpreter)](http://www.multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/)
|
|
* [Beginning Game Programming with C++ and SDL](http://lazyfoo.net/tutorials/SDL/)
|
|
* [Implementing a Key-Value Store](http://codecapsule.com/2012/11/07/ikvs-implementing-a-key-value-store-table-of-contents/)
|
|
* Let's Code a TCP/IP Stack
|
|
* [Part 1: Ethernet & ARP](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/)
|
|
* [Part 2: IPv4 & ICMPv4](http://www.saminiir.com/lets-code-tcp-ip-stack-2-ipv4-icmpv4/)
|
|
* [Part 3: TCP Basics & Handshake](http://www.saminiir.com/lets-code-tcp-ip-stack-3-tcp-handshake/)
|
|
* [Part 4: TCP Data Flow & Socket API](http://www.saminiir.com/lets-code-tcp-ip-stack-4-tcp-data-flow-socket-api/)
|
|
* [Part 5: TCP Retransmission](http://www.saminiir.com/lets-code-tcp-ip-stack-5-tcp-retransmission/)
|
|
* [Build a Live Code-reloader Library for C++](http://howistart.org/posts/cpp/1/index.html)
|
|
* [Write a hash table in C](https://github.com/jamesroutley/write-a-hash-table)
|
|
* [Let's Build a Simple Database](https://cstack.github.io/db_tutorial/)
|
|
* [Let's Write a Kernel](http://arjunsreedharan.org/post/82710718100/kernel-101-lets-write-a-kernel)
|
|
* [Write a Bootloader in C](http://3zanders.co.uk/2017/10/13/writing-a-bootloader/)
|
|
* [Implementing a Language with LLVM](https://llvm.org/docs/tutorial/#kaleidoscope-implementing-a-language-with-llvm)
|
|
|
|
## C#:
|
|
|
|
* [Learn C# By Building a Simple RPG Game](http://scottlilly.com/learn-c-by-building-a-simple-rpg-index/)
|
|
* [Create a Rogue-like game in C#](https://roguesharp.wordpress.com/)
|
|
* [Create a Blank App with C# and Xamarin (work in progress)](https://www.intertech.com/Blog/xamarin-tutorial-part-1-create-a-blank-app/)
|
|
* [Build iOS Photo Library App with Xamarin and Visual Studio](https://www.raywenderlich.com/134049/building-ios-apps-with-xamarin-and-visual-studio)
|
|
|
|
## Clojure:
|
|
|
|
* [Build a Twitter Bot with Clojure](http://howistart.org/posts/clojure/1/index.html)
|
|
|
|
## Elixir
|
|
|
|
* [Building a Simple Chat App With Elixir and Phoenix](https://sheharyar.me/blog/simple-chat-phoenix-elixir/)
|
|
|
|
## Java:
|
|
|
|
* [Build a Simple HTTP Server with Java](http://javarevisited.blogspot.com/2015/06/how-to-create-http-server-in-java-serversocket-example.html)
|
|
* [Build an Android Flashlight App](https://www.youtube.com/watch?v=dhWL4DC7Krs)
|
|
* [Build a Spring Boot App with User Authentication](https://scotch.io/tutorials/build-a-spring-boot-app-with-user-authentication)
|
|
|
|
## JavaScript:
|
|
|
|
* [Build 30 things in 30 days with 30 tutorials](https://javascript30.com)
|
|
|
|
### Mobile Application:
|
|
|
|
* [Build a React Native Todo Application](https://egghead.io/courses/build-a-react-native-todo-application)
|
|
|
|
### Web Applications:
|
|
|
|
#### React:
|
|
|
|
* [Create Serverless React.js Apps](http://serverless-stack.com/)
|
|
* [Create a Trello Clone](http://codeloveandboards.com/blog/2016/01/04/trello-tribute-with-phoenix-and-react-pt-1/)
|
|
* [Create a Character Voting App with React, Node, MongoDB and SocketIO](http://sahatyalkabov.com/create-a-character-voting-app-using-react-nodejs-mongodb-and-socketio/)
|
|
* [React Tutorial: Cloning Yelp](https://www.fullstackreact.com/articles/react-tutorial-cloning-yelp/)
|
|
* [Build a Full Stack Movie Voting App with Test-First Development using Mocha, React, Redux and Immutable](https://teropa.info/blog/2015/09/10/full-stack-redux-tutorial.html)
|
|
* [Build a Twitter Stream with React and Node](https://scotch.io/tutorials/build-a-real-time-twitter-stream-with-node-and-react-js)
|
|
* Build a Serverless MERN Story App with Webtask.io
|
|
* [Part 1](https://scotch.io/tutorials/build-a-serverless-mern-story-app-with-webtask-io-zero-to-deploy-1)
|
|
* [Part 2](https://scotch.io/tutorials/build-a-serverless-mern-story-app-with-webtask-io-zero-to-deploy-2)
|
|
|
|
#### Angular:
|
|
|
|
* [Build an Instagram Clone](https://hackhands.com/building-instagram-clone-angularjs-satellizer-nodejs-mongodb/)
|
|
* Build an offline-capable Hacker News client with Angular 2+
|
|
* [Part 1](https://houssein.me/angular2-hacker-news)
|
|
* [Part 2](https://houssein.me/progressive-angular-applications)
|
|
* [Build a web application with Django and AngularJS](https://thinkster.io/django-angularjs-tutorial)
|
|
|
|
#### Others (Node, Hapi, Express...):
|
|
|
|
* [Build a URL Shortener with Node, MongoDB and Hapi.js](https://www.codetuts.tech/build-a-url-shortener-node-hapi-js/?utm_source=mybridge&utm_medium=blog&utm_campaign=read_more)
|
|
* [Build a real-time Markdown Editor with NodeJS](https://scotch.io/tutorials/building-a-real-time-markdown-viewer)
|
|
* [Test-Driven Development with Node, Postgres and Knex](http://mherman.org/blog/2016/04/28/test-driven-development-with-node/)
|
|
* Build a Progressive Web Application (PWA)
|
|
* [Part 1](https://bitsofco.de/bitsofcode-pwa-part-1-offline-first-with-service-worker/)
|
|
* [Part 2](https://bitsofco.de/bitsofcode-pwa-part-2-instant-loading-with-indexeddb/)
|
|
* [Part 3](https://bitsofco.de/bitsofcode-pwa-part-3-push-notifications/)
|
|
* Build A Support Ticket Application With AdonisJs
|
|
* [Part 1](https://scotch.io/tutorials/build-a-support-ticket-application-with-adonisjs)
|
|
* [Part 2](https://scotch.io/tutorials/build-a-support-ticket-application-with-adonisjs-part-2)
|
|
|
|
### Game Development:
|
|
|
|
* [Make 2D Breakout Game using Phaser](https://developer.mozilla.org/en-US/docs/Games/Tutorials/2D_breakout_game_Phaser)
|
|
* Make Flappy Bird in HTML5 and JavaScript with Phaser
|
|
* [Part 1](http://www.lessmilk.com/tutorial/flappy-bird-phaser-1)
|
|
* [Part 2](http://www.lessmilk.com/tutorial/flappy-bird-phaser-2)
|
|
|
|
### Desktop Application:
|
|
|
|
* Build a Music Player with React & Electron
|
|
* [Part 1](https://scotch.io/tutorials/build-a-music-player-with-react-electron-i-setup-basic-concepts)
|
|
* [Part 2](https://scotch.io/tutorials/build-a-music-player-with-react-electron-ii-making-the-ui)
|
|
* [Part 3](https://scotch.io/tutorials/build-a-music-player-with-react-electron-iii-bringing-it-all-together)
|
|
|
|
### Miscellaneous:
|
|
|
|
* [How to Build a Web Framework in Less Than 20 Lines of Code](https://www.pubnub.com/blog/build-yourself-a-web-framework-in-less-than-20-lines-of-code/)
|
|
* [Build Yourself a Redux](https://zapier.com/engineering/how-to-build-redux/)
|
|
|
|
## Kotlin:
|
|
|
|
* [Keddit - Learn Kotlin While Developing an Android Application](https://medium.com/@juanchosaravia/learn-kotlin-while-developing-an-android-app-introduction-567e21ff9664)
|
|
|
|
## Python:
|
|
|
|
### Web Scraping:
|
|
|
|
* [Mining Twitter Data with Python](https://marcobonzanini.com/2015/03/02/mining-twitter-data-with-python-part-1/)
|
|
* [Scrape a Website with Scrapy and MongoDB](https://realpython.com/blog/python/web-scraping-with-scrapy-and-mongodb/)
|
|
|
|
### Web Applications:
|
|
|
|
* [Build a Microblog with Flask](https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world)
|
|
* [Create a blog webapp in Django](https://tutorial.djangogirls.org/en/)
|
|
* [Choose Your Own Adventure Presentations](https://www.twilio.com/blog/2015/03/choose-your-own-adventures-presentations-wizard-mode-part-1-of-3.html)
|
|
* [Build a Todo List with Flask and RethinkDB](https://realpython.com/blog/python/rethink-flask-a-simple-todo-list-powered-by-flask-and-rethinkdb/)
|
|
* [Build a Todo List with Django and Test-Driven Development](http://www.obeythetestinggoat.com/)
|
|
* [Build a RESTful Microservice in Python](http://www.skybert.net/python/developing-a-restful-micro-service-in-python/)
|
|
* [Microservices with Docker, Flask, and React](https://testdriven.io/)
|
|
|
|
### Bots:
|
|
|
|
* [Build a Reddit Bot](http://pythonforengineers.com/build-a-reddit-bot-part-1/)
|
|
* [How to Make a Reddit Bot - YouTube](https://www.youtube.com/watch?v=krTUf7BpTc0)
|
|
* [Build a Facebook Messenger Bot](https://blog.hartleybrody.com/fb-messenger-bot/)
|
|
* [Making a Reddit + Facebook Messenger Bot](https://pythontips.com/2017/04/13/making-a-reddit-facebook-messenger-bot/)
|
|
* How To Create a Telegram Bot Using Python
|
|
* [Part 1](https://khashtamov.com/en/how-to-create-a-telegram-bot-using-python/)
|
|
* [Part 2](https://khashtamov.com/en/how-to-deploy-telegram-bot-django/)
|
|
|
|
### Miscellaneous:
|
|
|
|
* [Build a Simple Interpreter](https://ruslanspivak.com/lsbasi-part1/)
|
|
* [Write a NoSQL Database in Python](https://jeffknupp.com/blog/2014/09/01/what-is-a-nosql-database-learn-by-writing-one-in-python/)
|
|
* [Building a Gas Pump Scanner with OpenCV/Python/iOS](https://hackernoon.com/building-a-gas-pump-scanner-with-opencv-python-ios-116fe6c9ae8b)
|
|
* [Build a Distributed Streaming System with Python and Kafka](https://scotch.io/tutorials/build-a-distributed-streaming-system-with-apache-kafka-and-python)
|
|
* [Using Convolutional Neural Nets to Detect Facial Keypoints](http://danielnouri.org/notes/2014/12/17/using-convolutional-neural-nets-to-detect-facial-keypoints-tutorial/)
|
|
* [Generate an Average Face using Python and OpenCV](https://www.learnopencv.com/average-face-opencv-c-python-tutorial/)
|
|
|
|
## Go:
|
|
|
|
* [Create a Real Time Chat App with Golang, Angular 2, and WebSocket](https://www.thepolyglotdeveloper.com/2016/12/create-real-time-chat-app-golang-angular-2-websockets/)
|
|
* [Building Go Web Applications and Microservices Using Gin](https://semaphoreci.com/community/tutorials/building-go-web-applications-and-microservices-using-gin)
|
|
* [How to Use Godog for Behavior-driven Development in Go et started with Godog](https://semaphoreci.com/community/tutorials/how-to-use-godog-for-behavior-driven-development-in-go)
|
|
|
|
## PHP:
|
|
|
|
* [How To Build A Blog With Laravel](https://www.youtube.com/playlist?list=PLwAKR305CRO-Q90J---jXVzbOd4CDRbVx)
|
|
* [Make Your Own Blog (in Pure PHP)](http://ilovephp.jondh.me.uk/en/tutorial/make-your-own-blog)
|
|
* [Build A Real Estate Website Example with SilverStripe](https://www.silverstripe.org/learn/lessons/)
|
|
* [Building Realtime Chat App with Laravel 5.4 and VueJS](https://www.youtube.com/playlist?list=PLXsbBbd36_uVjOFH_P25__XAyGsohXWlv)
|
|
* [Build A Social Network: Laravel 5 - Youtube](https://www.youtube.com/playlist?list=PLfdtiltiRHWGGxaR6uFtwZnnbcXqyq8JD)
|
|
|
|
## OCaml:
|
|
|
|
* [Implement a Language with LLVM in OCaml](https://llvm.org/docs/tutorial/#kaleidoscope-implementing-a-language-with-llvm-in-objective-caml)
|
|
|
|
## Ruby:
|
|
|
|
* [Build a Network Stack with Ruby](https://medium.com/geckoboard-under-the-hood/how-to-build-a-network-stack-in-ruby-f73aeb1b661b)
|
|
|
|
### Ruby on Rails:
|
|
|
|
* [Build Instagram From Scratch with Ruby on Rails](https://www.dropbox.com/s/9vq430e9s3q7pu8/Let%27s%20Build%20Instagram%20with%20Ruby%20on%20Rails%20-%20Free%20Edition.pdf?dl=0)
|
|
* [Build a CMS with Ruby on Rails](https://pchm.co/posts/tutorial-how-to-build-a-cms-in-ruby-on-rails)
|
|
* [Build a Social Network using Rails](https://medium.com/rails-ember-beyond/how-to-build-a-social-network-using-rails-eb31da569233)
|
|
|
|
## Haskell:
|
|
|
|
* [Write You a Haskell - Build a modern functional compiler](http://dev.stephendiehl.com/fun/)
|
|
* [Write Yourself a Scheme in 48 hours](https://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours)
|
|
* [Write You A Scheme, Version 2](https://github.com/write-you-a-scheme-v2/scheme)
|
|
* [Roll Your Own IRC Bot](https://wiki.haskell.org/Roll_your_own_IRC_bot)
|
|
* [Let's Build A Basic Compiler in Haskell](http://alephnullplex.github.io/cradle/)
|
|
* [Making Movie Monad](https://lettier.github.io/posts/2016-08-15-making-movie-monad.html)
|
|
* [Making a Website with Haskell **(outdated)**](http://adit.io/posts/2013-04-15-making-a-website-with-haskell.html)
|
|
|
|
## R:
|
|
|
|
* [Build Web Apps with Shiny](http://shiny.rstudio.com/tutorial/)
|
|
|
|
## Rust:
|
|
|
|
* A Simple Web App in Rust
|
|
* [Part 1](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-1/)
|
|
* [Part 2a](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-2a/)
|
|
* [Part 2b](http://joelmccracken.github.io/entries/a-simple-web-app-in-rust-pt-2b/)
|
|
* [Write an OS in Rust](http://os.phil-opp.com/)
|
|
* [Build a browser engine in Rust](https://limpet.net/mbrubeck/2014/08/08/toy-layout-engine-1.html)
|
|
|
|
## Swift:
|
|
|
|
* [Hacking with Swift - Learn Swift by doing 39 projects](https://www.hackingwithswift.com/read)
|
|
|
|
## Additional Resources
|
|
|
|
* [React Redux Links](https://github.com/markerikson/react-redux-links)
|
|
* [Full Stack Python](https://www.fullstackpython.com/)
|
|
* [Node School](https://nodeschool.io/)
|
|
* [ScotchIO](https://scotch.io/)
|
|
* [Exercism](http://www.exercism.io/)
|
|
* [Egghead.io](http://www.egghead.io/)
|
|
* [Michael Herman's Blog](http://mherman.org/)
|
|
* [Thinkster.io](http://thinkster.io)
|
|
* [Goodheads](http://goodheads.io)
|