Editors Note: This is a guest post by a Class Central user
If there’s one thing that separates hackers from computer scientist, it’s algorithmic aptitude. Understanding key algorithmic strategies, being able to analyse algorithmic efficiency, and to convert the mathematese of pseudocode into something a compiler or interpreter can actually understand are all key skills for solving those tricky problems just a little bit different from anything anyone’s ever solved before.
These arcane skills have long been the province of the true nerd, willing to pore over huge text-tomes chained in the dankest basements of the university library. But the Age of the MOOC has changed all that: trees, graphs, big-O, recursion, divide and conquer, memoization – the entire algorithmic armory – are now more accessible than they’ve ever been, via a series of MOOCs dedicated to the field. We take a look at some of the better-known, regularly scheduled options.
Gateways to Algorithms
Principles of Computing
via Rice University, Houston
Following on from the well-received “Introduction to Interactive Programming in Python” in Rice’s “Fundamentals of Computing” specialization, this ‘pre-algos’ course, uses interactive games -also programmed in Python – to introduce some of the key concepts & maths (recursion, breadth-first search, Monte-Carlo simulation, mini-max, basic combinatorics) necessary to dive deeper into the field.
6.00.1x: Introduction to Computer Science and Programming Using Python
The first course in MITx’s Foundations of Computer Science xSeries uses Python to introduce some simple algorithms, data structures, and the intuition behind analysis of algorithmic complexity.
6.00.2x: Introduction to Computational Thinking and Data Science
Following on from 6.00.1x, this course introduces problems from a number of fields – including simple machine learning, statistics and simulation – soluble with a useful set of simpler (mainly brute-force) algorithmic and problem reduction techniques.
via Rice University, Houston
Following on from Rice’s Principles of Computing – so also Python-based – this course is designed to get students to analyse (using Big-O notation and the Master Theorem) and solve real-world problems using key strategies (notably recursion, and divide-and-conquer). Covers basic graph theory, and also problems drawn from as Machine Learning and Bioinformatics, with assessments based on quizzes, and auto-graded programming projects which form the basis for four quite lengthy peer-reviewed assessments.
Algorithms: Design and Analysis (Parts 1 & 2)
via Stanford University
Two well-reviewed, broad-ranging, six week courses covering the field in some breadth, with a slight bias toward theory (reason about correctness and running time of algorithms). Assessed via problem sets and programming assignments (in the language of your choice).
Part 1 () Part 2 ()
Algorithms (Part I & II)
via Princeton University
Another set of two well-reviewed, broad-ranging six week courses, from the authors of one of the top-rated textbooks on the subject, which aims to cover “50 algorithms
every programmer should know”. One key difference is that the projects must be submitted in Java, to a (reputedly extremely good) auto-grader.
Part I() Part II ()
Off the Beaten Track
Bioinformatics Algorithms (Parts 1 & 2)
via University of California, San Diego
An intriguing set of two (soon to be three) courses, for two reasons. First, it aims to impart the [key] fundamentals of algorithms using examples drawn from a specific problem domain. Second, while the course features lecture videos, it is largely structured around – and graded via – an online-text, punctuated with (numerous) coding challenges. So far, highly-rated but reputed to be difficult, but with a more introductory junior sibling (“Algorithms, Biology, and Programming for Beginners“) due to make its debut run soon.
Part 1 ( Part 2 (
At your leisure
Intro to Algorithms (Social Network Analysis)
Although billed as an Intro, suitable right after an introductory course, some reviewers have noted the trickiness of some of the assignments. That said, the focus on graph algorithms, allows it to cover these in some detail, so certainly worth a look when no scheduled options are running (although all Udacity courses, no free certification is available).