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.
# install rust toolchain
curl https://sh.rustup.rs -sSf | sh
# clone this repository
git clone https://github.com/KolesnichenkoDS/from-junior-to-senior
cd from-junior-to-senior
# edit the list
vim resources/items.json
# render to markdown
cargo run -- resources/ -f json -F markdown -o README.md
If you want to suggest a resource, you can just open an issue.
Resource type | Progress |
---|---|
Articles | |
Books | |
Courses | |
Papers | |
Slides | |
Videos | |
Total |
- Calculus
- Functional Analysis
- Geometry
- Logic
- Algebra
- Category Theory
- Combinatorics and Probability
- Discrete Mathematics
- Type Theory
- Verification and Automatic Theorem Proving
- Lambda Calculus
- Pi Calculus
- Data Structures
- Algorithms
- Programming Languages & Platforms
- Programming Paradigms and Patterns
- Memory Management and Garbage Collection
- Design Patterns
- Domain-Driven Design
- Computer Architecture
- Systems Programming
- Compilers and Interpreters
- Networks
- Web Development
- Databases
- Concurrency and Parallelism
- Security
- Blockchain
- Testing
- Data Science
- Digital Marketing
Resources
- 📝 Articles
- 📖 Books
- 🇷🇺 Краткий курс математического анализа by Lev Kudryavtsev
Resources
- 📝 Articles
Resources
- 🎓 Courses
Resources
- 📝 Articles
- 🇺🇸 Sequent Calculus by nLab
- 📖 Books
- 🇺🇸 Software Foundations. Volume 1: Logical Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 2: Programming Language Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 3: Verified Functional Algorithms by Andrew W. Appel
- 🇺🇸 Types and Programming Languages by Benjamin C. Pierce
Resources
- 📝 Articles
- 🇺🇸 Linear Logic by nLab
- 🇷🇺 Линейная логика (реферат по истории математики) by Alexandr Kharitonov
- 🇺🇸 Linear Types Make Performance More Predictable by Jean-Philippe Bernardy, Arnaud Spiwack
- 🇺🇸 Implementing a Safer Sort with Linear Types by Alexander Vershilov, Arnaud Spiwack
- 📖 Books
- 🇺🇸 Linear Logic by Frank Pfenning
- 📄 Papers
- 🇺🇸 Integrating Dependent and Linear Types by Neel Krishnaswami
- 🇺🇸 Linear Logic, Monads and the Lambda Calculus by Nick Benton, Philip Wadler
- 🇺🇸 On Regions and Linear Types by David Walker, Kevin Watkins
- 🇺🇸 Linear Regions Are All You Need by Matthew Fluet, Greg Morrisett, Amal Ahmed
- 🇺🇸 Type Reconstruction for the Linear π-Calculus with Composite Regular Types by Luca Padovani
- 🇺🇸 Lightweight Monadic Regions by Oleg Kiselyov, Chung-chieh Shan
- 🇺🇸 Session Types for Rust by Thomas Bracht Laumann Jespersen, Philip Munksgaard, Ken Friis Larsen
- 🇺🇸 Permission-Based Ownership: Encapsulating State in High-Order Typed Languages by Neel Krishnaswami, Jonathan Aldrich
- 🎥 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
Resources
- 📖 Books
- 🇺🇸 Algebra: Chapter 0 by Paolo Aluffi
- 🎓 Courses
- 🇺🇸 Algebra I by MIT OpenCourseWare
- 🇺🇸 Algebra II by MIT OpenCourseWare
Resources
- 📎 Cheatsheets
- 🇺🇸 Typeclassopedia by Brent Yorgey
- 📖 Books
- 📄 Papers
- 🇺🇸 Monads Need Not To Be Endofunctors by Thorsten Altenkirch, James Chapman, Tarmo Uustalu
Resources
Resources
- 📝 Articles
- 📖 Books
- 🇺🇸 Software Foundations. Volume 1: Logical Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 2: Programming Language Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 3: Verified Functional Algorithms by Andrew W. Appel
- 🇺🇸 Types and Programming Languages by Benjamin C. Pierce
- 🇺🇸 Homotopy Type Theory by Vladimir Voevodsky
- 📄 Papers
- 🇺🇸 Dependent Type Theory of Stateful High-Order Functions by Aleksandar Nanevski, Gregg Morrisett
- 🇺🇸 RustBelt: Securing the Foundations of the Rust Programming Language by Ralf Jung, Jacques-Henri Jordan, Robbert Krebbers, Derek Dreyer
- 🇺🇸 Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Programming by Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, Derek Dreyer
- 🇺🇸 Permission-Based Ownership: Encapsulating State in High-Order Typed Languages by Neel Krishnaswami, Jonathan Aldrich
- 🇺🇸 Verifying Event-Driven Programs using Ramified Frame Properties by Neel Krishnaswami, Lars Birkedal, Jonathan Aldrich
- 🌠 Slides
- 🇺🇸 Type Safety Proof by Dan Grossman
- 🎥 Videos
- 🇷🇺 Системы типизации лямбда-исчисления 1 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 2 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 3 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 4 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 5 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 6 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 7 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 8 by Денис Москвин
Resources
- 📝 Articles
- 🇺🇸 Linear Types Make Performance More Predictable by Jean-Philippe Bernardy, Arnaud Spiwack
- 🇺🇸 Implementing a Safer Sort with Linear Types by Alexander Vershilov, Arnaud Spiwack
- 📄 Papers
- 🇺🇸 Integrating Dependent and Linear Types by Neel Krishnaswami
- 🇺🇸 Linear Logic, Monads and the Lambda Calculus by Nick Benton, Philip Wadler
- 🇺🇸 On Regions and Linear Types by David Walker, Kevin Watkins
- 🇺🇸 Linear Regions Are All You Need by Matthew Fluet, Greg Morrisett, Amal Ahmed
- 🇺🇸 Lightweight Monadic Regions by Oleg Kiselyov, Chung-chieh Shan
- 🇺🇸 Session Types for Rust by Thomas Bracht Laumann Jespersen, Philip Munksgaard, Ken Friis Larsen
- 🇺🇸 Permission-Based Ownership: Encapsulating State in High-Order Typed Languages by Neel Krishnaswami, Jonathan Aldrich
- 🎥 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
Resources
- 📝 Articles
- 🇺🇸 Row Polymorphism isn't Subtyping by Brian McKenna
- 📄 Papers
- 🇺🇸 A Polymorphic Type System for Extensible Records and Variants by Benedict R. Gaster, Mark P. Jones
- 🌠 Slides
- 🇺🇸 Objects and Aspects: Row Polymorphism by Neel Krishnaswami
Resources
- 📝 Articles
- 🇺🇸 Coercion by nLab
- 🇺🇸 Row Polymorphism isn't Subtyping by Brian McKenna
- 📄 Papers
- 🇺🇸 Type-Theoretical Semantics with Coercive Subtyping by Zhaohui Luo
Resources
- 📖 Books
- 🇺🇸 Software Foundations. Volume 3: Verified Functional Algorithms by Andrew W. Appel
- 🎓 Courses
- 📄 Papers
- 🇺🇸 Verifying Event-Driven Programs using Ramified Frame Properties by Neel Krishnaswami, Lars Birkedal, Jonathan Aldrich
Resources
- 📖 Books
- 🇺🇸 Types and Programming Languages by Benjamin C. Pierce
- 📄 Papers
- 🇺🇸 RustBelt: Securing the Foundations of the Rust Programming Language by Ralf Jung, Jacques-Henri Jordan, Robbert Krebbers, Derek Dreyer
- 🌠 Slides
- 🇺🇸 Type Safety Proof by Dan Grossman
- 🎥 Videos
- 🇷🇺 Лямбда-исчисление by Денис Москвин
- 🇷🇺 Рекурсия и редукция by Денис Москвин
- 🇷🇺 Просто типизированное лямбда-исчисление by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 1 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 2 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 3 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 4 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 5 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 6 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 7 by Денис Москвин
- 🇷🇺 Системы типизации лямбда-исчисления 8 by Денис Москвин
Resources
- 📄 Papers
- 🇺🇸 Integrating Dependent and Linear Types by Neel Krishnaswami
- 🇺🇸 Linear Logic, Monads and the Lambda Calculus by Nick Benton, Philip Wadler
- 🎥 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
Resources
- 📄 Papers
Resources
- 🎓 Courses
Resources
- 🎓 Courses
Resources
Resources
- 📝 Articles
- 🇺🇸 JVM Anatomy Park #2: Transparent Huge Pages by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #3: GC Design and Pauses by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #4: TLAB Allocation by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #5: TLABs and Heap Parsebility by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #6: New Object Stages by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #7: Object Initialization Costs by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #8: Local Variable Reachability by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #9: JNI Critical and GC Locker by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #10: String.intern() by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #11: Moving GC and Locality by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #12: Native Memory Tracking by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #13: Integrational Barriers by Aleksey Shipilev
Resources
- 📝 Articles
- 🇺🇸 JVM Anatomy Park #1: Lock Coarsening and Loops by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #8: Local Variable Reachability by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #14: Constant Variables by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #15: Just-In-Time Constants by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #16: Megamorphic Virtual Calls by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #17: Trust Non-Static Final Fields by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #18: Scalar Replacement by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #19: Lock Elision by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #20: FPU Spills by Aleksey Shipilev
- 🇺🇸 RAII in Java by Yegor Bugayenko
- 🇺🇸 Java 9: The Good, The Bad, and Private Interface Methods by Yegor Bugayenko
- 🇺🇸 Operator new() is Toxic by Yegor Bugayenko
- 🇺🇸 Constructors or Static Factory Methods? by Yegor Bugayenko
Resources
- 📝 Articles
- 🇺🇸 Concurrent Programming in .NET Core by Damir Arh
- 🇺🇸 How does Object.GetType() really work? by Konrad Kokosa
- 🇺🇸 Zero Garbage Collector for .NET Core by Konrad Kokosa
- 🇺🇸 Zero Garbage Collector for .NET Core 2.1 and ASP.NET Core 2.1 by Konrad Kokosa
- 🇺🇸 Allocation is cheap... until it is not by Konrad Kokosa
- 🇺🇸 Making .NET code less allocatey – Allocations and the Garbage Collector by Maarten Balliauw
- 📄 Papers
- 🇺🇸 Designing a π-based Programming Language in the .NET Framework: CLR Interoperability from the Programmer's Point of View by Manuel Mazzara
- 🇺🇸 Design and Implementation of Generics for the .NET Common Language Runtime by Andrew Kennedy, Don Syme
Resources
- 📄 Papers
- 🇺🇸 Dependent Types and Multi-monadic Effects in F* by Nikhil Swamy
Resources
- 📎 Cheatsheets
- 🇺🇸 Typeclassopedia by Brent Yorgey
- 📝 Articles
- 🇺🇸 Impredicative Types by HaskellWiki
- 🇺🇸 Linear Types Make Performance More Predictable by Jean-Philippe Bernardy, Arnaud Spiwack
- 🇺🇸 Implementing a Safer Sort with Linear Types by Alexander Vershilov, Arnaud Spiwack
- 🇺🇸 Three Layer Haskell Cake by Matt Parsons
- 🇺🇸 Invert Your Mocks! by Matt Parsons
- 📄 Papers
- 🇺🇸 Typed Tagless Final Interpreters by Oleg Kiselov
- 🇺🇸 Lightweight Monadic Regions by Oleg Kiselyov, Chung-chieh Shan
Resources
- 📄 Papers
- 🇺🇸 RustBelt: Securing the Foundations of the Rust Programming Language by Ralf Jung, Jacques-Henri Jordan, Robbert Krebbers, Derek Dreyer
- 🇺🇸 Session Types for Rust by Thomas Bracht Laumann Jespersen, Philip Munksgaard, Ken Friis Larsen
Resources
- 📖 Books
- 🇺🇸 Software Foundations. Volume 1: Logical Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 2: Programming Language Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 3: Verified Functional Algorithms by Andrew W. Appel
Resources
Resources
- 📝 Articles
- 🇺🇸 SRP is a Hoax by Yegor Bugayenko
- 🇺🇸 DAO is Yet Another OOP Shame by Yegor Bugayenko
- 🇺🇸 ORM is an Offensive Anti-Pattern by Yegor Bugayenko
- 🇺🇸 Getters/Setters. Evil. Period. by Yegor Bugayenko
- 🇺🇸 Operator new() is Toxic by Yegor Bugayenko
- 🇺🇸 Constructors or Static Factory Methods? by Yegor Bugayenko
- 🇺🇸 Data Transfer Object is a Shame by Yegor Bugayenko
- 📖 Books
- 🇺🇸 Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
Resources
- 📎 Cheatsheets
- 🇺🇸 Typeclassopedia by Brent Yorgey
- 📝 Articles
- 🇺🇸 Three Layer Haskell Cake by Matt Parsons
- 🇺🇸 Invert Your Mocks! by Matt Parsons
- 📖 Books
- 🇺🇸 Software Foundations. Volume 1: Logical Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 2: Programming Language Foundations by Benjamin C. Pierce
- 🇺🇸 Software Foundations. Volume 3: Verified Functional Algorithms by Andrew W. Appel
- 📄 Papers
- 🇺🇸 Typed Tagless Final Interpreters by Oleg Kiselov
- 🇺🇸 Lightweight Monadic Regions by Oleg Kiselyov, Chung-chieh Shan
- 🇺🇸 Verifying Event-Driven Programs using Ramified Frame Properties by Neel Krishnaswami, Lars Birkedal, Jonathan Aldrich
Resources
- 📝 Articles
Resources
- 📝 Articles
- 🇺🇸 JVM Anatomy Park #2: Transparent Huge Pages by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #3: GC Design and Pauses by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #4: TLAB Allocation by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #5: TLABs and Heap Parsebility by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #6: New Object Stages by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #7: Object Initialization Costs by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #8: Local Variable Reachability by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #9: JNI Critical and GC Locker by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #10: String.intern() by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #11: Moving GC and Locality by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #13: Integrational Barriers by Aleksey Shipilev
- 🇺🇸 Zero Garbage Collector for .NET Core by Konrad Kokosa
- 🇺🇸 Zero Garbage Collector for .NET Core 2.1 and ASP.NET Core 2.1 by Konrad Kokosa
- 🇺🇸 Allocation is cheap... until it is not by Konrad Kokosa
- 🇺🇸 Making .NET code less allocatey – Allocations and the Garbage Collector by Maarten Balliauw
Resources
Resources
- 📝 Articles
- 🇺🇸 JVM Anatomy Park #1: Lock Coarsening and Loops by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #8: Local Variable Reachability by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #14: Constant Variables by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #15: Just-In-Time Constants by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #16: Megamorphic Virtual Calls by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #17: Trust Non-Static Final Fields by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #18: Scalar Replacement by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #19: Lock Elision by Aleksey Shipilev
- 🇺🇸 JVM Anatomy Park #20: FPU Spills by Aleksey Shipilev
Resources
- 📝 Articles
Resources
- 📝 Articles
- 🇺🇸 Concurrent Programming in .NET Core by Damir Arh
- 📄 Papers
- 🇺🇸 Iris: Monoids and Invariants as an Orthogonal Basis for Concurrent Programming by Ralf Jung, David Swasey, Filip Sieczkowski, Kasper Svendsen, Aaron Turon, Lars Birkedal, Derek Dreyer
- 🎥 Videos
- 🇺🇸 Substructural Type Systems and Concurrent Programming 1 by Frank Pfenning
Resources
- 📝 Articles
- 🎓 Courses
Resources
- 🎓 Courses
Resources
- 📝 Articles
- 🇺🇸 Single Statement Unit Tests by Yegor Bugayenko
- 🇺🇸 Invert Your Mocks! by Matt Parsons
Resources
Resources
- 🎓 Courses
Resources
- 🎓 Courses
Resources
- 📎 Cheatsheets
- 🇺🇸 Metrics in Digital Marketing (wiki) by Svend A. Sylling