Every once in a while, I write an introductory text on some topic that I like. This page contains some selections. Don't hesitate to email me if you find any typos or have questions—I try to respond quickly when I get emails from readers.

This is an introduction to Fourier series for people who haven't seen them before or those who have, but don't have a good intuition for them. I do my best to intuitively explain what fourier series are and why they are relevant. Along the way, we prove some powerful theorems and see some interesting applications.

Prior knowledge needed: An understanding of basic trigonometry, and the definitions of limits, integrals, derivatives, and continuity of a function.

Imagine dancing in a big group. How do you make a choreography where everyone dances with everyone exactly once? This turns out to be a mathematically interesting question. In this text, I explore this question. It's mostly diagrams and should be easy to read. I also made this animation as an illustration of the practical scheme I propose with 14 people.

Prior knowledge needed: None. Not even how to dance.

This is an explanation of semidirect products, a useful tool in abstract algebra. Instead of just giving the definition like most textbooks, I try to intuitively lead up to why the definition makes sense and explain how to think about semidirect products. In addition, I also give a few examples for how semidirect products can be used. This intro is likely a good read for someone who just finished a introductory abstract algebra class.

Prior knowledge needed: An understading of algebra terms like groups, homomorphisms, normal subgroups, and direct products.

This is a more complex exposition of Alexander Razborov's lower bound proof for monotone circuits. It's directed at people who have taken a complexity theory course or know what a circuit is. To write it, I read the same proof in many different sources, and built off of the best parts to create what I think is the most intuitive explanation.

Prior knowledge needed: Definition of circuits, some experience with complexity theory.

This is a proof of the Sunflower Lemma, which is a purely combinatorial result that has been of great interest to mathematicians and CS theorists. Anyone with basic math experience should be able to understand the proof. In fact, the previously listed intro uses this lemma, so it is directly inserted there. Note that this text doesn't have a nice introduction or motivation section like the others do.

Prior knowledge needed: Basic math, what is a set, proofs by induction.

This intro is good to read if you have siblings. It talks about how to divide a cake so that everyone is happy, but from a mathematical perspective. I made this with my friend Bharath, and the format is very casual and easy-to-read, with several complex proofs omitted. Anyone should be able to get something out of this paper.

Prior knowledge needed: None.

This is another fairly involved complexity topic. If you've taken a standard introductory course in theory of computer science, you should be able to understand this. This goes over Toda's theorem and some of its estuaries. We introduce something called counting classes and something called the BP operator and then we use them to prove a result that seems to have nothing to do with them.

Prior knowledge needed: Definitions of things like NP, PSPACE, and PH

Theoretical computer science has seen a lot of results that say if there exists a polynomial-time algorithm for something. That doesn't distinguish between linear and quadratic algorithms, for example. This intro gives an example of a hardness result that's more fine-grained than simply polynomial-time. This is a good read for beginning CS theory students.

Prior knowledge needed: Basic CS theory terms, P, NP, SAT.

Expanders are a very useful tool in both math and CS. This intro gives a look into what they are and some basic results about them. This text is for anyone who is comfortable with the word "graph".

Prior knowledge needed: Basic math, what is a set, proofs by induction.

This is a video and not a pdf. I talk about the math behing being able to save some money on sickness testing by having multiple people be combined in one test. This is presented in a way that's simple, but this is really an undercover error correcting codes problem. The solution uses Reed-Solomon codes undercover as "stacks".

Prior knowledge needed: Basic math, polynomails, modular arithmetic.