Advice For Students Who are Just Like Me

Recently I've been giving lots of advice to younger students, so I figure I'd collect some ideas here. First, I want to write a disclaimer that this is probably not advice for everyone, but mostly advice for people who are of similar backgrounds to me -- did math / cs contests in high school.

1. Don't look for challenges everywhere

I think among people with our background, there's often a desire to look for challenges, because challenging math problems are a lot more fun then easy ones. In fact there's an infamously difficult programming contest book called "Looking for a challenge", which I think captures well the ethos of those of us who love these contests.

But life is hard enough -- don't look for challenges where you don't need to! One particular unnecessary challenge that we often see is trying to get someone who does not like you to like you more. Generally you should allocate more social energy towards people who like you more, and pass on people who do not.

2. Don't just hone pattern-matching instincts; look for patterns

If we perceive thinking as a form of pattern matching, effectively linking new problems to previous ones, it becomes evident that two key elements are involved: exposure to a wide range of patterns and possessing general pattern matching ability. Both of these components hold significance.

Many colleges express their goal as "teaching you how to learn," which alludes to the latter aspect. However, I believe that, for many of us, the former is actually more important. It can be challenging for us since one reason why we might have pursued mathematics is likely due to its lower requirement for memorization compared to subjects like biology. Nevertheless, in the real world, it is crucial to build upon existing knowledge and expertise. The best approach is to strive for exceptional familiarity with the field of study we are interested in, encompassing all the intricate details and peculiarities.

3. Be Confident

Even if you are quite good at olympiads, chances are you've met a lot of people who are better than you at Olympiads. One takeaway you might have from this is that you are ordinary; you are not.

The world writ large deeply lacks people who are very good at math, and there are countless problems for which having one person look at it could change everything. Consider my work on Ecne -- a problem that targeted a very specific task in zk-SNARKs. This paper led to my giving a lecture at a graduate class, publication at a top conference, and lots of people reaching out -- but I think almost any of you could have done it!

Optimal True/False Grading

A trick I learned from Adam Hesterberg.


Problems run the gamut in difficulty. Some are very difficult, and even a slight step towards a solution is hailed as a breakthrough. Some are medium difficulty, and a moderate sized step is needed to be considered a breakthrough.

Finally, sometimes a problem is so easy that no one pays it any more mind, but the problem is still not closed completely.

Today, I'm going to explain an incredibly clever trick for grading True and False questions which belongs to the third category of these.


In Gradescope, a widely used piece of grading software, when grading a question you can type number keys (0, 1, 2,) to give points on a question. How do you grade a true / false problem which contains of 7 true or false questions.

The natural way is to assign +2 to each question, and give points to each item if you solve it. However, a better way is to give +2 for True, when the answer is True, and -2 for True when the answer is False. After adding a baseline score (to ensure that the score is right when all answers are False), this now lets one grade problem sets by simply pressing the digits corresponding to true answers.

The reason this is faster for humans (despite requiring, in theory, the same number of keystrokes) is that you don't have to store the answers in memory, and can just type the numbers corresponding to Trues.

It's a reminder that even things that are computationally identical to computers can be very different for humans. In terms of complexity theory, this algorithm allows for no memory requirements on the human's behalf.

Some FAQs

Why don't you use a scantron or a form? Gradescope is the dominant system, and while it does support true / false that would require a separate component.