Domain-Learning with Computational Microworlds
(PyZX)
I loved Papert's Mindstorms. Part of why it resonated is simply because I like using programming to learn stuff. Not everyone likes that, but I think it's still worth exploring how domain specific languages can guide self-directed learning.
It's worth mentioning that Sam Ritchie already outlined, like, a lot of this, in The Dynamic Notebook and his ongoing effort to port SICM there.
Changing Minds by Andrea DiSessa
- Are these Enabling Environments?
Examples
- Calculus with Julia
- Math 229 Projects (College of Staten Island course on calculus with julia)
- Statistics with Julia
- Computational thinking (modeling) with Julia
- Designing Sound (with Pd)
- https://jpreston.xyz/a-catalogue-of-chords-example.html
- Structure and Interpretation of Classical Mechanics (in Scheme)
- Functional Differential Geometry (in Scheme)
- Qiskit
- Programming Language Foundations in Agda
- Learning how to Prove: From the Coq Proof Assistant to Textbook Style
- Software Foundations (In Coq)
- Monotone Co-design Theory
- Probabilistic Programming
- ArviZ: Exploratory analysis of Bayesian models
- Stan
- Edward
- Probabilistic Models of Cognition (taught with WebPPL, a probabilistic programming language)
- Statistical Rethinking
- https://epirhandbook.com/
- Xena Project (check their Lean "Natural Number Game")
- Logic & Proof in Lean
- https://leanprover-community.github.io/undergrad.html
- PyZX
- Turtles Termites and Traffic Jams
- https://www.pseudorandom.com/implementing-exp
- Arend Theorem Prover - Cubical Type Theory as an IntelliJ Plugin
- Wolfram U - learn domains through Mathematica
- https://github.com/quantumlib/Cirq
- https://github.com/SciML/Catalyst.jl
- Sagemath Interactions - some explorables with Sagemath
- Haskell+Music Theory
- Haskell Road to Logic, Maths, and Programming
- The Little Typer - type theory via bespoke "Pie" language
- Think Complexity
- All Hail Geometric Algebra! - (in Haskell)
- Math as Code - a bit disappointing in scope, but fun sentiment
- Fantasy Land - Algebraic JavaScript Specification
- ToonTalk - Infinite cardinality of sets
- Knuth's MIX for Art of Computer Programming
- Modeling Game Theory in Haskell - HAGL
- Exploring Mathematics with your Computer
- https://imadr.github.io/rotations-with-quaternions/
- Norvig’s pytudes https://github.com/norvig/pytudes/blob/master/ipynb/Probability.ipynb
- Annotated implementations of ML papers https://github.com/labmlai/annotated_deep_learning_paper_implementations
- The Annotated Transformer http://nlp.seas.harvard.edu//2018/04/03/attention.html
- https://simulation.school/p/computational-economics
- https://mitpress.mit.edu/books/turtle-geometry
- https://keras.io/examples/
- Dive into Deep Learning
- https://press.princeton.edu/books/hardcover/9780691164069/opt-art
- https://math.mit.edu/~gs/learningfromdata/
- Rosalind Bio
- http://www.numerical-tours.com/
- https://twitter.com/joel_burget/status/1562469068464017408 (Numpy docs showing reductions mapped to code)
- https://github.com/srush/GPU-Puzzles
- Mini versions of everything
- https://www.semanticscholar.org/paper/Fun-with-semirings%3A-a-functional-pearl-on-the-abuse-Dolan/2e43477e26a54b2d1a046c214055faee7ebc3544
Note: I'm neglecting tons of python stuff. Probably because I think type systems are useful for learning things :-)
Misc
-
Metalinguistic abstraction & DSL design
- taxonomy of bespoke languages for instructional texts
-
MathCell for embedding math in webpages.
(Literate Coq)
-
Literate Coq - Relatedly - Why are proof assistants so unfriendly?
-
I'm struck by the un-Haskell-ness of this api. https://reanimate.github.io/
- you don't need to know the ins and outs of Haskell to use this "DSL"
Minecraft
- Robin Sloan - The Secret of Minecraft https://medium.com/message/the-secret-of-minecraft-97dfacb05a3c
-
Imagine yourself a child. Imagine yourself given one of these books: not merely a story of exploration and adventure, but a manual to such.
-
Imagine yourself a child, in possession of the secret knowledge.
-
Group theory
What would an algebraic environment look like? How would I encode and play with the circle group? The monster group? https://en.wikipedia.org/wiki/Circle_group
Backlinks