I recently finished this phenomenal book called "Building Enterprise JavaScript Applications":
https://www.packtpub.com/web-development/building-enterprise-javascript-applications
Which takes the reader from zero to building a non-trivial production fullstack application with JavaScript. I also recommend "Building Git". The title is self-explanatory:
https://shop.jcoglan.com/building-git/
Other resources:
https://github.com/AlgoryL/Projects-from-Scratch
https://github.com/tuvtran/project-based-learning
It literally started with an explosion in a can, and then progressively enhanced that idea step-by-step: add a lid to the can to capture the energy, add a lever to keep the can lid from flying away, and then attach the lever to a wheel so that it returns the lid to the top of the can for another explosion, add walls to guide the lid, ta-da! Piston.
It goes on like that, adding each piece of the puzzle in a logical way, until you have a mental model of an internal combustion engine. You definitely feel like you could build one from scratch (if you had the metallurgy skill.)
Mastery with SQL has over 150 exercises, ranging from easy to very difficult, where you're primarily working with a single database and trying to answer interesting questions about a business (which months saw the highest revenue, best sales employee, most watched movie, find missing records, etc.).
I spent an enormous amount of time working on the exercises for this course (more than the actual content itself) and people who take the course consistently tell me working through the problems helped them learn SQL more deeply than they've learned anywhere else.
Ben Eater has a series of Youtube videos that explores how computers work, starting from first principles, and in the process you build an 8 bit computer (or a 6502 computer in a different series). He actually sells kits of the parts to build it yourself, or you can buy the parts yourself.
It’s a deep dive into how computers work, but it’s very approachable. He’s an excellent teacher, and the video format works really well for what he’s teaching - it’s hard to imagine this working as well in book form.
Build an 8-bit computer from scratch: https://eater.net/8bit Build a 6502 computer: https://eater.net/6502 Let’s build a video card: https://eater.net/vga
I’ve watched a bunch of these videos in the past few weeks and I’ve learned so much from them. I can’t recommend them enough.
It takes you through implementing some classic AI examples (such as Eliza) and teaches you how to write code in a data-first style through Lisp.
I worked through the whole thing building it in Clojure and learnt loads (not just about AI, but about writing readable code in general). I can't recommend it highly enough!
The Go stuff is really just a means to an end, the real value comes from the practical learnings of how to build a functioning interpreter and compiler (and virtual machine!) for a programming language the author made up called Monkey.
It's not a book full of theory but it lays some nice foundations that might help you understand the theory better :)
My book on WebGL2 (500+ pages) takes you from understanding the rendering pipeline, WebGL2 API, etc. and progressively walks the reader by building a feature-rich 3D graphics engine in WebGL2 (ES6) that includes cameras, lights, shaders, post processing, OBJ models, etc. with a final project of a 3D virtual car showroom.
https://www.amazon.com/Real-Time-Graphics-WebGL-interactive-...
Here's a video of the author (me) interviewing a reader who did all the exercises, in the process going from (his words) below middle management to creating his dream project with his dream business partner https://youtu.be/zfV3yNKp0h8. The process costs nearly nothing in money and creates more time for his family.
Here are written reviews from NYU students and clients who took the project-based class the book is based on http://joshuaspodek.com/this-is-one-of-the-greatest-classes-....
If anyone has questions, I'm happy to answer here or by email. If anyone is interested but cost gets in the way, email me also and I'll try to work something out.
You can buy it or read it free online (thanks again to O'Reilly for allowing us to release it under creative commons):
https://buildingtoolswithgithub.teddyhyde.io/
No prior experience with the languages are required, so it is good for a beginner wanting to dip their toes into that language and/or facet of the API.
Over the course of the book you build a photo sharing application from scratch. Each chapter uses new "feature requests" from a fictional manager as a way to introduce and teach new Elm concepts.
https://www.manning.com/books/elm-in-action?a_aid=elm_in_act...
(It's technically in Early Access because the print book hasn't hit the shelves yet, but all the chapters are finished and available in the online version.)
This book (although an older edition) is largely what got me into programming, and taught me so much about Rails.
* Programming WebAssembly with Rust - https://pragprog.com/book/khrust/programming-webassembly-wit...
This book steps through learning about web assembly, writing it by hand, and then implementing a server for webassembly. I had so many misconceptions about webassembly/wasm before reading this.
How to Make an RPG - Build a retro-style JRPG from scratch
Mazes for Programmers: Code Your Own Twisty Little Passages by Jamis Buck - covers a whole gamut of different maze generation algorithms. This author also has a great book on doing a raytracer step by step.
https://www.amazon.com/Mazes-Programmers-Twisty-Little-Passa...
Rough Cut--Woodworking with Tommy Mac: 12 Step-by-Step Projects - very nice beginning woodworking book.
https://www.amazon.com/Rough-Cut-Woodworking-Tommy-Step-Step...
The Inform (6) Beginner's Guide - introduces the Inform 6 interactive fiction language through three successive text adventure games
- Land of Lisp - http://landoflisp.com/ - watch the video, it's hilarious
- Build Your Own Lisp - http://www.buildyourownlisp.com/ - Learn C by creating a lisp in C
- In the spirit of making your own lisp, I would recommend https://github.com/kanaka/mal - learn any language, by making a lisp in that language
- Elements of Computing Systems (Building a computer from scratch on a hardware simulator): https://www.nand2tetris.org/book
Soon to become a real book published by No Starch Press!
Building Machine Learning Powered Applications walks you through building an ML application end-to-end, from product idea to a (simple) deployed version.
The free first chapter is available here https://mlpowered.com/book/
The github is at https://github.com/hundredblocks/ml-powered-applications
https://www.amazon.com/Code-Language-Computer-Hardware-Softw...
From binary to a full computer
I really like this book because it really takes you through all the steps. However, it's very readable and provides great examples of how to actually implement some of the components.
I also like it because it explains how to use tools like Yacc and Bison, while explaining how they work underneath and the motivation for using such tools.
I leaned on this book heavily in the class where the main assignment was writing our own compiler from scratch in C, and I'm currently using it now to make a compiler in rust for a custom language.
It has several worked examples, including a key/value append-only database, a CPU emulator, an NTP client, a floating point implementation, multiple graphical applications, a binary files inspector and a few others!
It's a 20+ video course where you build a real world SAAS app. We build up 1 big app through out the course.
There's also 30-40+ hours worth of self guided optional assignments to add features into the application based on what you learn in each section. It's all positioned in the form of specifications, similar to how it would be when doing any type of job or contract gig.
Funny enough, many people have contacted me saying they took the course but don't even use Python and Flask. They were just experienced programmers using other web frameworks but wanted to see how the app all comes together so they can use the same patterns in their framework of choice.
Also I love Real World Haskell and Practical Common Lisp
There was a whole series, "A Boy and a Motor", "The Boy's Guide to Gas Engines", etc. How to build your own toys if you have few tools but the skills of a master machinist.
It's a pretty good introduction to embedded programming, with several projects included. Valvano's course at University of Texas is also available as a MOOC.
With this book you a build a business from nothing, and in the process you learn: The mechanics of Balance Sheet, P/L Statement and Cash flow Statement. (My initial motivation was to understand these statements, inorder to have a better understanding of the companies I want to invest in)
I’m writing one right now on building a mini trading bot platform.
It would be great to hear what you like/dislike in these types of books.
I don’t have any marketing website up at the moment but I created this mailing list if you’re interested in following the developments http://bit.ly/tradingbotplatformbook
(Link redirects to https://cdn.forms-content.sg-form.com/f306b813-475c-11ea-9be...)
A fantastically written technical book that walks through writing an interpreter for a simple programming language. It's test driven and a great introduction to the core concepts. Also a good book to get hands on with idiomatic Go code.
Thorsten does a great job talking about the concepts in the book in this Go Time podcast: https://changelog.com/gotime/107
I <3 these books. They're very well written, and I recommend them every time this question comes up. I also have https://github.com/cweagans/awesome-diy-software, which is similar to the project-based-learning link that you posted.
This book is especially good for beginners in python, it feels as if the author is teaching you in person. All the exercises in every chapter builds to a mini project by the end of that chapter. One can skip the basics section and jump into the projects section which has: Alien Invasion (game programming with pygame), Data Visualization, and Web Development (using Django).
[1] https://nostarch.com pythoncrashcourse2e
https://www.packtpub.com/application-development/d-cookbook
More substantial is the Linux from scratch series:
He takes you through a piece of code and refactors it all into smaller and more usable parts explaining what he's doing along the way. He does this with two difference pieces of code, if I recall correctly, then the third part is an index of all possible refactors.
I read it cover to cover in less than a week and has totally changed the way I program.
In the first half of the book you write an interpreter for a simple scripting language; in the second half of the book, you write compiler to bytecode + vm.
Very clear, fun, excellent writing. Highly recommended.
It was also kind of amazing to very quickly have something that ran more quickly than python!
https://www.amazon.com/Programming-Example-Wordware-Develope...
https://www.labri.fr/perso/nrougier/from-python-to-numpy/
A book teaching Numpy vectorization.
Used to love building robots with Legos as a teenager, but alas the real world isn't so simple. ;)
https://github.com/thewhitetulip/web-dev-golang-anti-textboo...
Intro to python:
https://github.com/thewhitetulip/build-app-with-python-antit...
Both are project based
Now half way through this Phoenix book:
https://pragprog.com/book/phoenix14/programming-phoenix-1-4
Learning Elixir/Erlang/OTP has been a joy so far. It's a new and exciting world in the middle of so much js fatigue.
"...you'll test and build your knowledge of Python and learn to handle the kind of open-ended problems that professional data scientists work on daily."
https://teropa.info/build-your-own-angular/
Also, thank you for posting this question, these are the kind of books that I yearn for when I want to understand how something works!
https://www.learnwithcoder.com/
It has currently Golang, Clojure & Clojurescript single page application development courses.
Assembly Language and Computer Architecture Using C++ and Java , Course Technology, 2004
Compiler Construction Using Java, JavaCC, and Yacc, IEEE/Wiley, 2012
Splash of Code by Joel Dare
there are plenty of books around which can walk you through the whole thing, however, of late, i have found that this: https://pragprog.com/book/jbtracer/the-ray-tracer-challenge is a pretty comprehensive.
check it out !
approximately, on the same lines, nand-to-tetris is _very_ good as well.
I noticed that it was released Sept 2018. That's not too old, but I'm curious if there's a more up-to-date version.
It doesn't actually cover game programming per-se, it's more of an introduction to 3d graphics programming book, but each chapter builds upon the last and there are assignments at the end of each chapter that allow you to play around with concepts that he walks you through so you can build a good understanding.
I've seen other books that are often recommended, and they're great by themselves, and they are nowhere near as utilitarian as this book. I cannot recommend them to beginners even if they're marketed as such.
By the end of it, you have a very good handle on a variety of concepts that you can readily apply towards, say, building a modern-day PBR pipeline.
It was my first exposure to spaced repetition learning, before I knew such a thing existed.
My anecdote, since I already had projects in mind and just wanted to synthesize how things were glued together A to Z: I went to SourceForge/GitHub/BitBucket and cloned repos for projects for the language of choice, build them, run the tests.
Also, https://github.com/search and lookup stuff of similar topic / using the same libraries (words like MIT, ISC, Apache 2, BSD are a good sign). Then check if it's permissively licensed. Also, in the end, you likely won't ever end up forking or copying. You're just getting the knowledge of how it's glued, and probably will wire stuff in uniquely for your case.
Building these projects in itself teaches the ropes of getting an environment setup (googling build errors, checking issue tracker), dependencies, test suites, and building a production-ready package.
I kept the best projects I found at https://github.com/tony/.dot-config/blob/master/.vcspull.yam.... Purely for studying the source of.
Python : Flask, Werkzeug, Django, SQLAlchemy
JS : Express, Backbone, blog posts by Addy Osmani and JS enterprise architecture and Derick Bailey on Marionette (but i don't think the backbone would be as relevant today, it def paved the way to modern frontend we see today)
C++ : OpenTTD
In the end, there weren't many books I found espoused building projects. I already had an idea of what to build - I just needed enough to "ramp up", but if you want books:
JavaScript Patterns: Build Better Applications with Coding and Design Patterns
Examples applied directly to the task at hand. All about scoping.
A python book, that hits different areas than this JS book would be The Hitchhiker's Guide to Python: https://docs.python-guide.org/
C++: Scott Meyer books are great
General programming: Code Complete