A curated list for projects building from scratch.
Thanks to this thread in HN.
-
Compilers and Interpreters
- Build You Own Lisp, Mr Daniel Holden
- Crafting Interpreters, Bob Nystrom
- A Retargetable C Compiler: Design and Implementation, David R. Hanson
- Compiler Construction Using Java, JavaCC, and Yacc, Anthony J. Dos Reis
- Writing An Interpreter In Go, Thorsten Ball
- Write Yourself a Scheme in 48 Hours
- Let's Build a Compiler, Jack Crenshaw
- Modern Compiler Implementation, Andrew Appel
- Exploring Programming Language Architecture in Perl, Bill Hails
- compiler construction and Scheme books, Nils M Holm
- The Art of the Metaobject Protocol, Daniel G. Bobrow and Gregor Kiczales
- Writing Compilers and Interpreters: A Software Engineering Approach, Ronald Mak
- Building an Optimizing Compiler, Bob Morgan
- Implementing Lisp in Python, Michael Fogus
- Let’s Build A Simple Interpreter, Ruslan Spivak
-
Distributed Systems
- Distributed Systems for System Architects, Paulo Veríssimo and Luís Rodrigues
-
Electronics
-
Games and graphics
- Realistic Ray Tracing, Peter Shirley
- Creating Interactive Fiction with Inform 7, Aaron A. Reed
- Handmade Hero, Casey Muratori
- Build Your Own Flight Sim in C++: Programming a 3d Flight Simulator Using Oop, Michael Radtke
- Flights of Fantasy: Programming 3d Video Games in C++/Book and Disk, Christopher Lampton
- Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization, André LaMothe
- Radiosity: A Programmer's Perspective, Ian Ashdown
- Game Scripting Mastery, Alex Varanese
- Developing Games With Ruby, Tomas Varaneckas
- How to Make an RPG, Daniel Schuller
- Programming an RTS Game with Direct3D, Carl Granberg
- How to Make a Game Like Candy Crush, Ray Wenderlich
- 3D Game Engine Architecture: Engineering Real-Time Applications with Wild Magic, David H. Eberly
-
Mobile Apps
- Learning Swift Building Apps for OS X and iOS, Paris Buttfield-Addison, Jon Manning, Tim Nugent
-
Networking
- Unix Network Programming, Volume 1: The Sockets Networking API, W. Richard Stevens
- Let’s Build A Web Server, Ruslan Spivak
-
Reverse Engineering
- Hacking the Xbox, Andrew 'bunnie' Huang
-
Systems and utilities
- Code: The Hidden Language of Computer Hardware and Software, Charles Petzold
- The Elements of Computing Systems, Noam Nisan and Shimon Schocken
- Linux From Scratch
- Peter Norton's Assembly Language Book for the IBM PC, Peter Norton
- gitlet, Mary Rose Cook
- Redo implementation in Haskell, Chris Forno
- The Unix Programming Environment, Brian W. Kernighan
- Programming from the Ground Up, Jonathan Bartlett
- Operating Systems Design and Implementation (3rd Edition), Andrew S. Tanenbaum
- Type and Learn C++, Martin L. Rinehart
- The Craft of Text Editing, Craig A. Finseth
- Linux Application Development, Michael K. Johnson and Erik W. Troan
-
Web
- Ruby on Rails Tutorial, Michael Hartl
- Web Development with Go, Jonathan Calhoun
- Flask Web Development, Miguel Grinberg
- Test-Driven Development with Python, Harry J.W. Percival
- Django Unleashed, Andrew Pinkham
- Eloquent Javascript, Marijn Haverbeke
- Webapps in Go, Suraj Patil
- Programming Phoenix Productive |> Reliable |> Fast, Chris McCord, Bruce Tate, and José Valim
- F# Applied, Tamizhvendan S
- Build Your Own AngularJS, Tero Parviainen
- Rebuilding Rails, Noah Gibbs
- Elixir in Action, Saša Jurić
- SurviveJS - Webpack, Juho Vepsäläinen
- Ember 2 Tutorial, Zoltan
- Erlang and OTP in Action, Martin Logan, Eric Merritt, and Richard Carlsson
- Learn to Code HTML & CSS, Shay Howe
- Robin Wieruch, Robin Wieruch
- Learning Flask Framework, Matt Copperwaite, Charles Leifer
- MEAN Web Development, Amos Q. Haviv
- Django's official tutorial, Django Software Foundation
- Discover Meteor, Tom Coleman and Sacha Greif
- Professional Java for Web Applications, Nicholas S. Williams
- Serverless Single Page Apps, Ben Rady
- PHP and MySQL by Example, Ellie Quigley and Marko Gargenta
- Flexible Rails, Peter Armstrong
- Tango with Django, Leif Azzopardi
- Learning Flex 4: Getting Up to Speed with Rich Internet Application Design and Development, Alaric Cole and Elijah Robison
- Bandit Algorithms for Website Optimization: Developing, Deploying, and Debugging, John Myles White
-
Mics
- Practical Common Lisp, Peter Seibel
- The Art of Monitoring, James Turnbull
- The Little Schemer, Daniel P. Friedman and Matthias Felleisen
- The Reasoned Schemer, Daniel P. Friedman, William E. Byrd and Oleg Kiselyov
- Nim in Action, Dominik Picheta
- C++ Design Patterns and Derivatives Pricing, M. S. Joshi
- Take Off With Elixir, Rob Conery
- Big Nerd Ranch books
- Automate the boring stuff, Al Sweigart
- Think Stats 2e, Allen B. Downey
- The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan and Peter J. Weinberger
Database and Cryptographics
Pull requests and Issues are welcomed!
MIT