Monday, November 17, 2014

Algorithms on Khan Academy, a collaboration with Dartmouth College professors

What is an algorithm? It’s a sequence of steps that you follow to solve a problem. In everyday life, you might have an algorithm for hanging up your laundry, efficiently going through a shopping list, or finding an empty parking space in a lot. In computer science, an algorithm is a sequence of instructions that a computer program follows. Algorithms form the basis of the most interesting and important programs we use, such as the algorithm that Google uses to calculate driving directions, or the algorithm that Facebook uses to automatically tag you in a photo.

Because algorithms are so important to computer science, they are a core part of a computer science curriculum. The AP CS A class teaches object-oriented programming with algorithms,  every college CS student will have at least one algorithms class and encounter algorithms everywhere, and every software engineer interviewing for a job will review algorithms while they’re prepping for an interview.

Given how important algorithms are, we were elated when Dartmouth professors Thomas Cormen and Devin Balkcom suggested writing an online course on Algorithms, available to anyone for free, forever, on Khan Academy. If you’re a college CS student, you might recognize the name “Cormen” - he’s the “C” in the “CLRS”-authored Algorithms textbook, the most popular algorithms textbook used by college classes. Balkcom is a fellow professor at Dartmouth, and he’s actually rewritten their introductory CS class, so he’s an expert in teaching algorithms to new computer science students.

 We worked over the summer to create an introductory Algorithms class that’s highly interactive. Algorithms can be hard to wrap your head around, so we have both step-by-step diagrams and interactive visualizations to explain each algorithm:

We also want to give you a chance to try coding the algorithms yourself, so we’ve used our JavaScript coding challenge framework to create 20 challenges with unit tests (and you’ll have to write unit tests yourself!):

We’ve also sprinkled in a few quizzes, to make sure you understand concepts like asymptotic and graph notation:

This curriculum covers everything you’d find in an intro course - asymptotic notation, binary search, selection/insertion sort, recursion, merge/quick sort, graph representation, and breadth first search. There’s much more to cover, of course, including going more into how you can design your own algorithms, but we’re so excited about what we have now and how much it could help software engineers in all stages of life that we want to get it in your hands now.

Please dive into the course and let us know what you think - you can leave comments beneath the articles, or email us more detailed feedback at

Thank you again to Thomas Cormen, Devin Balkcom, and their supporting staff at Dartmouth for making this Algorithms class a possibility.

No comments:

Post a Comment