The process of learning math involves mastering thousands of small skills. Khan Academy has exercises that help you practice the first 1500 or so of these skills. But as I discussed last week, the Khan Academy mastery system only gets you to an initial level of mastery. The topic for this week: how to continue using Khan Academy to increase your skill mastery after you have officially “mastered” the skill.
Archives for January 2019
Before learning discrete math, it’s useful to know how much other math you remember. Last week, I discussed how Khan Academy is uniquely useful for evaluating and improving your skills in math topics through Calculus. But eventually you might reach Mastery level in all Khan Academy math skills. Does that mean it’s time to move on? Not quite.
Math builds on itself, so trying to learn a math topic without first mastering its prerequisites is just asking for trouble. A good place to learn prerequisites is Khan Academy. Although it’s missing many advanced math topics, it covers the basics well. And the way it organizes practice problems ensures that you regularly get tested on the concepts you need the most practice with.
Competitive programming practice sites often organize problems by topic area. For example, uHunt has categories for graphs, string processing, dynamic programming, and many others. uHunt Chapter 5 covers topics in mathematics. Since math is a separate field from computer science and algorithms (though it’s closely related), I’m considering this week how it relates to competitive programming preparation.
Petr Mitrichev, legendary competitive programmer and current Google employee, didn’t major in computer science. He got a degree from Moscow State University in mathematics. In a Topcoder Spotlight Session in 2008, he answered a few questions about how math relates to competitive programming practice: