miladz68 / 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

  • Programming Language Foundations in Agda by P. Wadler (book) (repo)

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

TODO (hexagonal / clean, distributed systems...)

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

About

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