You Say You Want An Education?

With the recent announcement of 17 new schools participating in the massive open online course (MOOC) site Coursera.org, 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

Algorithms

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

Automata

Year 3, 2nd Semester

Programming Languages

Game Theory

Human Computer Interaction

Digital Signal Processing

Year 4, 1st Semester

Computer Architecture

Cryptography

Pattern-Oriented Software Arch. For Concurrent and Networked Software

Image and Video Processing

Year 4, 2nd Semester

Compilers

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?

50 Comments

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

@Guest

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” https://class.coursera.org/progfun-2012-001/class/index

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 saylor.org, 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 Saylor.org’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 Saylor.org 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 [...]

Sravt ClavFebruary 24th, 2014 at 05:47

Thanks For Sharing your Valuable in formation,this is very useful information you Provided

Freelance Web Designing in Hyderabad

supplements nutritionJune 5th, 2014 at 10:19

Use this lead system to build ANY business and earn an easy $1,000 monthly without referring a single person! Check it out FREE here:
http://goo.gl/9kMgyc

NormaJuly 4th, 2014 at 21:57

It’s hard to find your blog in google. I found it on 18 spot,
you should build quality backlinks , it
will help you to get more visitors. I know how to help you,
just type in google – k2 seo tips

sims 4 voicesJuly 17th, 2014 at 12:50

Hi, just wanted to tell you, I loved this post.

It was practical. Keep on posting!

boom beach hack macJuly 19th, 2014 at 17:07

It’s really a great and useful piece of info. I’m satisfied
that you simply shared this helpful info with us. Please stay us up to date like this.
Thanks for sharing.

AlexandriaAugust 24th, 2014 at 21:40

I read a lot of interesting posts here. Probably you spend a lot of time writing, i know how to save you a lot of work, there
is an online tool that creates readable, google friendly articles in minutes, just search in google – laranitas free
content source

domainAugust 26th, 2014 at 08:27

I feel that is among the so much vital information for me.
And i am satisfied reading your article. However wanna observation on some general issues, The website taste is great,
the articles is truly nice : D. Excellent activity, cheers

Best AC Repair Palm SpringsAugust 28th, 2014 at 13:23

Hi! Do you know if they make any plugins to protect against hackers?
I’m kinda paranoid about losing everything I’ve worked hard on. Any recommendations?

רואה את זהAugust 30th, 2014 at 06:43

I was suggested this website by my cousin. I’m not sure whether this
post is written by him as nobody else know such detailed about
my trouble. You’re amazing! Thanks!

AC Repair Palm Springs CASeptember 5th, 2014 at 18:10

Fine way of telling, and fastidious paragraph to obtain data
concerning my presentation topic, which i am going to convey
in university.

LoraSeptember 6th, 2014 at 10:41

I read a lot of interesting posts here. Probably you spend a lot of time writing, i know how to save you a lot of work, there is an online tool that creates readable, google friendly articles in minutes, just type in google – k2seotips unlimited
content

EugeniaSeptember 9th, 2014 at 18:23

continuously i used to read smaller articles which also clear
their motive, and that is also happening with this article
which I am reading at this place.

house remodellingSeptember 10th, 2014 at 02:14

A motivating discussion is worth comment. I believe that you ought to
publish more about this topic, it might not be a
tabboo subject but usually people do not talk
about these subjects. To the next! Many thanks!!

clashSeptember 15th, 2014 at 17:12

Please let me know if you’re looking for a article author for
your blog. You have some really great posts and I think I would
be a good asset. If you ever want to take some of the load off,
I’d love to write some articles for your blog in exchange for a link
back to mine. Please send me an e-mail if interested.
Cheers!

crack cod world at war pcSeptember 17th, 2014 at 23:32

First of all I would like to say great blog!
I had a quick question in which I’d like to ask if you don’t mind.

I was curious to know how you center yourself and clear your head before writing.
I’ve had difficulty clearing my mind in getting my ideas
out. I truly do enjoy writing but it just seems like the first 10 to 15 minutes are lost just trying to figure out how to begin. Any ideas or hints?
Thanks!

residential window cleaningSeptember 26th, 2014 at 13:39

Hi there! I’m at work browsing your blog from my new apple iphone!

Just wanted to say I love reading through your blog and look forward to all your posts!
Carry on the superb work!

donate your car sacramentoOctober 13th, 2014 at 09:47

Having read this I believed it was rather informative.
I appreciate you spending some time and effort to put this content together.
I once again find myself personally spending
a lot of time both reading and leaving comments. But so what,
it was still worth it!

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

Lawn sprinkler Metro DetroitNovember 7th, 2014 at 14:48

Petersburg, Clearwater and Pinellas Park in Pinellas County, Florida.
In the right sprinkler head, this system works equally well as
those used as a result of professional farmer. Manual watering allows you to control the time and the amount of water applied.

Leave a comment

Your comment