Open source your education: the best online courses for ML, AI and more
College classes are expensive. We like free things. Whether you’re interested in reviewing the basics of computer science or studying machine learning or artificial intelligence, there’s an embarrassment of riches available for free online.
Education is expensive, y’all. The sticker price for a degree at some of the top universities in the US is hovering around $60,000 a year. And that’s assuming you had the grades and the resume and the essay to get in.
Enter the internet. A few years ago, MOOC courses, or massive open online courses, were all the rage. Classes from Harvard, Stanford, MIT and other top universities opened the gates to their ivory towers to let the hoi polloi in. (Electronically, anyways.) Pundits called it a revolution in the field of education. Finally, a world class education was available to anyone with an internet connection and a desire to learn. It was going to democratize higher education in a stunning paradigm shift.
Unfortunately, this revolution did not pan out. As it happens, the biggest problem with MOOCs is student retention rate. Nearly 95% of students do not finish a course that they start. The dropout rate is substantially higher than that of traditional courses.
One of the key attributes of an online course – the fact that the student doesn’t have to interact with the teacher or other classmates – is a major reason for why people drop out of these courses. There’s no accountability, there’s no collegial interaction, and there’s no room for accidental encounters that lead to new ideas or new thoughts. It’s basically learning from a book, except with better videos.
The silver lining to open source education
Now that we’ve pointed out all the downsides to online courses, here’s the upside: if you are a goal-oriented learner, with specific reasons to study a particular skill, online courses are a great option. Yes, there’s little to no interaction with a professor in open source classes, but it’s certainly a step up from Java for Dummies.
Online courses are ideal for people who want to learn computer science. Most of us learned to code in a similar fashion back in the day, messing around with computers and a how-to book by ourselves. The production values are certainly higher with online courses, for one. And a lecture or two from some of the top experts in the field can’t hurt, either.
All of the online courses below have video lectures by professors, supplemented lecture notes, readings, and even assignments or labs to test your comprehension on the material.
We all had to start somewhere. Beginners are spoiled for choice for introductory courses from Harvard, UC Berkeley, Stanford, and more.
CS 50 Introduction to Computer Science Harvard University
CS50x is Harvard College’s introduction to the intellectual enterprises of computer science and the art of programming for majors and non-majors alike, with or without prior programming experience. An entry-level course taught by David J. Malan.
CS 61A Structure and Interpretation of Computer Programs [Python] UC Berkeley
In CS 61A, we are interested in teaching you about programming, not about how to use one particular programming language. We consider a series of techniques for controlling program complexity, such as functional programming, data abstraction, and object-oriented programming. Mastery of a particular programming language is a very useful side effect of studying these general techniques. However, our hope is that once you have learned the essence of programming, you will find that picking up a new programming language is but a few days’ work.
CS 101 Computer Science 101 Stanford University
CS101 teaches the essential ideas of Computer Science for a zero-prior-experience audience. Participants play and experiment with short bits of “computer code” to bring to life to the power and limitations of computers.
CSCI E-1 Understanding Computers and the Internet Harvard University Extension College
This course is all about understanding: understanding what’s going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by being turned on. Designed for students who use computers and the Internet every day but don’t fully understand how it all works, this course fills in the gaps. Through lectures on hardware, software, the Internet, multimedia, security, privacy, website development, programming, and more, this course “takes the hood off” of computers and the Internet so that students understand how it all works and why. Through discussions of current events, students are exposed also to the latest technologies.
6.005 Software Construction, Fall 2016 MIT
This course introduces fundamental principles and techniques of software development. Students learn how to write software that is safe from bugs, easy to understand, and ready for change. Topics include specifications and invariants; testing, test-case generation, and coverage; state machines; abstract data types and representation independence; design patterns for object-oriented programming; concurrent programming, including message passing and shared concurrency, and defending against races and deadlock; and functional programming with immutable data and higher-order functions.
Maybe you’ve already got the basics down and you’re looking to pick up some skills in the hottest field of tech. After all, machine learning specialists are some of the hottest jobs right now and command the highest salaries. It’s not a bad idea to get some experience with ML.
DEEPNLP Deep Learning for Natural Language Processing University of Oxford
This is an applied course focussing on recent advances in analysing and generating speech and text using recurrent neural networks. We introduce the mathematical definitions of the relevant machine learning models and derive their associated optimisation algorithms. The course covers a range of applications of neural networks in NLP including analysing latent dimensions in text, transcribing speech to text, translating between languages, and answering questions. This course is organised by Phil Blunsom and delivered in partnership with the DeepMind Natural Language Research Group.
COMS 4771 Machine Learning Columbia University
Course taught by Tony Jebara introduces topics in Machine Learning for both generative and discriminative estimation. Material will include least squares methods, Gaussian distributions, linear classification, linear regression, maximum likelihood, exponential family distributions, Bayesian networks, Bayesian inference, mixture models, the EM algorithm, graphical models, hidden Markov models, support vector machines, and kernel methods.
CS20si Tensorflow for Deep Learning Research Stanford University
This course will cover the fundamentals and contemporary usage of the Tensorflow library for deep learning research. We aim to help students understand the graphical computational model of Tensorflow, explore the functions it has to offer, and learn how to build and structure models best suited for a deep learning project. Through the course, students will use Tensorflow to build models of different complexity, from simple linear/logistic regression to convolutional neural network and recurrent neural networks with LSTM to solve tasks such as word embeddings, translation, optical character recognition. Students will also learn best practices to structure a model and manage research experiments.
CS 156 Learning from Data Caltech
This is an introductory course in machine learning (ML) that covers the basic theory, algorithms, and applications. ML is a key technology in Big Data, and in many financial, medical, commercial, and scientific applications. It enables computational systems to adaptively improve their performance with experience accumulated from the observed data. ML has become one of the hottest fields of study today, taken up by undergraduate and graduate students from 15 different majors at Caltech. This course balances theory and practice, and covers the mathematical as well as the heuristic aspects.
CS 287 Advanced Robotics UC Berkeley
The course introduces the math and algorithms underneath state-of-the-art robotic systems. The majority of these techniques are heavily based on probabilistic reasoning and optimization—two areas with wide applicability in modern Artificial Intelligence. An intended side-effect of the course is to generally strengthen your expertise in these two areas.
DS-GA 1008 Deep Learning New York University
This increasingly popular course is taught through the Data Science Center at NYU. Originally introduced by Yann Lecun, it is now led by Zaid Harchaoui, although Prof. Lecun is rumored to still stop by from time to time. It covers the theory, technique, and tricks that are used to achieve very high accuracy for machine learning tasks in computer vision and natural language processing. The assignments are in Lua and hosted on Kaggle.
My stance on the inevitable robot uprising is well known. (Here for it! Not letting them cook, though.) Artificial intelligence is more accessible than ever. Here are a few courses to get you started on this awesome journey.
CS 188 Introduction to Artificial Intelligence UC Berkeley
This course will introduce the basic ideas and techniques underlying the design of intelligent computer systems. A specific emphasis will be on the statistical and decision-theoretic modeling paradigm. By the end of this course, you will have built autonomous agents that efficiently make decisions in fully informed, partially observable and adversarial settings. Your agents will draw inferences in uncertain environments and optimize actions for arbitrary reward structures. Your machine learning algorithms will classify handwritten digits and photographs. The techniques you learn in this course apply to a wide variety of artificial intelligence problems and will serve as the foundation for further study in any application area you choose to pursue.
CS 4700 Foundations of Artificial Intelligence Cornell University
This course will provide an introduction to computer vision, with topics including image formation, feature detection, motion estimation, image mosaics, 3D shape reconstruction, and object and face detection and recognition. Applications of these techniques include building 3D maps, creating virtual characters, organizing photo and video databases, human computer interaction, video surveillance, automatic vehicle navigation, and mobile computer vision. This is a project-based course, in which you will implement several computer vision algorithms throughout the semester.
6.868J The Society of Mind MIT
This course is an introduction, by Prof. Marvin Minsky, to the theory that tries to explain how minds are made from collections of simpler processes. It treats such aspects of thinking as vision, language, learning, reasoning, memory, consciousness, ideals, emotions, and personality. It incorporates ideas from psychology, artificial intelligence, and computer science to resolve theoretical issues such as wholes vs. parts, structural vs. functional descriptions, declarative vs. procedural representations, symbolic vs. connectionist models, and logical vs. common-sense theories of learning.
There’s a wealth of options available to anyone who wants to learn if they only reach out and grab it. Truthfully, passing through these courses is obviously more difficult than a traditional course due to the lack of interaction and accountability. However, if you are dedicated and able to follow through, you might just beat the odds for a new certification for your resume, along with some sweet new skills.
If you’re interested in learning more, head on over to GitHub for the full list of available courses. And good luck!