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.
Run on Colab
Concatenative Programming - tacit programming and concatenative programming using Python high-order functions. Run on Colab
Corecursion - codata and corecursion, and how to use it in Python. Run on Colab
Monoids - Monoids as Python interfaces, implementation and use cases. Run on Colab
Functors & Monads - Functors, Applicative Functors and Monads as Python interfaces, implementation and use cases. Run on Colab
Finite State Machines - Implementing and testing Finite State Machines. Run on Colab
Continuations - applications of continuation-passing style programming, including tail-call optimization and use of combinators to perform backtracking. Run on Colab
Coroutines - applications of Python's coroutines to several types of programming problems. Run on Colab
Domain-Specific Languages - using Lark to create a small DSL
Run on Colab
Constraint Programming - introduction to constraint programming using Microsoft's Z3 and pycosat
Run on Colab
Logic Programming - introduction to logic programming with Prolog via Python's module pyswip
Run on Colab
Sampling Statistics - A sampling approach to random variables and distributions to teach basic statistical methods without Calculus. Run on Colab
Resampling - notes about permutation tests to estimate answers to probability problems and propose alternatives to several statistical tests. Run on Colab
Bayesianism - discussions about the philosophy and practice of Bayesian statistics Run on Colab
Probabilistic Programming - introduction to probabilistic programming Run on Colab
Optimization - brief notes about convex optimization and how to apply it with Python. Run on Colab
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. Run on Colab
Differentiation - computing derivatives via symbolic differentiation, numerical differentiation and automatic differentiation. Run on Colab
JAX - use examples of Google's module JAX for automatic differentiation, JIT and vectorization. Run on Colab
Modular Arithmetic - elements of modular arithmetic, some examples and implementations of standard functions. Run on Colab