This course provides a first introduction to the Curry-Howard correspondence between programs and proofs, from a theoretical programmer's perspective: we want to understand the theory behind logic and programming languages, but also to write concrete programs (in OCaml) and proofs (in Agda). After an introduction to functional programming languages, we present propositional logic, λ-calculus, the Curry-Howard correspondence, first-order logic, Agda, dependent types and homotopy type theory.
It covers everything from pure lambda calculus through dependent type theory up to homotopy type theory. In comparison to the HoTT book, the book "PROGRAM = PROOF" is oriented less towards mathematicians more towards programmers. It contains also a short introduction to OCaml and Agda.
The book can downloaded from the authors web page:
https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching...
https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/publicat...
Alternatively you may enjoy these two. The latter is especially thorough, and begins with classical logic:
* Concrete Semantics (Isabelle): http://concrete-semantics.org
* Program = Proof (Agda): https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching...
Math foundation of programming. Church–Rosser theorem, Curry–Howard correspondence, intuitionistic logic, theorem proving with dependent types, etc.
2. Rust Atomics and Locks: Low-Level Concurrency in Practice by Mara Bos
Great introduction even for non-Rust programmers.
3. Statistical Consequences of Fat Tails by N. Taleb et al.
I've just started to read it, but looks promising (lot of mathematical statistics).
* Basic Mathematics by Lang. Covers basic algebra and geometry at high school level.
Then one of these two, depending on your interests, or both:
* Vector Calculus, Linear Algebra and Differential Forms by Hubbard and Hubbard. Takes you through linear algebra, single-variable calculus and multiple variable calculus. Analysis is discussed in an appendix. All proofs have a constructive bias, so it's very algorithmic and natural for a CS-minded student. Solutions are in a separate volume.
* Program = Proof by Mimram. Discusses logic and computation, and takes you from the basics to depedent type theory and beyond. Uses OCaml and Agda. Freely available at: https://www.lix.polytechnique.fr/Labo/Samuel.Mimram/teaching...