I've been taking free business courses online at Coursera, despite some annoying limitations. I love it, especially since I don't have a few years and a few hundred thousand bucks to blow attending our local business school -- which I'm sure is very good, but hey, I have a business to run.
But there's more to Coursera. I was recently interviewed by a reporter from the BBC about my post questioning the value of the modern computer science degree. At the time, Coursera didn't have a great background in theory. This has now changed.
[ Also on InfoWorld: Is a computer science degree worth the paper it's printed on? | Learn how to work smarter, not harder with InfoWorld's roundup of all the tips and trends programmers need to know in the Developers' Survival Guide. Download the PDF today! | Keep up with the latest developer news with InfoWorld's Developer World newsletter. ]
Coursera offers what could be considered a basic grounding in computer science theory from some of the most prestigious universities. Here's what I'd want a prospective employee to sign up for:
- Computer Science 101 from Stanford University
- Introduction to Logic from Stanford University
- Learn to Program: The Fundamentals from the University of Toronto
- Algorithms, Part I from Princeton University
- Algorithms, Part II from Princeton University
- Introduction to Systematic Program Design, Part 1 from the University of British Columbia (no Part 2 yet but you can read the book online for free)
- Programming Languages from the University of Washington
- Pattern-Oriented Software Architectures for Concurrent and Networked Software from Vanderbilt University
- Algorithms: Design and Analysis, Part 1 from Stanford University
- Algorithms: Design and Analysis, Part 2 from Stanford University
- Operating System Engineering from MIT (Coursera has nothing)
- Introduction to Databases from Stanford University
- Introduction to Compilers from Stanford University
That said, I don't think any of this gives you the help you may need to learn enough Java/C++/whatever to understand the materials. For this you may want to head over to Udemy, which has a lot more basic language instruction.
Skipping the theory and learning the language will never allow you to be great, nor will a bunch of theoretical knowledge be any replacement for -- drumroll, please -- knowing a programming language. Also, you'll notice that since there is no operating system course, I included a course from MIT instead. I couldn't find anything on the subject from Coursera.
MIT has more or less the whole shebang online, although the quality of the offerings is hit and miss. I'm a bit disappointed because I'm not a big fan of the West Coast slant.
My syllabus isn't by any means perfect, but if you did the appropriate exercises and reading (not just watched the videos), you'd get a good amount of knowledge on the basic theory -- the kind of background common among great software developers. There are a few selections like "Pattern Oriented Software Architectures" that you might not need in its entirety. However, I found a good general run of design patterns, and there isn't a lot of depth on another favorite topic of mine: concurrency. If you drank from the water fountain, you'd probably get some of both.
Also please note that I haven't taken all of these courses. I merely went around looking for the basic outline of the important nonfluff stuff that makes up a computer science background, then did a cursory review of the materials. I'd love to hear from a guinea pig if anyone is interested. Assuming adequate communication skills and such, I'd of course hire you upon successful completion.
This article, "$200K for a computer science degree? Or these free online classes?," was originally published at InfoWorld.com. Keep up on the latest developments in application development and read more of Andrew Oliver's Strategic Developer blog at InfoWorld.com. For the latest business technology news, follow InfoWorld.com on Twitter.