My study plan for going from junior to senior software developer (i. e. from level 1 to level 3 of the Programmer Competency Matrix). Inspired by Google Interview University.
This study plan attemts to cover a lot of topics related to math and theoretical computer science, but it can miss some applied topics, like mobile or frontend development. Also this plan doesn't (and never will) include something related to SEO, advertising, marketing etc.
- Fork this repo
- Mark all items as undone
- Add missing topics (optional)
- Study!
- Calculus
- Functional Analysis
- Geometry
- Linear Algebra
- Abstract Algebra
- Category Theory
- Combinatorics and Probability
- Discrete Mathematics
- Type Theory
- Lambda Calculus
- Data Structures
- Algorithms
- Programming Languages
- Programming Paradigms
- Design Patterns
- Computer Architecture
- Systems Programming
- Networks
- Web Development
- Databases
- Concurrent Programming
- Security
- Testing
- Source Code Version Control
- Build Automation
- See also
- Resources
- Online Tools
- 📝 Articles
- An Intuitive Introduction to Limits by Better Explained
- 📖 Books
- 🇷🇺 Курс дифференциального и интегрального исчисления в 3 томах. Том 1 by Grigorii Fichtenholz
- 🇷🇺 Курс дифференциального и интегрального исчисления в 3 томах. Том 2 by Grigorii Fichtenholz
- 🇷🇺 Курс дифференциального и интегрального исчисления в 3 томах. Том 3 by Grigorii Fichtenholz
- 🇷🇺 Краткий курс Математического анализа by Lev Kudryavtsev
- 🎓 Courses
- 📝 Articles
- An Interactive Guide to the Fourier Transform by Better Explained
- 📖 Books
- 🎓 Courses
- Analytic Geometry by Khan Academy
- 📖 Books
- Algebra: Chapter 0 by Paolo Aluffi
- 📖 Books
- Basic Category Theory for Computer Scientists by Benjamin C. Pierce
- 🎓 Courses
- Basic Theoretical Probability by Khan Academy
- 🎓 Courses
- Graph Theory by Tutorialspoint
- 📖 Books
- Homotopy Type Theory by Vladimir Voevodsky
- Types and Programming Languages by Benjamin C. Pierce
- 📝 Articles
- Data Structures Basics by Algosaurus
- 🎓 Courses
- Data Structures by UC San Diego and HSE
- 📖 Books
- The Art of Computer Programming by Donald E. Knuth
- Structure and Interpretation of Computer Programs by Harold Abelson, Gerald Jay Sussman and Julie Sussman
- 📎 Cheat Sheets
- Sorting Algorithms Animations by Toptal
- 📝 Articles
- Sorting Algorithms by Better Explained
- 📎 Cheat Sheets
- 📝 Articles
- Algorithmic Complexity by Algosaurus
- 📎 Cheat Sheets
- 📖 Books
- 🇷🇺 Ассемблер в Linux для программистов C by Wikibooks
- 📎 Cheat Sheets
- 📖 Books
- The C Programming Language by Brian W. Kernighan and Dennis M. Ritchie
- C Primer Plus by Stephen Prata
- C Programming Absolute Beginner's Guide by Greg Perry and Dean Miller
- Object-Oriented C
- The C++ Programming Language by Bjarne Stroustrup
- C++ Primer Plus by Stephen Prata
- 📖 Books
- 🇷🇺 Haskell Book by Anton Kholomiov
- 📝 Articles
- Wrapper Types in Rust: Choosing Your Guarantees by Manish Goregaokar
- 📖 Books
- 📝 Articles
- Retracing Original Object-Oriented Programming by A. T. Herlangga
- 📖 Books
- A Theory of Objects by M. Abadi, L. Cardelli
- 📝 Articles
- 🎥 Videos
- Immutable data structures for functional JS by Anjana Vakil
- 📝 Articles
- Why has the actor model not succeeded? by P. Mackay
- 📖 Books
- 📎 Cheat Sheets
- 🎓 Courses
- Computer Architecture by Princeton University
- 📝 Articles
- Writing an OS in Rust by Philipp Oppermann
- 📖 Books
- Modern Operating Systems by Andrew S. Tanenbaum
- IntermezzOS
- The little book about OS development by Erik Helin and Adam Renberg
-
📝 Articles
- Writing Device Drivers in Linux: A Brief Tutorial by Free Software Magazine
-
📖 Books
- Linux From Scratch by Gerard Beekmans
- The Linux Kernel Module Programming Guide by Peter Jay Salzman
- 📖 Books
- Write You a Haskell by Stephen Diehl
- 📖 Books
- Crafting Interpreters by Bob Nystorm
- Beautiful Racket by Matthew Butterick
- Write Yourself a Scheme in 48 Hours by Jonathan Tang
- 📝 Articles
- Immix: A Mark-Region Garbage Collector with Space Efficiency, Fast Collection, and Mutator Performance by Stephen M. Blackburn and Kathryn S. McKinley
- Rust as a Language for High Performance GC Implementation
- Designing a GC in Rust by Manish Goregaokar
- 📖 Books
- Computer Networks by Andrew S. Tanenbaum
- 📖 Books
- Programming with POSIX Threads by David R. Butenhof
- 📎 Cheat Sheets
- 🎓 Courses
- Journey Into Cryptography by Khan Academy
- Teach Yourself Programming in Ten Years
- Teach Yourself Computer Science
- Become a Programmer, Motherfucker
- Project Based Learning
- Open Source Society University
- Free Programming Books
- Google Interview University
- Machine Learning for Software Engineers
- Awesome Compilers
- What happens when...
You can find more courses, articles, videos etc here:
Online documentation:
Wikimedia Foundation projects:
Forums, Q&A:
- StackOverflow
- 🇷🇺 Toster
- 🇷🇺 dxdy
- Math
- Wolfram Alpha — a computational knowledge engine
- Symbolab — a step by step calculator
- Coding
- Cloud9 — a development environment in the cloud
- Codepen — a playground for the front end side of the web
- Compiler Explorer — an interactive online C, C++, D, Rust and Go compiler
- Ideone — a free online IDE, compiler and debugging tool
- Repl.It — a REPL, compiler & IDE
- RunKit — a Node prototyping tool
- Reepl — an online ClojureScript REPL