Interests Adaptive Learning Systems
Since 2019, I've solved every problem that Math Academy has faced while constructing an educational knowledge graph for all of 4th grade through university-level mathematics and building a fully automated & personalized learning system around it. (Click on any item below to view more details.)
Knowledge Graph Construction
- Developing command-line tools to construct the graph manually yet efficiently
- Personally setting and maintaining tens of thousands of relationships between thousands of objects in the knowledge graph
- Validating graph integrity and automatically correcting issues (or supplying relevant information if a human-expert decision is required)
- Checking whether intended graph edits (or batches of edits) would put the graph in an invalid state, and if so, aborting them
Student Knowledge Profiles
- Initializating student knowledge profiles via adaptive diagnostics (and minimizing the number of diagnostic questions needed)
- Modeling student knowledge profiles via spaced repetition -- canonical spaced repetition operates on discrete independent flashcards, but I developed a novel mathematical framework that extends it to hierarchical bodies of knowledge where repetitions on advanced topics trickle down to simpler topics that are implicitly practiced
- Caching student knowledge profiles to reduce compute time/resources and enable visualizations throughout the system UI
- Continually recalibrating cached knowledge states and assigning supplemental mini-diagnostics to ensure that student knowledge profiles remain sufficiently up-to-date despite changes to the underlying knowledge graph
Personalized Learning Tasks
- Automatically selecting personalized learning tasks that optimize learning efficiency -- students learn 4x as much content in the same amount of time, as compared to a traditional classroom
- Triggering remedial interventions when repeated confusion is detected
- Enabling flexible configuration settings to tailor the system's behavior to student goals -- for example, if you're taking a calculus course, do you want to be given material from lower grades that we think you don't know yet? If so, do you want to be given all of that material or only material that is foundational for calculus?
- Validating system behavior -- single decisions in real time as well as sequences of decisions whose effects manifest over longer periods of time
- Writing high-level unit tests to ensure stability throughout continual development and refactoring
- Automating the process of periodically running system-wide validation checks & data/parameter calibrations and posting issues & relevant status updates to Slack for monitoring
- Analyzing student performance to pinpoint specific pieces of content that need further refinement
- Avoiding downtime during production graph revisions by creating tools to clone topics, revise the clones, and then instantaneously "knife-switch" the revisions back into the production graph -- this enables a tight feedback loop connecting user feedback and content revisions
- Aligning incentives of adversarial students in a gamified learning environment by calibrating awards and penalties
- Creating an overall student learning efficiency score, along with various subscores, analogous to a credit score
- Predicting when a student will finish their course (via Monte Carlo simulation, and continually recailbrating estimates)
- Conceiving of and creating a successful prototype for our very first knowledge graph visualization (and constructing/managing the underlying data for later iterations of the knowledge graph visualization)
- Automatically generating human-interpretable justifications for all decisions made by the system -- what do my diagnostic results mean? Why did I get a particular learning task? Why did I get a penalty?
In particular, I developed all the novel models and algorithms that Math Academy uses to help students learn effectively and efficiently. Some of the most important ones are listed below.
- Fractional Implicit Repetition (FIRe) is a mathematical framework that extends spaced repetition to hierarchical bodies of knowledge where repetitions on advanced topics trickle down to simpler topics that are implicitly practiced.
- Fast Frontier Inference is a diagnostic question selection algorithm that allows us to quickly find a student's knowledge frontier and hence estimate their spaced repetition profile.
- Repetition Compression is an algorithm that helps Math Academy's spaced repetition engine achieve maximum efficiency. It takes all the topics that have due repetitions and compresses them into a much smaller set of topics that implicitly covers all of those due repetitions.
- The Penalizer is an algorithm for triggering XP penalties in response to guessing or general lack of effort. It calibrates penalties by modeling how frustrated a tutor sitting next to the student would become. It keeps adversarial students in line while ensuring that students who use the system properly and truly gave their best effort rarely (if ever) experience penalties.
I write math books for fun as a way to consolidate and clarify my quantitative intuition. Despite no intentional search optimization, this content ranks in the top results for many common search queries. Some examples are provided below:
- "n-dimensional volume"
- "lagrange error bound proof"
- "polynomial asymptotes"
- "chain rule trick" / "quick chain rule"
- "limits by logarithms"
- "single-variable gradient descent"
- "drawing rotated graphs on calculator"
- "how to find the characteristic polynomial of a differential equation"
- "recursive sequence diagonalization"
- "solving differential equations by substitution"
- "linear regression with pseudoinverse"
- "magic square backtracking"
I also wrote hundreds of Math Academy's first lessons, which are admittedly much better scaffolded than anything I've written independently.
Minimalist Strength Training
Throughout high school, I started each morning by going down to the basement to lift weights for an hour. But this routine fell apart as my schedule became more hectic during and after college. Six years later, after losing all my strength and muscle mass, I set out to recover it.
While it wasn't feasible to recreate the old environment of a basement gym, I identified the key factors that led to success in that environment, and realized that they could be accomplished in a bedroom with gymnastic rings hanging from a pull-up bar.
Below are my goals:
- ✓ Phase 1: Get Ripped
- ✓ Phase 2: Build Mass
- ☐ Phase 3: Maximize Ring Hold Duration (front/back lever, planche, iron cross)
I worked hands-on with 300+ students over the course of a decade (2013-23) and have seen just about every single success/failure mode when it comes to learning math. After 2018 I focused on radically accelerated students studying high school and college math far above their grade level, e.g. AP Calculus BC in 8th grade.
My teaching years culminated in developing what was, during its operation from 2020-23, the most advanced high school math/CS sequence in the USA. Within a radically accelerated math program, I developed a quantitative computer science track that scaffolded high school students up to doing masters/PhD-level coursework (reproducing academic research papers in artificial intelligence). I worked with a handful of these students from 8th grade all the way until high school graduation, and it was incredibly rewarding helping them grow up and skill up.
At the same time, I've also had first-hand experience with general dysfunction surrounding education including misaligned students, cheating rings, confused/unreasonable parents, grade inflation & no-fail policies, and teacher credentialing & professional development that is centered around political ideology rather than the science of learning. I don't teach or tutor anymore, but more info is available here.
I taught myself guitar in high school and generally enjoyed making up my own stuff as opposed to playing existing songs. Things started to get interesting once I started recording many layers with a looper and arranging & adding effects in Audacity.
During college I started experimenting with music production in LMMS. This initially involved cutting up, stitching together, and overlaying a variety of interesting-sounding samples (sourced from looperman.com) to form a background, and then creating a melody from scratch using guitar or violin/cello, sometimes throwing in piano for bridges or general support.
Midway through college I became interested in film scoring and created an orchestral album fully from scratch. After that I created some more mainstream pieces including a remix as well as some pieces from scratch (melodic EDM and a beat).
While I enjoyed creating music, I ended up dropping it and leaning into math instead, which I personally found to be easier, just as much fun, and far more marketable. I don't create music anymore, but more info is available here.