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 attempts 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
- Mathematical Logic
- Abstract Algebra
- Category Theory
- Combinatorics and Probability
- Discrete Mathematics
- Type Theory
- Lambda Calculus
- Pi 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
- π Articles
- Sequent Calculus by nLab
- Linear Logic by nLab
- π·πΊ ΠΠΈΠ½Π΅ΠΉΠ½Π°Ρ Π»ΠΎΠ³ΠΈΠΊΠ° (ΡΠ΅ΡΠ΅ΡΠ°Ρ ΠΏΠΎ ΠΈΡΡΠΎΡΠΈΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠΈ) by Alexandr Kharitonov
- π Books
- Linear Logic by Frank Pfenning
- π₯ Videos
- Linear Logic is Broken by Cassandra Sparks
- π Books
- Algebra: Chapter 0 by Paolo Aluffi
- π Books
- Basic Category Theory for Computer Scientists by Benjamin C. Pierce
- Category Theory for Programmers by Bartosz Milewski
- π Courses
- Basic Theoretical Probability by Khan Academy
- π Courses
- Graph Theory by Tutorialspoint
- π Articles
- On Regions and Linear Types by David Walker and Kevin Watkins
- Linear Regions Are All You Need by Matthew Fluet, Greg Morrisett and Amal Ahmed
- Enriching an Effect Calculus with Linear Types by Jeff Egger, Rasmus Ejlers MΓΈgelberg and Alex Simpson
- Dependent Type Theory of Stateful Higher-Order Functions by Aleksandar Nanevski and Greg Morrisett
- The Pain Of Real Linear Types in Rust by Alexis Beingessner
- Fundamentals of Session Types by Vasco T. Vasconcelos
- A Gentle Introduction to Multiparty Asynchronous Session Types by Mario Coppo, Mariangiola Dezani-Ciancaglini, Luca Padovani and Nobuko Yoshida
- π Books
- Homotopy Type Theory by Vladimir Voevodsky
- Types and Programming Languages by Benjamin C. Pierce
- π₯ Videos
- Linear and Dependent Types 1 by Neel Krishnaswami
- Linear and Dependent Types 2 by Neel Krishnaswami
- Linear and Dependent Types 3 by Neel Krishnaswami
- Linear and Dependent Types 4 by Neel Krishnaswami
- Substructural Type Systems and Concurrent Programming 1 by Frank Pfenning
- Substructural Type Systems and Concurrent Programming 2 by Frank Pfenning
- Substructural Type Systems and Concurrent Programming 3 by Frank Pfenning
- Substructural Type Systems and Concurrent Programming 4 by Frank Pfenning
- Substructural Type Systems and Concurrent Programming 5 by Frank Pfenning
- Linear Logic, Session Types and Deadlock-Freedom by Simon Gay
- π₯ Videos
- π·πΊ ΠΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ by ΠΠ΅Π½ΠΈΡ ΠΠΎΡΠΊΠ²ΠΈΠ½
- π·πΊ Π Π΅ΠΊΡΡΡΠΈΡ ΠΈ ΡΠ΅Π΄ΡΠΊΡΠΈΡ by ΠΠ΅Π½ΠΈΡ ΠΠΎΡΠΊΠ²ΠΈΠ½
- π·πΊ ΠΡΠΎΡΡΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π»ΡΠΌΠ±Π΄Π°-ΠΈΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ by ΠΠ΅Π½ΠΈΡ ΠΠΎΡΠΊΠ²ΠΈΠ½
- π Articles
- A compositional semantics for the reversible pi-calculus by Ioana Domnina Cristescu, Jean Krivine and Daniele Varacca
- Reversible Structures by Luca Cardelli and Cosimo Laneve
- π 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
- π Articles
- What Every C Programmer Should Know About Undefined Behaviour by Chris Lattner
- π 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
- π₯ Videos
- π·πΊ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ C++ Π΄Π»Ρ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ by Kirill Lashkevich
- π·πΊ ΠΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΠΌΡΡΠΈ C++ by Andrey Yankovsky
- π Cheat Sheets
- JVM Anatomy Park by Alexey Shipilev
- π 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
- π Articles
- What Every Programmer Should Know About Memory by Ulrich Drepper
- π 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
-
π Articles
- Rust your ARM microcontroller! by Jorge Aparicio
- Fearless concurrency in your microcontroller by Jorge Aparicio
- Understanding the STM32F0's GPIO part 1 by Hertaville.com
- Understanding the STM32F0's GPIO part 2 by Hertaville.com
-
π Books
- Discover the world of microcontrollers through Rust! by Jorge Aparicio
- π 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
- Garbage Collection with LLVM
- JVM Anatony Park: GC Design and Pauses by Alexey Shipilev
- 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
- π Books
- Computer Networks by Andrew S. Tanenbaum
- π Courses
- π Books
- Programming with POSIX Threads by David R. Butenhof
- π Cheat Sheets
- π Courses
- Journey Into Cryptography by Khan Academy
- π Courses
- 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:
- Coursera
- Khan Academy
- Codecademy
- Better Explained
- Learn X in Y minutes
- π·πΊ ΠΠΈΠΊΠΈΠΊΠΎΠ½ΡΠΏΠ΅ΠΊΡΡ ΠΠ’ΠΠ
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
