I began to learn to code in earnest after many years of tinkering with personal websites and simple arduino sketches. Then I had an idea for an Android app I wished existed and decided to figure out how to build it.
One bonus of learning Java first is that it tends to be used in beginning CS material, so I was able to take courses like Princeton's Algorithms I & II and implement the examples and assignments.
I'm now a software developer working with React/React Native/Node, but I still love learning about CS fundamentals, algorithms, design patterns, etc. The following is a personal checklist of resources that have been especially helpful to me or have been recommended by multiple sources.
- Algorithms (Princeton)
- Introduction to Algorithms (MIT Press)
- The Algorithm Design Manual (Skiena)
- Design Patterns: Elements of Reusable Object-Oriented Software (GoF)
- Head First Design Patterns
- Princeton: Algorithms I & II
- Introduction to Computing Systems: From Bits and Gates to C and Beyond
- Code: The Hidden Language of Computer Hardware
- From NAND to Tetris
- Harvard: cs50
- Let's Build a Compiler!
- Scope & Closures
- this & Object Prototypes
- Types & Grammar
- Async & Performance
- ES6 & Beyond
- Nodeschool
- Professor Frisby's Mostly Adequate Guide to Functional Programming
- Eloquent Javascript
- Functional Light JavaScript
- What Is Code? (Bloomberg)
- Programming in the 21st Century
- Learn Redux by coding a mini-Redux
- React/Redux Links
- Understanding this once and for all
- An introduction to how JavaScript package managers work
- Explaining public-key cryptography to non-geeks