# ESP Biography

## ZIV SCULLY, MIT/Harvard Postdoc

Major: 18C

College/Employer: MIT

Year of Graduation: 2016

## Brief Biographical Sketch:

I like math and so can you!

## Past Classes

(Clicking a class title will bring you to the course's section of the corresponding course catalog)

M15527: Finite Automata in Spark 2023 (Mar. 18 - 19, 2023)
Would you like to find patterns in text? Prove your program doesn't have an infinite loop? Monitor a nuclear reactor? Find structure in DNA? In this class, you'll learn about finite automata. Finite automata, or "state machines" can be thought of as just moving a marker between some states according to some simple rules, but their simplicity hides deep mathematics and allows you to manipulate them in interesting ways. We'll start with the basic definition and take you through the math and into some powerful applications.

M15582: Demockracy in Spark 2023 (Mar. 18 - 19, 2023)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the US presidential elections in 2000 (or 1992, or 1912, or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but every voting system seems to be flawed in one way or another. You might ask: is there a "perfect" voting system out there? The answer: no! Come to this class to find out why.

M11988: Demockracy in Splash 2017 (Nov. 18 - 19, 2017)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

M11989: Calculate Pi with Trains! in Splash 2017 (Nov. 18 - 19, 2017)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Extra-Nice Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M11990: The Banach-Tarski Paradox: Speed Run! in Splash 2017 (Nov. 18 - 19, 2017)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun then this class is for you!

M11991: Queueing Theory: Who Should Go First? in Splash 2017 (Nov. 18 - 19, 2017)
Isn't it annoying when when you're at the grocery store and you have a reasonable number of things in your cart but the person in front of you in the checkout line is buying half the store? Wouldn't it be nice if they let you cut in front? Using queueing theory, a branch of mathematics that deals exactly with this sort of things, we'll find out that if the grocery store wants what's best for everyone, they should indeed let you cut ahead! We'll then see what happens when the problem gets more complicated, like when you don't know exactly how full someone's cart is, or when people can interrupt each other's checkouts even while they're in progress.

M11126: The Banach-Tarski Paradox: Speed Run! in Splash 2016 (Nov. 19 - 20, 2016)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun then this class is for you!

M11127: 2x2 = 4: The Hard Way in Splash 2016 (Nov. 19 - 20, 2016)
We're going to prove this deep and insightful theorem using the most abstractly nonsensical mathematical sledgehammer of them all: category theory! Category theory is when we draw letters on the board and then draw arrows between them such that certain nice things are true. Seems mostly harmless, doesn't it? Perhaps, but some point we'll need to prove that multiplication distributes over addition without accidentally proving that addition distributes over multiplication, too. This turns out to be pretty difficult :).

M11128: Calculate Pi with Trains! in Splash 2016 (Nov. 19 - 20, 2016)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Extra-Nice Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M11180: Demockracy in Splash 2016 (Nov. 19 - 20, 2016)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

C11181: Compilers Demystified in Splash 2016 (Nov. 19 - 20, 2016)
Chances are that if you've programmed something before that you used things like "variables", "functions", or "loops". But your computer's processor works in an entirely different way; it doesn't know what any of those things are. Compilers are the programs that translate nice-looking human-readable variabley-loopy code into processor-executable code. That translation seems at first glance like an unapproachably difficult task. In this class, we'll give an overview of how compilers work and see that they aren't so mysterious after all.

M11182: Queueueueues in Splash 2016 (Nov. 19 - 20, 2016)
It's possible to have a bus stop where buses come every 10 minutes on average, yet the average rider has to wait 20 minutes for a bus. It's possible to have a fair policy for waiting in line that involves people cutting. It's possible for a grocery store with many slow checkout lanes to be better than a store with one really fast checkout lane... and it's also possible for the one fast lane to beat the many slow lanes. Come learn about how each of these things is possible in this introduction to queuing theory!

M10429: Calculate Pi with Trains! in Spark 2016 (Mar. 12 - 13, 2016)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Extra-Nice Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M10220: The Mathematics of Very Stupid Programming Languages in HSSP Spring 2016 (Feb. 20, 2016)
This is a mathy class about the theory of computation. We'll learn about all sorts of systems that are as (theoretically) powerful as the programming languages used in the computer you're using to read this very text. Each system is interesting in its own way, and we'll spend some time figuring out how to do complex computation in what are essentially Very Stupid Programming Langages (VSPLs, for short). The class will cover some technical math things, like Turing machines and $$\lambda$$-calculus. It will also cover some things that at first glance seem less technical, like making tilings with colorful squares and the word "heterological".

C9830: Learn Every Programming Language in Splash 2015 (Nov. 21 - 22, 2015)
Ever wanted to learn how to program, but weren't sure which language to learn? Try learning ALL of them! Or, at least a few during this quick class, as we compare and contrast Java, Python, Haskell, and more!

M9973: Calculate Pi with Trains! in Splash 2015 (Nov. 21 - 22, 2015)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Freshman Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M9974: Demockracy in Splash 2015 (Nov. 21 - 22, 2015)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

M9975: 2x2 = 4: The Hard Way in Splash 2015 (Nov. 21 - 22, 2015)
We're going to prove this deep and insightful theorem using the most abstractly nonsensical mathematical sledgehammer of them all: category theory! Category theory is when we draw letters on the board and then draw arrows between them such that certain nice things are true. Seems mostly harmless, doesn't it? Perhaps, but some point we'll need to prove that multiplication distributes over addition without accidentally proving that addition distributes over multiplication, too. This turns out to be pretty difficult :).

M9976: The Banach-Tarski Paradox: Speed Run! in Splash 2015 (Nov. 21 - 22, 2015)
Have you ever found yourself with a sphere, a very sharp knife, and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun, then this class is for you!

C9978: Do-it-yourself Programming Language Walkthrough in Splash 2015 (Nov. 21 - 22, 2015)
Come learn the basics of how interpreters are made. From start to finish, we'll walk through the implementation of a simple programming language. As a completely intended side effect, we'll also learn about functional programming, a style of programming that lends itself particularly well to this sort of task.

M9162: Your Face is a Vector in HSSP Spring 2015 (Feb. 21, 2015)
"Hey, do you remember how to take the cross product of two vectors?" "No, but you're a vector." "Your mom's a vector." "Your face is a vector." "Right you are!" —Overheard conversation between tired math majors Linear algebra might just be the most important piece of mathematics ever to grace humanity's chalkboards. It has an elegant theory and a plenitude of applications, both in further abstract theory and matters of genuinely practical importance. Ergo, I thought it'd be pretty cool to teach a class on it. Amongst our activities will be such diverse elements as automatically filtering spam email, winning a difficult card game, counting paths in a network, and writing a facial recognition program—at which point it will be brought to light the way in which your face is a vector.

X9431: Hands-on Teaching Lab in HSSP Spring 2015 (Feb. 21, 2015)
You're an HSSP student... do you want to be an HSSP teacher, too? This is an experimental program where you get to teach younger HSSP students, instead of taking a class this block. This is NOT a regular HSSP class. We will train you and help you brainstorm your classes, but for the majority of HSSP you get to teach anything you want! IMPORTANT: Enrollment in this class is by application-only. To apply, send an email to spring-hssp@mit.edu and tell us why you want to take this class and any ideas you have for classes (none is also okay!). You do not have to sign up here -- we'll enroll you if your application is accepted.

M9398: Demockracy in Spark 2015 (Mar. 14 - 15, 2015)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

M9399: Calculate Pi with Trains! in Spark 2015 (Mar. 14 - 15, 2015)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Extra-Nice Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

E9402: Robots: In and Out of Control in Spark 2015 (Mar. 14 - 15, 2015)
As anyone who's seen a sci-fi movie in the past 20 years would probably guess, the robot apocalypse is scheduled for some time next Tuesday afternoon. Fortunately, robot uprisings are pretty difficult to make happen. Any proper rogue robot has to do basic things like move from one point to another or turn to face a target. These things turn out to be pretty hard. We're going to learn about why robot control is a hard problem, and then we'll see some of the neat ways to solve it! Warning: we might need to use... *shudder*... math!

M9405: Provably Impossible Things in Spark 2015 (Mar. 14 - 15, 2015)
You can't make an infinite list of all the numbers between 0 and 1. You can't write a program that checks if a program will crash. You can't comb a hairy sphere without there being a part somewhere. Lot's of things are difficult. Some things are pretty much impossible. But we don't care about those. In this class, we're going to make three wishes. Unfortunately, not only will we not get our wishes, but all of our wishes are provably impossible! As consolation we'll figure out the proofs for each.

C9420: Computer Architecture: Speed Run! in Spark 2015 (Mar. 14 - 15, 2015)
We're going to start with transistors—electrical components that act kind of like switches—and build up from there to get as close to a designing a real live computer as we can. We're going to create structures that can make complicated logical decisions. We're going to draw a circuit on the board that can add numbers. We're might even go over the design of a fully functional processor. It'll be a party. No experience required!

X8562: This is Secretly a Math Class About Infinity in Cascade Fall 14 (Oct. 09, 2014)
Here's the plan: 1) We're going to catch a (well-behaved) frog with our eyes closed. 2) We're going to figure out how steep a curvy slope is. 3) We're going to find a way to win a game that literally takes forever to finish. 4) We're going to realize that Hercules can kill a monstrous Hydra even if he has a really silly strategy. Here's the secret part: the whole time, without even realizing it, you'll be learning math! Bwahahahaha! But seriously, there's a lot more to math than adding fractions and solving for x. We're going to learn about one of the coolest ideas in math: infinity, which is (secretly, of course) related to each step of the plan. If you don't like math in school (or even if you do), this class is for you!

M8543: 2x2 = 4: The Hard Way in Splash 2014 (Nov. 22 - 23, 2014)
We're going to prove this deep and insightful theorem using the most abstractly nonsensical mathematical sledgehammer of them all: category theory! Category theory is when we draw letters on the board and then draw arrows between them such that certain nice things are true. Seems mostly harmless, doesn't it? Perhaps, but some point we'll need to prove that multiplication distributes over addition without accidentally proving that addition distributes over multiplication, too. This turns out to be pretty difficult :).

M8544: The Banach-Tarski Paradox: Speed Run! in Splash 2014 (Nov. 22 - 23, 2014)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun, then this class is for you!

M8545: Demockracy in Splash 2014 (Nov. 22 - 23, 2014)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

C8546: Computer Architecture: Speed Run! in Splash 2014 (Nov. 22 - 23, 2014)
We're going to start with transistors—electrical components that act kind of like switches—and build up from there to get as close to a designing a real live computer as we can. We're going to create structures that can make complicated logical decisions. We're going to draw a circuit on the board that can add numbers. We're might even go over the design of a fully functional processor. It'll be a party. No experience required!

M8547: Calculate Pi with Trains! in Splash 2014 (Nov. 22 - 23, 2014)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Freshman Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M8548: Donuts Aren't Spheres in Splash 2014 (Nov. 22 - 23, 2014)
Do you know that a donut isn't a sphere? Probably. Can you prove that there's no way to squish a sphere into a donut without tearing it? After this class you will! Come get a taste of an exciting field of math: algebraic topology! We'll use the same techniques we develop studying donuts to prove a few other cool results. One example: if you drop a world map on the ground, there is some point on the map that is at the same location on the map and in real life.

C8918: Write a Sudoku Solver in Splash 2014 (Nov. 22 - 23, 2014)
There's this really cool programming language called Haskell. We could spend a while going over all of its features, slowly and rigorously introducing the language. Alternatively, we could jump in and write a Sudoku solver. I like being alternative, but we'll have to move real fast. It's gonna be wild.

M8930: Can We Build It? Math Edition in Splash 2014 (Nov. 22 - 23, 2014)
You fancy schmancy kids have so much technology: fractions, exponential functions, coordinate planes, and all that mumbo jumbo. Back in my day we had the empty set and a few axioms of set theory, and we managed just fine with that. That's right: we built all of mathematics out of sets, and you know what? If you come to this class, I just might show you how....

M9035: Just Enough Math to Pretend You're a Math Major in Splash 2014 (Nov. 22 - 23, 2014)
Maybe you don't like math in school. Maybe you think math in school is pretty okay but haven't seen much more than that. Maybe you have an intimidatingly clever friend who knows a thing or two about * how many prime numbers there are (hint: a lot), * how many real numbers there are (hint: even more), * figuring out the day of the week an arbitrary date was on, * simple-sounding math questions that literally no computer ever can or will answer, * saving infinitely many prisoners from guessing their hat color incorrectly by using some controversial set theory, and maybe even a few other things. Maybe there's a Splash class you can take that will introduce some of that stuff and give you a taste of what math outside of high school is like. Maybe you should take it. Maybe it will be fun.

C8367: Computer Architecture Speed Run! in Spark 2014 (Mar. 15 - 16, 2014)
We're going to start with transistors—electrical components that act kind of like switches—and build up from there to get as close to a designing a real live computer as we can. We're going to create structures that can make complicated logical decisions. We're going to draw a circuit on the board that can add numbers. We're might even go over the design of a fully functional processor. It'll be a party. No experience required!

M8368: Demockracy in Spark 2014 (Mar. 15 - 16, 2014)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

M8369: The Craziest Math Class East of the Mississippi in Spark 2014 (Mar. 15 - 16, 2014)
Sometimes people ask me, "Why is math fun?" This class is why. Here are some things we might do: -Describe a computer program that is impossible to write. -Show that there are different sizes of infinity by playing a game. -Save infinitely many monkeys from an evil wizard using some tricky set theory. -Prove the awkwardly-named "hairy ball theorem", which says that it's impossible to perfectly comb a hairy ball. -Run out of time :).

M8370: #winning in Spark 2014 (Mar. 15 - 16, 2014)
Do you like winning? I like winning. In particular, I like games where I can figure out a winning strategy with a little bit of logical thinking. We'll eventually find that lots of games can be nicely analyzed by thinking of them as numbers. Then something really weird happens: we can go the other way. Numbers, it turns out, can be thought of as games!

M8393: Calculate Pi with Trains! in Spark 2014 (Mar. 15 - 16, 2014)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Extra-Nice Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M8402: What Does "Continuous" Mean? in Spark 2014 (Mar. 15 - 16, 2014)
How do we take an intuitive concept—the fact that you can draw a line without picking up your pencil—and define it in terms math? How can we take an apparently obvious fact—the fact that a circle has an inside and an outside—and formally prove it? Extremely carefully. We're going to do a whole lot of work to get a definition for a property that a four-year-old could identify: when a curve on a plane is "continuous", that is, has no gaps, jumps, holes, or anything like that. This is the first step towards rigorously proving some remarkable things, which we'll talk about as time allows. Some of these things are also at four-year-old obviousness levels, while others are surprising enough that you might not believe them at first!

C8182: How Processors Work in HSSP Spring 2014 (Mar. 01, 2014)
We're going to start with some simple electronic components called transistors. With transistors, we can make circuits called logic gates. With logic gates, we can make slightly more complicated components, such as multiplexers, adders (yes, we're going to draw a circuit diagram that can do math!), and registers. With multiplexers, adders, and registers, we can make a processor. Yep, really. Right there on the chalkboard will be a diagram of an actual processor that does everything the processor powering whatever electronic device you're reading this text on can do, and by the end of the course, you'll know exactly how it works!

C8199: Learning Programming Through Haskell in HSSP Spring 2014 (Mar. 01, 2014)
Let's say you're in math class, and you're supposed to be solving an equation, but rather than find out how old Bill is who will be twice as old as Mary in seven years you'd prefer to think about how in seven years you'll have taken over the entire world and surely equations won't get you any closer to world domination... Enter computer programming, also known as writing equations for world domination. This course will be a fast-paced introduction to programming. We'll be using Haskell, a purely functional programming language with nice properties that let us reason about our programs as if they were mathematical equations. We'll learn how these properties make it a great programming language and how we can write programs in Haskell that solve real problems. This is intended to serve as a first course in programming; no programming experience is necessary.

M7390: The Banach-Tarski Paradox: Speed Run! in Splash! 2013 (Nov. 23 - 24, 2013)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun, then this class is for you!

M7391: Demockracy in Splash! 2013 (Nov. 23 - 24, 2013)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

C7392: Write a Sudoku Solver in Splash! 2013 (Nov. 23 - 24, 2013)
There's this really cool programming language called Haskell. We could spend a while going over all of its features, slowly and rigorously introducing the language. Alternatively, we could jump in and write a Sudoku solver. I like being alternative. It's gonna be wild.

M7393: #winning in Splash! 2013 (Nov. 23 - 24, 2013)
Do you like winning? I like winning. In particular, I like games where I can figure out a winning strategy with a little bit of logical thinking. We'll eventually find that lots of games can be nicely analyzed by thinking of them as numbers. Then something really weird happens: we can go the other way. Numbers, it turns out, can be thought of as games!

M7394: The Craziest Math Class East of the Mississippi in Splash! 2013 (Nov. 23 - 24, 2013)
Sometimes people ask me, "Why is math fun?" This class is why. Here are some things we might do: -Describe a computer program that is impossible to write. -Show that there are different sizes of infinity by playing a game. -Save infinitely many monkeys from an evil wizard using some tricky set theory. -Prove the awkwardly-named "hairy ball theorem", which says that it's impossible to perfectly comb a hairy ball. -Run out of time :).

M7395: Calculate Pi with Trains! in Splash! 2013 (Nov. 23 - 24, 2013)
It turns out that you can calculate pi to very high accuracy by bouncing a small train and a big train into a wall. Come on a journey through Freshman Physics Land (where there's no friction and all collisions are perfectly elastic) to see how it works!

M7457: How Not to Not Kill a Hydra in Splash! 2013 (Nov. 23 - 24, 2013)
Suppose Hercules sets out to battle a Hydra. Hercules knows that if he plans out the battle and chops the heads off in the right order, victory is assured. However, this time Hercules is short on cash, so he's planning to throw the battle as part of a lucrative betting scandal. But the math is not on Hercules's side! It turns out that no matter how terribly Hercules tries to fight, he's guaranteed to kill the Hydra in a finite amount of time! We'll prove this and show how it's related to the fact that a sequence (called a Goodstein sequence) whose first three terms are 42, 22 trillion, and 10^154 eventually settles 0.

M7816: 2x2 = 4: The Hard Way in Splash! 2013 (Nov. 23 - 24, 2013)
We're going to prove this deep and insightful theorem using the most abstractly nonsensical mathematical sledgehammer of them all: category theory! Category theory is when we draw letters on the board and then draw arrows between them such that certain nice things are true. Seems mostly harmless, doesn't it? Perhaps, but some point we'll need to prove that multiplication distributes over addition without accidentally proving that addition distributes over multiplication, too. This turns out to be pretty difficult :).

S7312: AP Physics C in Delve Fall/Spring 2013-14 (Sep. 15, 2013)
This course prepares students to take the AP Physics C exam in the spring.

M7244: What is Math Research? in HSSP Summer 2013 (Jul. 07, 2013)
Wait, what? Math research? That's a thing? Sure, we can find new species in unexplored areas of the ocean, or we can figure out new mechanisms in biology, or physicists can deduce the existence of a new particle, but discovering new math? Is that even possible? Yep! In this class, we'll learn about a recent mathematical discovery in something called the parallel chip-firing game. We'll recreate the journey* from being totally clueless to discovering a theorem that nobody had proven before! This will include examining what's already known, figuring out what questions are both interesting and approachable, using hunches to find a proof, and, most importantly, pacing back and forth for several hours without making much progress. It'll be fun! This discovery is very new, so by the end of the course, you'll know something only a handful of people on the planet know! *Having been on said journey the first time around, the teacher of this class is well qualified to recreate it.

M6930: Introduction to Actually Cool Math in HSSP Spring 2013 (Mar. 02, 2013)
School math classes are boring. Actually cool math is over 9000 times M04R AVV35UM! Slightly more seriously now: you've probably never had a math class in school that didn't use numbers. But when the numbers disappear, the fun begins! In this class, we'll take a tour through three topics that make up an introduction to the abstract, beautiful world of actually cool math. - We'll talk a bit about infinity and why I should probalbly write "infinities" instead. - We'll talk about group theory, the study of symmetry of objects real and too-many-dimensional to be real. - We'll talk about linear algebra, which is introduced in school as a mundane tool for solving systems of equations but has a secret double life as a way to prove some very pretty results in very pretty ways. - Finally, we'll put it all together and talk about the Banach-Tarski paradox, which is a seriously strange but awesome theorem. Come join us! It'll be cool! Actually!

M6988: The Banach-Tarski Paradox: Speed Run! in Spark! 2013 (Mar. 16, 2013)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun, then this class is for you!

M7065: The Most Overpowered Programming Language in Spark! 2013 (Mar. 16, 2013)
You may (or may not) have heard of object oriented programming (abbreviated OOP). But wouldn't you rather your programming language be overpowered (abbreviated OP)? Come learn about Haskell, which is not at all OOP but totally OP! You can make an infinite list of prime numbers, define your very own algebraic data types, win all sorts of (combinatorial) games with the same piece of code, and even print "Hello, world!" to the screen. Don't worry if you don't know what all of those words mean yet—come find out!

M7068: How to Teach This Class (and Why Math Can't be Perfect) in Spark! 2013 (Mar. 16, 2013)
So I should probably call this class "How to Teach a Class Called 'How to Teach This Class'", but that's kind of wordy. We're going to start by studying the problem of programs referring to themselves. We'll start by rigorously defining "program", then we'll look at two problems: 1) How do we make a recursive program? (For example, to calculate factorials, we want $$f(n) = n \times f(n-1)$$.) 2) Can we make a program that prints its own code? (This is where we learn how to teach "How to Teach This Class".) Surprisingly, the tools we need to solve these will also allow us to prove a disturbing theorem about the incompleteness of mathematics!

M7069: Putting the "Mock" in "Democracy": A Taste of Voting Theory and Arrow's Impossibility Theorem in Spark! 2013 (Mar. 16, 2013)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!

M6247: The Banach-Tarski Paradox in Splash! 2012 (Nov. 17 - 18, 2012)
Have you ever found yourself with a sphere, a very sharp knife and an Axiom of Choice when all you wanted was a second sphere? Have you ever wondered why everyone's favorite anagram of "Banach-Tarski" is "Banach-Tarski Banach-Tarski"? Come learn about and prove this surprising theorem: a ball can be split into a finite number of pieces that can be rearranged to make two copies of the original ball! We're covering a few hours' worth of material in 50 minutes, so if that's your idea of fun then this class is for you!

M6249: Putting the "Mock" in "Democracy": A Taste of Voting Theory and Arrow's Impossibility Theorem in Splash! 2012 (Nov. 17 - 18, 2012)
Having a fair election with two candidates is pretty simple: everyone votes for their favorite candidate and whoever gets the most votes wins. However, as anyone who was around for the presidential elections in 2000 (or 1912... or 1860) will tell you, things get complicated with three or more candidates. It's sometimes the case that you should vote for a candidate you think is likely to win instead of a fringe candidate you agree with more. We can think of different voting systems that try to get around this and other problems, but as we'll explore in class, no voting system avoids all potential flaws. You might ask: is there a "perfect" voting system out there? Actually, it turns out there is one. It's called a dictatorship. And unless you have an infinite number of voters, no other system is "perfect". Come find out why!