Foundational knowledge for programmers
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 !
Feel free to contribute if you know some great resources that fits the definition above.
Computer Science
General
- Structure and Interpretation of Computer Programs (MIT) (video playlist) (book)
- Mathematics for Computer Science (MIT) (video playlist)
Programming Language Theory
- Software Foundations in Coq by B. Pierce (website)
- Logical Foundations (website)
- Programming Language Foundations (website) (video serie, see page bottom)
- Verified Functional Algorithms (website)
- Programming Language Foundations in Agda by P. Wadler (book) (repo)
Category Theory
- Category Theory for Programmers by B. Milewski (video playlist) (book)
- Programming with categories (MIT) (video playlist)
- Seven Sketches in Compositionality: An Invitation to Applied Category Theory (book)
Type Theory
- Propositions as Types (video)
- The Little Typer
(
๐ฒ book) - Oregon Programming Languages Summer School 2010 (video playlist)
Proof Theory
- The Little Prover
(
๐ฒ book) - Oregon Programming Languages Summer School 2010 (video playlist)
Misc
- Dependent types with Idris by Edwin Brady (video playlist)
- Adventure with Types in Haskell - Simon Peyton Jones (video playlist)
Programming paradigms
General
- wikipedia article
- Programming Paradigms (Stanford) (video playlist)
Functional
- Erik Meijer: Functional Programming (video)
Imperative
- Programming from the ground up by Jonathan Bartlett (book)
Actor Model
- Hewitt, Meijer and Szyperski: The Actor Model (everything you wanted to know... (video)
Software Architecture
General
- Architecture of Open Source Applications
- Volume I
(website)
(
๐ฒ book) - Volume II
(website)
(
๐ฒ book) - 500 lines or less
(website)
(
๐ฒ book) - Performance of Open Source Applications
(website)
(
๐ฒ book)
- Volume I
(website)
(
- System Design (video playlist)
Distributed Systems Design
- Time, Clocks, and the Ordering of Events in a Distributed System (article)
- The TLA+ Video Course by Leslie Lamport (course)
Computer Architecture
- Computer Architecture (ETH Zรผrich) (video playlist)
- Programming from the ground up by Jonathan Bartlett (book)
Algorithms & Data structures
- Analysis of Algorithms by Steven Skiena (video playlist)
- Purely Functional Data Structures by Chris Okasaki (book)
- The Algorithm Design Manual
(
๐ฒ book)
Data Science
Linear Algebra
- Linear Algebra course by Gilbert Strang (MIT) (video playlist)
Discrete Mathematics
- Notes on Discrete Mathematics (Yale) (pdf)
Calculus
- Introduction to Calculus (pdf)
Machine Learning and Deep Learning
- Mathematics of Machine Learning (MIT) (pdf)
- The Matrix Calculus You Need For Deep Learning (University of San Francisco) (pdf)
- Deep Reinforcement Learning (Berkeley) (video playlist)
- Convolutional Neural Networks for Visual Recognition (Stanford) (video playlist)
- Natural Language Processing with Deep Learning (Stanford) (video playlist)
Networking
- Network Fundamentals (video playlist)
Cryptography
- PKI bootcamp (video playlist)
- Introduction to Cryptography by Christof Paar (video playlist)
- Cryptography (MIT) (video playlist)