└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Foundational knowledge for programmers 2 | 3 | _Foundational knowledge_ is very different from _basic knowledge_ : if you're a newcomer in the field, it may not be the shortest path to become "job-ready"... but what you'll learn here will last your life long ! 4 | 5 | 6 | ![xkcd complex numbers](https://imgs.xkcd.com/comics/complex_numbers.png "source: https://xkcd.com/2028/") 7 | 8 | Feel free to contribute if you know some great resources that fits the definition above. 9 | 10 | 11 | ## Computer Science 12 | 13 | ### General 14 | - Structure and Interpretation of Computer Programs (MIT) 15 | [(video playlist)](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-001-structure-and-interpretation-of-computer-programs-spring-2005/) 16 | [(book)](https://web.mit.edu/alexmv/6.037/sicp.pdf) 17 | - Mathematics for Computer Science (MIT) 18 | [(video playlist)](https://www.youtube.com/playlist?list=PLB7540DEDD482705B) 19 | 20 | 21 | ### Programming Language Theory 22 | - Software Foundations in Coq by B. Pierce [(website)](https://softwarefoundations.cis.upenn.edu/) 23 | * Logical Foundations [(website)](https://softwarefoundations.cis.upenn.edu/lf-current/index.html) 24 | * Programming Language Foundations [(website)](https://softwarefoundations.cis.upenn.edu/plf-current/index.html) [(video serie, see page bottom)](https://www.cs.uoregon.edu/research/summerschool/summer12/curriculum.html) 25 | * Verified Functional Algorithms [(website)](https://softwarefoundations.cis.upenn.edu/vfa-current/index.html) 26 | - Programming Language Foundations in Agda by P. Wadler 27 | [(book)](https://plfa.github.io/) 28 | [(repo)](https://github.com/plfa/plfa.github.io/) 29 | 30 | 31 | ### Category Theory 32 | - Category Theory for Programmers by B. Milewski 33 | [(video playlist)](https://www.youtube.com/playlist?list=PLbgaMIhjbmEnaH_LTkxLI7FMa2HsnawM_) 34 | [(book)](https://github.com/hmemcpy/milewski-ctfp-pdf) 35 | - Programming with categories (MIT) 36 | [(video playlist)](https://www.youtube.com/playlist?list=PLhgq-BqyZ7i7MTGhUROZy3BOICnVixETS) 37 | - Seven Sketches in Compositionality: An Invitation to Applied Category Theory 38 | [(book)](https://arxiv.org/abs/1803.05316) 39 | 40 | 41 | ### Type Theory 42 | - Propositions as Types 43 | [(video)](https://www.youtube.com/watch?v=SknxggwRPzU) 44 | - The Little Typer 45 | [(πŸ’² book)](https://mitpress.mit.edu/books/little-typer) 46 | - Oregon Programming Languages Summer School 2010 47 | [(video playlist)](https://www.youtube.com/watch?v=ev7AYsLljxk&list=PL8Ky8lYL8-Oh7awp0sqa82o7Ggt4AGhyf&index=5) 48 | 49 | 50 | ### Proof Theory 51 | - The Little Prover 52 | [(πŸ’² book)](https://mitpress.mit.edu/books/little-prover) 53 | - Oregon Programming Languages Summer School 2010 54 | [(video playlist)](https://www.youtube.com/watch?v=YRu7Xi-mNK8&list=PL8Ky8lYL8-Oh7awp0sqa82o7Ggt4AGhyf&index=12) 55 | 56 | 57 | ### Misc 58 | - Dependent types with Idris by Edwin Brady 59 | [(video playlist)](https://www.youtube.com/playlist?list=PL7lYBKOG3R5CLb6AOhE4EaSmVzXrgJM6n) 60 | - Adventure with Types in Haskell - Simon Peyton Jones 61 | [(video playlist)](https://www.youtube.com/playlist?list=PL7lYBKOG3R5DnCP3r3bvKreRjRRWpp1Ao) 62 | 63 | 64 | 65 | ## Programming paradigms 66 | 67 | 68 | ### General 69 | - [wikipedia article](https://en.wikipedia.org/wiki/Programming_paradigm) 70 | - Programming Paradigms (Stanford) 71 | [(video playlist)](https://www.youtube.com/playlist?list=PL9D558D49CA734A02) 72 | 73 | ### Functional 74 | - Erik Meijer: Functional Programming 75 | [(video)](https://youtu.be/z0N1aZ6SnBk?t=416) 76 | 77 | ### Imperative 78 | - Programming from the ground up by Jonathan Bartlett 79 | [(book)](https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf) 80 | 81 | 82 | ### Actor Model 83 | - Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know... 84 | [(video)](https://www.youtube.com/watch?v=7erJ1DV_Tlo) 85 | 86 | ## Software Architecture 87 | 88 | ### General 89 | 90 | - Architecture of Open Source Applications 91 | * Volume I 92 | [(website)](https://aosabook.org/en/index.html#aosa1) 93 | [(πŸ’² book)](https://aosabook.org/en/buy.html#vol1) 94 | * Volume II 95 | [(website)](https://aosabook.org/en/index.html#aosa2) 96 | [(πŸ’² book)](https://aosabook.org/en/buy.html#vol2) 97 | * 500 lines or less 98 | [(website)](https://aosabook.org/en/index.html#500lines) 99 | [(πŸ’² book)](https://aosabook.org/en/buy.html#fh) 100 | * Performance of Open Source Applications 101 | [(website)](https://aosabook.org/en/index.html#posa) 102 | [(πŸ’² book)](https://aosabook.org/en/buy.html#posa) 103 | - System Design 104 | [(video playlist)](https://www.youtube.com/playlist?list=PLkQkbY7JNJuBoTemzQfjym0sqbOHt5fnV) 105 | 106 | ### Distributed Systems Design 107 | - Time, Clocks, and the Ordering of Events in a Distributed System 108 | [(article)](https://lamport.azurewebsites.net/pubs/time-clocks.pdf) 109 | - The TLA+ Video Course by Leslie Lamport 110 | [(course)](https://lamport.azurewebsites.net/video/videos.html) 111 | 112 | ## Computer Architecture 113 | - Computer Architecture (ETH ZΓΌrich) 114 | [(video playlist)](https://www.youtube.com/playlist?list=PL5Q2soXY2Zi-DyoI3HbqcdtUm9YWRR_z-) 115 | - Programming from the ground up by Jonathan Bartlett 116 | [(book)](https://download-mirror.savannah.gnu.org/releases/pgubook/ProgrammingGroundUp-1-0-booksize.pdf) 117 | 118 | 119 | ## Algorithms & Data structures 120 | - Analysis of Algorithms by Steven Skiena 121 | [(video playlist)](https://www.youtube.com/playlist?list=PLOtl7M3yp-DX32N0fVIyvn7ipWKNGmwpp) 122 | - Purely Functional Data Structures by Chris Okasaki 123 | [(book)](https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf) 124 | - The Algorithm Design Manual 125 | [(πŸ’² book)](http://www.algorist.com/) 126 | 127 | 128 | 129 | ## Data Science 130 | ### Linear Algebra 131 | - Linear Algebra course by Gilbert Strang (MIT) 132 | [(video playlist)](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/) 133 | 134 | 135 | ### Discrete Mathematics 136 | - Notes on Discrete Mathematics (Yale) 137 | [(pdf)](http://www.cs.yale.edu/homes/aspnes/classes/202/notes.pdf) 138 | 139 | 140 | ### Calculus 141 | - Introduction to Calculus 142 | [(pdf)](https://arachnoid.com/calculus/index.html) 143 | 144 | 145 | ### Machine Learning and Deep Learning 146 | - Mathematics of Machine Learning (MIT) 147 | [(pdf)](https://ocw.mit.edu/courses/mathematics/18-657-mathematics-of-machine-learning-fall-2015/lecture-notes/MIT18_657F15_LecNote.pdf) 148 | - The Matrix Calculus You Need For Deep Learning (University of San Francisco) 149 | [(pdf)](https://explained.ai/matrix-calculus/index.html) 150 | - Deep Reinforcement Learning (Berkeley) 151 | [(video playlist)](https://www.youtube.com/playlist?list=PLkFD6_40KJIxJMR-j5A1mkxK26gh_qg37) 152 | - Convolutional Neural Networks for Visual Recognition (Stanford) 153 | [(video playlist)](https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv) 154 | - Natural Language Processing with Deep Learning (Stanford) 155 | [(video playlist)](https://www.youtube.com/playlist?list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z) 156 | 157 | 158 | 159 | ## Networking 160 | - Network Fundamentals 161 | [(video playlist)](https://www.youtube.com/playlist?list=PLDQaRcbiSnqF5U8ffMgZzS7fq1rHUI3Q8) 162 | 163 | 164 | 165 | ## Cryptography 166 | - PKI bootcamp 167 | [(video playlist)](https://www.youtube.com/watch?v=q9vu6_2r0o4&list=PLDp2gaPHHZK-mnKi3Zy_-hRjqLHh5PaAv) 168 | - Introduction to Cryptography by Christof Paar 169 | [(video playlist)](https://www.youtube.com/playlist?list=PL6N5qY2nvvJE8X75VkXglSrVhLv1tVcfy) 170 | - Cryptography (MIT) 171 | [(video playlist)](https://www.youtube.com/playlist?list=PL6ogFv-ieghe8MOIcpD6UDtdK-UMHG8oH) 172 | --------------------------------------------------------------------------------