You Say You Want An Education?

With the recent announcement of 17 new schools participating in the massive open online course (MOOC) site, I thought it would be an interesting exercise to see if it was possible to design a reasonable computer science curriculum using just Coursera courses, where “reasonable” is a curriculum that roughly mirrors the coursework required for a four-year university computer science degree.

I’ve looked over all of the available Coursera courses as of September 21st, 2012, and created a four-year curriculum. I’ve tried to follow the curricula suggested by real world colleges; in particular I’ve loosely based the approach on MIT’s course 6 curriculum (specifically, 6-3).

“Semester” is a loose term in this case, as the courses vary in length from 6 to 14 weeks. I’ve assumed it would be possible to take 4 core curriculum courses in the same semester, and that the student would take an additional course that is not computer science related.

My aim is a computer science education that gives the student a background in:

  • Algorithms
  • Control (robotics, other mechanical interactions)
  • Data structures
  • Debugging
  • Electrical engineering
  • Hardware
  • Programming language theory
  • Software architecture & design
  • Networking
  • Systems programming
  • Mathematics, including:
    • Statistics
    • Probability
    • Logic
    • Calculus

Little time is spent on specific programming languages; once the student is exposed to Python and some other languages in the first semester they are expected to be able to pick up other languages. That will take some work outside of the core course work but the Internet has so many good resources for learning the specifics of programming languages that I’ve chosen not to include classes on specific languages.

Below is the curriculum. I’ll discuss some of the reasons behind the choices later, but first take some time to click through to the course descriptions and see what you think.

Year 1, 1st Semester

Computer Science 101

Calculus: Single Variable

Statistics One

Learn To Program: The Fundamentals

Year 1, 2nd Semester

Introduction To Logic

Data Analysis

Learn To Program: Crafting Quality Code

Introduction to Systematic Program Design

Year 2, 1st Semester


Fundamentals of Electrical Engineering (first half)

Writing in the Sciences

Introduction to Computer Networks

Year 2, 2nd Semester

Networks, Friends, Money and Bytes

The Hardware/Software Interface

Probabilistic Graphical Models

Introduction to Mathematical Thinking

Year 3, 1st Semester

Fundamentals of Electrical Engineering (second half)

Algorithms Part 2

Control of Mobile Robots


Year 3, 2nd Semester

Programming Languages

Game Theory

Human Computer Interaction

Digital Signal Processing

Year 4, 1st Semester

Computer Architecture


Pattern-Oriented Software Arch. For Concurrent and Networked Software

Image and Video Processing

Year 4, 2nd Semester


Machine Learning

Parallel Computing

Natural Language Processing

The curriculum above is purely focused on computer science and mathematics. I’ve left off the basic science and liberal arts classes, but Coursera offers many options in this regard and the student can pick or choose the classes that best fit the student’s interests.

It’d be awesome if Coursera had a course in discrete math. I think that would complement the other math courses in my curriculum nicely. Additionally, it’d be cool if Coursera had a course on operating systems development, or possibly another low-level programming topic like file systems or databases. Frankly, I’m amazed at the depths and breadth of the computer science courses available, and it’s a credit to Coursera that they’ve built such an impressive catalog. In 2012, a student can take the majority of a university computer science curriculum for free thanks to Coursera. That was not possible in 2011.

Learning Online

I’ve taken a few courses on Coursera and other MOOCs and for the classes I’ve taken the medium works well. Like in-person classes, the Coursera courses have lecture notes, slides, homework assignments, tests and quizzes, and online forums for the students to discuss the class. However, with a MOOC, the student can fast forward and rewind the lecturer. Online, quizzes and tests are primarily multiple choice, but Coursera randomizes the questions and the order of the answer (and often picks a set of multiple choices answers from a large pool of answers for a single question). Essay questions are peer graded, which is a process that I think is still evolving – in the class I took with peer graded papers, two of the papers I graded (out of 3) were verbatim copies of Wikipedia articles-which made grading those easy-but the 3rd paper was original content, and I’m sure I evaluated that content with less skill than a professor would.

In my Compilers class, the professor had a clever online tool that could be used to create proofs, and using this tool was required to complete the homework assignments. I think that more and more tools of this kind will need to be created to deal with assignments that aren’t multiple choice quizzes or peer graded essays. For the Compilers class our programming assignments were graded by a script that ran a series of unit tests against our compilers. Grading programming assignments this way felt natural to me – after all, at work my code has to pass a gauntlet of unit tests before the code can go into production.

On the other hand, MOOCs have a few challenges due to their scale (challenges which I’m sure people are working on solutions for). One of these is group projects. As a software engineer I work in groups all the time, and  as much as I hated group work in college it is an important skill for the professional programmer. Public speaking is another important skill that is easy to teach in a classroom setting but hard at scale.

There’s also a set of classes where students can be given the same assignment but produce correct but radically different work, or classes where the deliverables are too complex to be judged by software or other students. For example, MIT’s 6.033 class has several design projects whose deliverables are complex system designs. What is the best way to grade such assignments?

Coursera and its kin are evolving rapidly, and there’s been a lot of research into online education. I’m excited to see what learning online looks like next year.

Final Thoughts

I don’t think it will be long before Coursera, Udacity, EdX, or other MOOCs start grouping courses into curricula.  Khan Academy already has a knowledge map of exercises that build on another, only letting the student progress once they have mastered a required skill for the next level. I hope we’ll see curricula in MOOCs that is created and curated by professors or other education professionals.

What do you think of my computer science curriculum? What would you add or remove? Have you tried a class with Coursera or another MOOC?


AdamSeptember 26th, 2012 at 10:08

Something to note, Coursera is now offering algebra, precalc and some optimization courses. There is also a course in matrix computations with a more CS focus.

RishiSeptember 26th, 2012 at 10:28

Missing some hard math, such as linear algebra and analysis.

AndrewSeptember 26th, 2012 at 10:31

The PGM course should come after machine learning. Nice in general.

DavidHSeptember 26th, 2012 at 10:56

Hey, you should tweet this to the coursera guys and whatever MIT has for twitter accounts. Maybe we could get some sanctioning in the form of an official degree?

GuestSeptember 26th, 2012 at 10:57

Thing is you can learn all this material in like 6 months on your own… shows how uneffective institutional learning really is …

ChrisSeptember 26th, 2012 at 11:10


Sure you can cover the material, but it really helps if you have a deep understanding not just of how it works, but why it works. I think institutional learning excels at teaching the why.

[…] Science Program in Coursera On September 26, 2012 by admin I found a blog posting from a Google site reliability engineer regarding building a traditional “4 year […]

Coursera Degrees | Anton SchiefferSeptember 26th, 2012 at 13:27

[…] it’s not an official degree, but someone has gone through and made a 4-year degree plan in computer science using courses available through Coursera. As someone who’s taken a couple of the Coursera […]

RyanSeptember 26th, 2012 at 13:59

I would suggest putting the two EE courses in back to back semesters.

DanielSeptember 26th, 2012 at 17:22

Let’s see the Masters in CS course list :)

plhkSeptember 26th, 2012 at 18:43

I’d put «Introduction to mathematical thinking» to year 1, sem. 1. Maybe swap it with calculus.

Rick MinerichSeptember 27th, 2012 at 00:14

Great post. This really shows just how much of a game changer Coursera is.

However, I’ve taken both MLClass and PGMClass and I’d suggest PGMClass as last year with calculus based stats and MLClass before hand. It’s one of the hardest classes available on Coursera, arguably graduate level.

SangeetaSeptember 27th, 2012 at 02:55

Very nice post Adam!

MunimSeptember 27th, 2012 at 05:45

If I could write an exam and get some sort of certificate for completion of these courses, I think it will come pretty close to a traditional degree

toklandSeptember 27th, 2012 at 09:29

Great work, thanks! I would definitely add a course about Functional Programming, for example: “Functional Programming Principles in Scala”

WwwsevolodSeptember 27th, 2012 at 10:41

you forgot about Math

[…] вот, например, человек составил себе программу на 4 […]

L MichelSeptember 28th, 2012 at 22:44

you tagged khan academy wrong. it’s totally unimportant, but fyi.

Cost Of 4 Year CS Degree: $0 « Learning…September 30th, 2012 at 15:15

[…] like this one is also why I’m so excited to see posts like this one, which outline how to get a 4-year Computer Science degree for the nice price-tag of […]

blahOctober 1st, 2012 at 15:39

A good idea, but coursera classes are sometimes unavailable after a period of time. it’s a ridiculously arbitrary and unhelpful, but it is the case.

[…] response to my blog post on a 4-year university computer science curriculum made entirely of Coursera’s free online courses has been overwhelming, primarily thanks to the reddit community of […]

[…] aukera oso anitza dute, zaldien elikadura edo puntua nola egin irakasten dutenak, adibidez. Bada karrera oso bat planifikatu duenik ere Courserako ikastaro sorta […]

MoronJanuary 10th, 2013 at 04:03

You are going to take a few math-based classes having in background just Calculus One… That’s very funny :)

[…] You Say You Want An Education? January 21, 2013 Leave a reply […]

DaveFebruary 22nd, 2013 at 17:23

checkout, complete online equivalent to degrees in computer science, mathematics, mechanical engineering, as well as others

GeorgeApril 12th, 2013 at 19:11

I was planning on looking up curricula at some colleges and translating it to Coursera, and you’ve gone and done it. This should help.

RahulApril 17th, 2013 at 08:24

Very Nice Post
but Why OS is missing ?

SeanApril 17th, 2013 at 10:47

Just discovered this post via a short piece in EdSurge. Adam, have you seen’s CS curriculum? [Disclosure: I work for the Saylor Foundation.] We’ve built a professor-curated, complete major. There are valid criticisms of our program, certainly; group work remains difficult and more programming assignments can always be inserted, but the fundamental scaffolding is in place. Our advantages include that our courses and materials are always available in full, and students can take as long as they need to finish.

In any case, I would love to see what you and others think! I’m not insensible to the pros of Coursera courses, but if nothing else, perhaps stuff fills in gaps, provides continuity, or acts as a mirror to reflect the best in both programs of study.

P.S. Thanks to Dave, above, for the shout-out!

[…] announced a completely online Computer Science Masters Degree. Adam Fletcher, a Google Engineer, outlined a completely free online CS curriculum. An Open Source Operations Engineer curriculum is being developed as […]

New Year’s Resolution? | My BlogJanuary 12th, 2014 at 12:20

[…] Udacity courses I’m contemplating enrolling on, guided by this post from Zipfian Academy and this syllabus put together by Adam […]

[…] You Say You Want an Education (blog) […]

DanielJanuary 1st, 2015 at 18:10

This is great! Any idea if someone has revised this into something more current?

RooseveltFebruary 7th, 2015 at 05:28

Do you want to copy articles from other sources rewrite them in seconds and post on your website or
use for contextual backlinks? You can save a lot of writing
work, just type in gogle:
rheumale’s rewriter

RuthMarch 7th, 2015 at 14:06

Hello blogger, i found this post on 22 spot in google’s
search results. I’m sure that your low rankings are caused by high bounce
rate. This is very important ranking factor.

One of the biggest reason for high bounce rate is
due to visitors hitting the back button. The higher your bounce rate the further down the search results your posts and
pages will end up, so having reasonably low bounce rate is important for improving your
rankings naturally. There is very useful
wp plugin which can help you. Just search in google
Seyiny’s Bounce Plugin

Leave a comment

Your comment