ESP Biography
JOSH ALMAN, Theoretical Computer Scientist
Major: 6 College/Employer: MIT Year of Graduation: G 

Brief Biographical Sketch:
Hi! Past Classes(Clicking a class title will bring you to the course's section of the corresponding course catalog)M13360: Term Rewriting and Gröbner Bases in Splash 2019 (Nov. 23  24, 2019)
Solving systems of linear equations is easy. How about systems of polynomial equations?
We're not really going to teach you that. Instead, we're going to teach you about Gröbner bases, a crazy way of representing spaces of polynomials, which also gives the ability to solve polynomial equations.
Actually, we're not going to really teach you that either. Instead, we're going to go into a separate branch of mathematics called Term Rewriting and teach you about KnuthBendix Completion, a "metaalgorithm" which can take definitions of equality and give you an algorithm for telling whether two things are equal. We'll present Gröbner Bases as a special case of KnuthBendix Completion. We might even have time to solve a polynomial equation or two!
M13567: Which Numbers Have Short Descriptions? in Splash 2019 (Nov. 23  24, 2019)
We will be exploring the question "which numbers have short descriptions?"
To look at this question, we will first talk about what this means. For example, 123 has a short description because it has few digits. But, 10^100 has a short description even though it has many digits!
One way we like to try to give really short descriptions of numbers is by writing computer programs which write these numbers for us! After talking about this, we will discuss some of the cool things we can say about numbers and computer programs that write them.
M13637: Games of Math in Splash 2019 (Nov. 23  24, 2019)
You might think that you don't need to know any math in order to beat your friends at games. But, you're wrong! Come learn everything you need to know to win at every game.
M13641: Infinity in Splash 2019 (Nov. 23  24, 2019)
Is infinity a number? Can I take infinitely many steps toward my destination and never get there? Are some infinities bigger than others? Come learn about the powerful and confusing nature of infinity!
M12892: Finite Automata in Spark 2019 (Mar. 16  17, 2019)
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.
M12971: Games of Math in Spark 2019 (Mar. 16  17, 2019)
You might think that you don't need to know any math in order to beat your friends at games. But, you're wrong! Come learn everything you need to know to win at every game.
M12990: Infinity in Spark 2019 (Mar. 16  17, 2019)
Is infinity a number? Can I take infinitely many steps toward my destination and never get there? Are some infinities bigger than others? Come learn about the powerful and confusing nature of infinity!
M11933: That's So Random in Splash 2017 (Nov. 18  19, 2017)
What does it mean to be "random"? Is the world inherently deterministic or random? Many fields of study including statistics, physics, computer science, and philosophy have tried to answer these questions in many different ways. While randomness is frequently viewed as a source of uncertainty, are there ways we can leverage randomness to our advantage? In this course, we will survey various attempts to answer these questions and more, discussing definitions of randomness, algorithmic and cryptographic applications of randomness, and the existence of randomness in the real world.
M11935: Games of Math in Splash 2017 (Nov. 18  19, 2017)
You might think that you don't need to know any math in order to beat your friends at games. But, you're wrong! Come learn everything you need to know to win at every game.
M11419: Compassandstraightedge constructions in Spark 2017 (Mar. 11  12, 2017)
Today, people can use computers to draw fancy graphics. Back in the day, the ancient Greeks could only use a compass (to draw circles) and a straightedge (to draw straight lines). They nonetheless managed to draw a lot of things! Come learn to draw like the ancient Greeks!
A11423: Make your own Sushicats in Spark 2017 (Mar. 11  12, 2017)
Sushicats are mythical beings said to bring good fortune. In this class we will be making our own sushicats out of air dry clay. Do not attempt to eat the sushicats. Sushicats are friends, not sushi.
You can learn more about sushicats here: https://www.youtube.com/watch?v=jPhbVTf52Go
M7533: Cryptography Role Play in Splash! 2013 (Nov. 23  24, 2013)
Crypto isn't just for computers! In this class, we'll try to tell each other secrets while our classmate (and nemesis) Eve listens in.
M7534: Automata and Languages in Splash! 2013 (Nov. 23  24, 2013)
Come learn about the fundamentals of finite automata! These are interesting in their own right, and also have applications to languages  both computer languages, and the languages people speak. These will also be a bunch of fun puzzles!
M7535: Integers! in Splash! 2013 (Nov. 23  24, 2013)
Say I give you a sequence of numbers, defined by $$ x_1 = x_2 = x_3 = x_4 = 1 $$ and $$ x_n = \frac{x_{n1} x_{n2} + x_{n2}^2}{x_{n4}} $$ for $$ n \geq 5 $$. A priori, this is a sequence of rational numbers, since we divide by an earlier term at each step. But, if we compute the terms, they turn out to all be integers!
Come learn about sequences that don't seem like they should consist of integers, but do.
M7572: Extreme Math in Splash! 2013 (Nov. 23  24, 2013)
This class is mostly an excuse for us (the teachers) to watch you (the students) flail while you try to solve tricky math problems on the spot.
This is how it will work. We will give you a math problem, and you’ll have to immediately present a solution on the blackboard. You’ll have up to eight minutes to present your proof, but you need to continuously be presenting. Then our panel of judges will award you a score based on how correct, confusing, and amusing your solution was. There may or may not be teams, depending on how many students we get.
M7886: Ask anything about math! in Splash! 2013 (Nov. 23  24, 2013)
Come ask all the math questions you've been dying to have answered to a panel of MIT math majors! We'll answer anything from conceptual questions (what are Lagrange multipliers?) to computational questions (how do I compute this integral?) to philosophical questions (what is math?)!
We'll have teachers studying all areas of math, so hopefully we can answer any (reasonable) questions you throw at us.
M8071: Young Tableaux in Splash! 2013 (Nov. 23  24, 2013)
Young Tableaux are a ubiquitous combinatorial object. They arise in the theory of symmetric functions, representation theory, and more! Come learn all about them.
M6873: Cryptography, Information, and Complexity in HSSP Spring 2013 (Mar. 02, 2013)
This class will cover varying topics ranging across theoretical computer science. Some topics include:
 Cryptography, or, how to tell secrets
 Information Theory, or, how to measure randomness
 Complexity Theory, or, why can't your computer do everything
 Algorithms, or, how does your computer do everything
X7104: Pathery in Spark! 2013 (Mar. 16, 2013)
Pathery is a tower defense  without the towers, or the defense! Come learn to play this awesome puzzle game!
M7137: Extreme Math in Spark! 2013 (Mar. 16, 2013)
We did this for Splash and some people seemed to like it, so we're doing this again:
This class is mostly an excuse for us (the teachers) to watch you (the students) flail while you try to solve tricky math problems on the spot.
This is how it will work. We will give you a math problem, and you’ll have to immediately present a solution on the blackboard. You’ll have up to eight minutes to present your proof, but you need to continuously be presenting. Then our panel of judges will award you a score based on how correct, confusing, and amusing your solution was. There may or may not be teams, depending on how many students we get.
M7138: Computational Language Theory in Spark! 2013 (Mar. 16, 2013)
Languages are defined by the grammars that generate them. One day, Noam Chomsky made a hierarchy of different languages based on what kinds of rules can be used in their grammars. This ended up having important consequences in many fields, especially Linguistics and Computer Science.
Come learn about the finite automata that generate the languages we speak, and the languages computers speak, and play around with some fun puzzles.
Please note: we will be doing math in this class!
C7142: Acing the SAT in Spark! 2013 (Mar. 16, 2013)
Come learn about various methods designed to tackle SAT problems.
We will learn about methods used by current SAT solvers. If there is time, we will also discuss variants on SAT like 2SAT, MAXSAT (approximations), and #SAT.
M5670: Computational Language Theory in Spark! 2012 (Mar. 10, 2012)
Languages are defined by the grammars that generate them. One day, Noam Chomsky made a hierarchy of different languages based on what kinds of rules can be used in their grammars. This ended up having important consequences in many fields, especially Linguistics and Computer Science.
Come learn about the finite automata that generate the languages we speak, and the languages computers speak, and play around with some fun puzzles.
Please note: we will be doing some math in this class!
M5769: Coloring in Spark! 2012 (Mar. 10, 2012)
As math majors, we don't know how to color in the lines. However, we do know how to color within figurative theoretical lines. Come learn how.
M5892: Extreme Math in Spark! 2012 (Mar. 10, 2012)
We did this for Splash and some people seemed to like it, so we're doing this again:
This class is mostly an excuse for us (the teachers) to watch you (the students) flail while you try to solve tricky math problems on the spot.
This is how it will work. We will give you a math problem, and you’ll have to immediately present a solution on the blackboard. You’ll have up to eight minutes to present your proof, but you need to continuously be presenting. Then our panel of judges will award you a score based on how correct, confusing, and amusing your solution was. There may or may not be teams, depending on how many students we get.
M4919: How to Cut a Cake in Splash! 2011 (Nov. 19  20, 2011)
Say your friend Josh and you (Leon) want to share a particularly moist cake. However, neither of you trusts the other, due to various altercations in your sordid past. Is there any way to resolve this situation, in a manner that satisfies both parties?
What if Josh likes icing more than Leon, but Leon really wants the strawberry on top? Can we ensure that neither prefers the other's piece to their own? What if their friend Ian wants in on the action?
Come think about cake.
M4937: Matching People in Splash! 2011 (Nov. 19  20, 2011)
Matching can be hard!
Say n men and n women want to get married. They each give you a ranking of the people of the other gender. Will you always be able to pair them off so that there is no man and woman who would rather marry each other than the partners you give them?
What if each gives you a list of people of the other gender that they are willing to marry? When can you pair everyone up with someone they are willing to marry?
What if some now include people of the same gender in their list?
Come match people!
M5089: My Little Set: Compactness is Magic in Splash! 2011 (Nov. 19  20, 2011)
Ready to analyze? We are. Free rigor included! We'll cover some of the basics of real analysis, such as ordered fields, Dedekind cuts, and pointset topology.
M5278: Computational Language Theory in SPICY Delve 2011 (Oct. 23, 2011)
Languages are defined by the grammars that generate them. One day, Noam Chomsky made a hierarchy of different languages based on what kinds of rules can be used in their grammars. This ended up having important consequences in many fields, especially Linguistics and Computer Science.
Come learn about the languages we speak, and the languages computers speak, and play around with some fun puzzles.
M4768: Puzzles in Combinatorics in HSSP Summer 2011 (Jul. 10, 2011)
You might think you know how to count. Maybe you can even solve sudokus pretty quickly, or have never lost a game of Mastermind. But, can you count the number of ways to place 16 kings on a chess board so that no two are threatening each other? Do you know how to make sure that a sudoku has a unique solution? Can you always win Mastermind in the least possible number of moves?
If not, come to this class! Each class, we'll spend about half the time developing some ideas in combinatorics, the area of math where we count things, and determine other properties of our countable things. Then, we'll spend the other half solving problems and puzzles using tricky arguments, keeping these ideas in mind. Come expecting to problem solve, learn, and have fun!
Topics to include:
Introduction to combinatorics; permutations, combinations, the principle of inclusionexclusion, and probability
Tricky applications of simple ideas; the pigeonhole, invariance, extremal, and coloring principles
Combinatorial Identities; bijections, doublecounting, and induction
Sequences and series; recurrences, calculus of polynomials, and generating functions
Introduction to graph theory; Eulerian and Hamiltonian paths, flows and cuts, and matchings
More graph theory; planarity, coloring, and Ramsey theory
Burnside's lemma and Polya counting theory. Combinatorial game theory
M4748: Storytime with Josh in ESPrinkler Summer 2011 (Jul. 10  Aug. 21, 2011)
Come listen to, and participate in, some interactive stories! We'll work as a team to help Grok the Ogre with his worm problem, save some campers from rampaging bears, and help the characters out with all the other dilemmas they encounter in their adventures!
X4840: The Wikipedia Game in ESPrinkler Summer 2011 (Jul. 10  Aug. 21, 2011)
Navigating Wikipedia can be hard when all that's available to you is the links within the articles. Come learn to play, and win, a really fun game!
M4561: Counting with Bijections in Spark! 2011 (Mar. 12, 2011)
Counting can be really hard. For instance, say we wanted to find the number of nondecreasing sequences of positive integers of length n, whose ith term is at most i. Counting these with "normal" methods would require solving annoying recurrence relations or breaking the problem into a huge number of cases for big enough n (try it!). However, if we could somehow find a set with equally as many elements as the set of such sequences, but that is easier to count, it would make our task much simpler. This method almost always involves cool insights and very elegant ideas, and although combinatorial in nature, it can extend to other areas of math in surprising ways. In this class, we'll count the sizes of some sets and prove some identities, including relations involving Fibonacci numbers. We will also use exclusively bijective means to prove Fermat's Little Theorem.
W4643: RockScissors, and other interesting games in Spark! 2011 (Mar. 12, 2011)
RockScissors is a 2person game. The players face each other, and begin by exclaiming “Rock! Scissors!” while raising one hand in a fist, and swinging it at each word. Then, they cry out “Shoot!” and each player either leaves her hand in a fist, signifying rock, or extends her index and middle fingers, signifying scissors. If both players make the same move, then the result is a tie, but if not, then the player who uses rock wins. This may seem like a silly game at first, but under the right circumstances, it might not always be best to use rock. Come play rockscissors and other such games, and learn strategies to beat all your friends!
M4644: Mathemagical puzzles, games, and diversions in Spark! 2011 (Mar. 12, 2011)
You might think that you need to know a lot of math to be able to enjoy a Spark math class. But, you're wrong!! Come to this class, where we'll see lots of cool stuff and have no prereqs. There will be lots of happiness involved.
X4510: STEAM Lecture Series in HSSP Spring 2011 (Feb. 19, 2011)
Do you think you might want to be an engineer, mathematician or scientist, but don’t know much about they do? Keep reading!
Each week, a different teacher will speak about a topic in Science, Technology, Engineering, or Applied Mathematics (STEAM). In the past, topics have ranged from bioengineering to game theory, offering a mixture of lecturebased and activitybased classes.
The following will be offered (subject to change):
Chaos Theory
Introduction to Topology
Feynmanomena
Aero/Astro Engineering
This series is designed to touch upon topics  there is no need to worry about overwhelming jargon and math will be kept at a basic level!
X4511: Weekly World News in HSSP Spring 2011 (Feb. 19, 2011)
Are you not content with just "living your life", oblivious to the terrors happening around the world every day? Have no fear! This class will cover the past week's world news, keeping YOU updated!
Each week's class will be taught by a different teacher and will cover different areas of interest.
X4512: ESPrinkler in HSSP Spring 2011 (Feb. 19, 2011)
During the third block, middle school students are given the opportunity to participate in ESPrinkler, a miniprogram that consists of several oneshot (Splashstyle) classes each week, including:
Improv Acting Activities
Engineering Challenges
Capture the Flag!
While you don't have to individually register for each activity, you must register for this course (ESPrinkler) to partake in the different activities offered every week!
S4056: Maxwell's Equations for Dummies in Splash! 2010 (Nov. 20  21, 2010)
Have you ever wondered how bullet trains levitate? What about how light bulbs work? Or why standing in a metal cage will protect you from lightning? Well, we're not going to tell you, but, we'll give you the theoretical background to figure it out. Maxwell's Equations explain how EVERYTHING to do with electromagnetism works. You might even learn some multivariable calculus on the side. Don't worry, it won't be too painful.
H4061: Canada, and why you shouldn't live there in Splash! 2010 (Nov. 20  21, 2010)
Canada, eh?
X4208: The Wikipedia Game! in Splash! 2010 (Nov. 20  21, 2010)
One day in an especially boring chemistry class, you're distracting yourself by reading up on your favorite Italian composer, gambist, and singer, Claudio Monteverdi. Then, out of the corner of your eye, you see your chemistry teacher approaching! Quick! You have to get back to the page on polytetrafluoroethylene, which you're supposed to be reading. But, your laptop's keyboard is broken, the disambiguation pages and pages about years have recently been deleted, and the navigation bar on the left of the page has been eaten by bears! The only way to get to the page you want is by using links to travel from one page to another!
Come play the Wikipedia Game, and practice dealing with this real life situation!
W4209: RockScissors, and other interesting games in Splash! 2010 (Nov. 20  21, 2010)
RockScissors is a 2person game. The players face each other, and begin by exclaiming “Rock! Scissors!” while raising one hand in a fist, and swinging it at each word. Then, they cry out “Shoot!” and each player either leaves her hand in a fist, signifying rock, or extends her index and middle fingers, signifying scissors. If both players make the same move, then the result is a tie, but if not, then the player who uses rock wins.
This may seem like a silly game at first, but under the right circumstances, it might not always be best to use rock. Come play rockscissors and other such games, and learn strategies to beat all your friends!
