err0r500 / foundational-knowledge-for-programmers

List of resources about foundational knowledge for programmers (supposed to last a few decades)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 !

xkcd complex numbers

Feel free to contribute if you know some great resources that fits the definition above.

Computer Science

General

Programming Language Theory

Category Theory

Type Theory

Proof Theory

Misc

Programming paradigms

General

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

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

Data Science

Linear Algebra

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

Cryptography