Creating a Free Computer Science Degree

Everyone who wants to go to college and can afford to should do so. But what about those who want to, but simply cannot afford to? Yes college pays off over the long term (even at todays exorbitant rates in the USA). But for some families they just see the cost side of the equation.  The decision, once clear cut, is becoming a bit more nuanced. For example read

150 of 3500 US Colleges worth the investment

Is College worth it?

MOOCs (Massively Open Online Courses) are a very interesting recent phenomenon – the idea that you could put college-level courses online and make them free is truly amazing.  The high drop-out and poor attendance rates for MOOCs show something important is missing from your average MOOC.

And I think the thing that is missing is the “social” aspect of schooling.  When you go to college you make a public commitment to education – at least to your friends and family – that says “I am going to do this”.  Then you get to class, make friends and you have an incentive to stay.  You see your friends get on, maybe see them and others succeed and have higher scores and now you have a competition oriented incentive that takes hold.

I think the “Social” incentives and support, if they could be captured and ignited, would be a fascinating enabler for MOOCs.

Last year I also saw this article “$200K for a computer science degree? Or these free online classes?” that provided a listing of a number of college level courses from the likes of Stanford, MIT and Princeton that could form the basis of a Computer Science education.

And so my creative side (which doesn’t get out much) got to thinking. What would it take to have a space, with WiFi, and a collaborative work environment in which people could take these courses with mentorship and guidance from professional software engineers and perhaps some college educators looking to “give back”.  Not much I think.

If you pair with local software companies (desperate for software engineers of all stripes) you could put together a challenging but realistic education to help propel these kids to a good future.

A key advantage of this “free education” would be the freedom to sculpt a syllabus that is more personalized that the traditional CS degree. Some folks I know from my CS class and my later 20 years of experience are suited to different tracks. Not due to inherent ability or intelligence but a result of what they are inherently interested in.  Look some folks just want to get a better job. Others are more committed to a large up-front educational investment (of time).

In addition, we need to recognize that attending college from 18-22 and then retiring at 65 without further educational investment in between is a 20th century concept whose usefulness has passed. We need an educational model that looks more like a “continuous improvement” model – maybe a few courses to bootstrap, then a course or two every year, year-after-year.  More like Scrum – less Waterfall.

When I graduated college the key skills were: Unix, C, RDBMSes and CORBA and we were hot about Neural Networks and 64 kbps ISDN lines

Today: We have Internet technologies, Objective C, Java, C# – a plethora of NoSQL technologies – the cloud, mobile etc etc.

Pretty much I’d say your technology skills need a near complete revamping every 3-5 years. True, the principles don’t change that much, but the tools, technologies in use and the problems being solved definitely do.

A Computer Science education has milestones but is NEVER done!

So what syllabus would I pick? Well I think the InfoWorld article is a good start but I would add

Hardware Classes

Computer Architecture  @ Princeton

Computer Architecture @ Saylor.org

The basics of microprocessors is critical for this being a true CS education. Being hands-on is a challenge but maybe there are opportunities with local “maker”  communities.

And that’s probably a minimum. A course in electronics and digital logic design would be good in addition.

Math & Statistics

I can hear the groaning, but you won’t get far in technology without understanding basic stats (averages, standard deviation, medians, probability distributions etc.  But here are some good places to start.

Introduction to Statistics @ Berkeley (EdX)

Introduction to Statistics @ Stanford (Coursera)

Advanced Level: Computing for Data Analysis @ Johns Hopkins (Coursera)

Everyone should have statistics – but for the feel of “true” CS degree you’ll want a bunch of work on calculus, discrete math, geometry – they are critical in advanced areas of image processing, crytography, computer graphics etc.


Software development and computer programming are a craft and I think a healthy smattering of hands-on practical exposure in a business environment is critical. It will need to be done for a large chunk of time (3-6 months at a time) and will help to ground the student and focus them on how to hone their craft.

In addition project work with peers is another great way to get this much needed practice time.

Mobile & Internet Technologies

In any CS degree – basic principles and math is critical as well as the need for core systems knowledge. But the kids should get a flavor of the “cool” technologies too.

Mobile: Objective-C / iOS   or Java/Android

Web Development: HTML/CSS, Javascript and perhaps some Ruby/Rails (to show people how a dynamic language can make you more efficient)

Not to mention UX design.

So much to learn – but it doesn’t have to be all at once. Get enough to get a solid SWE / Web Developer job and then continue to learn – one course at a time, perhaps one each semester – that should be enough.

The Challenge

Could we take MOOCs and pair them with local SWEs and college educators and provide a solid CS education at a very low price?  I think the answer is Yes. You don’t need the massive classrooms. The stadiums. The dorm rooms. The cafeterias. You can probably figure out something around text books too.  Yes you need a space. Yes you need WiFi. You can “employ” some of your better students as mentors too and have them give back before they leave.

I choose the analogy of the “Model T” where Ford created a car affordable to the middle classes (all while paying his workers well above average) and he helped created a revolution in manufacturing.

In the end, it is the result, that proves the model – if you can get these kids hired into good Web Developer and Software Engineer jobs at good companies with near-typical salaries / benefits what more would you need?








One thought on “Creating a Free Computer Science Degree

  1. Frank I love the concept of students being able to complete most of their CS degrees through practical training and projects. And I agree 100% that the core languages of C and C++ as well as math and statistics are needed. So all schools have a core curriculum that’s the same for two years then let the student finish the last two years as a practicum onsite with a company. That would have to be a very regulated environment of good software practices. Not a hodge podge startup just hacking out bug ridden code all day. Just my .02
    Thanks for a great post!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s