This repository includes Jupyter notebooks dealing with themes ranging from Statistics and Mathematics to Programming.
Array Programming - what is array programming and how to use numpy
.
Concatenative Programming - tacit programming and concatenative programming using Python high-order functions.
Corecursion - codata and corecursion, and how to use it in Python.
Monoids - Monoids as Python interfaces, implementation and use cases.
Functors & Monads - Functors, Applicative Functors and Monads as Python interfaces, implementation and use cases.
Finite State Machines - Implementing and testing Finite State Machines.
Continuations - applications of continuation-passing style programming, including tail-call optimization and use of combinators to perform backtracking.
Coroutines - applications of Python's coroutines to several types of programming problems.
Domain-Specific Languages - using Lark
to create a small DSL
Constraint Programming - introduction to constraint programming using Microsoft's Z3 and pycosat
Logic Programming - introduction to logic programming with Prolog via Python's module pyswip
Sampling Statistics - A sampling approach to random variables and distributions to teach basic statistical methods without Calculus.
Resampling - notes about permutation tests to estimate answers to probability problems and propose alternatives to several statistical tests.
Bayesianism - discussions about the philosophy and practice of Bayesian statistics
Probabilistic Programming - introduction to probabilistic programming
Optimization - brief notes about convex optimization and how to apply it with Python.
Street Fight Mathematics - some mathy ways to guesstimate answers of hard problems. The notebook includes Python solutions for the problems presented by Ryan O'Donnell in his lecture on this subject.
Differentiation - computing derivatives via symbolic differentiation, numerical differentiation and automatic differentiation.
JAX - use examples of Google's module JAX for automatic differentiation, JIT and vectorization.
Modular Arithmetic - elements of modular arithmetic, some examples and implementations of standard functions.