I have had a love/hate relationship with the education system all my life. On the one hand, I love learning (and teaching). On the other hand, I hate how some of the system works and, naturally, the expense. I've seen a great deal of the system from different sides of the fence. I've earned a Master's degree at an Ivy League school, I've guest lectured at high schools, I've taught seminars at Fortune 100 companies, and — like most of us who have to work for a living — I've taught myself plenty too.
The Internet has been both a boon and a bane for engineering education. There's plenty on the Web on any topic you want to learn about. Need to know about VHDL or Verilog? Want to learn Objective C? Content on the Internet includes whitepapers from vendors, blog articles, magazines (like Dr. Dobb's), videos, and even courses.
There are two problems though. First, there's so much to choose from. Even if every Verilog article on the Web (for example) was great, how could you read them all? You have to filter. That leads to the second problem. Not all of the articles are great. In fact, some of them are wrong, or out of date.
In the old days, if you read something in print, it meant someone had to pony up the money to print and distribute it. Not to say publishers didn't sometimes print something wrong, but it at least was some kind of filter. Now, anyone can post anything and it all seems equally credible.
A number of schools have been expanding their online presence and many schools have started "open" initiatives where they post material online free of charge. MIT, for example, has been a trendsetter in this area. You can assume that material from MIT classes is probably pretty accurate and it would be hard to find random web content that was any better.
Earlier this year, they went one step further. They started offering real classes online for free. Well, a real class at least. It was a class on basic circuits. I signed up for the class (along with an amazing number of other people, most of whom did not finish). I didn't know what to expect, especially with so many class members. The experience was surprisingly good and comparable in rigor to classes I've taken on the subject in regular colleges. Of course, that also means it was a lot of work!
Why am I bringing this up now? They are getting ready to offer more classes from more schools (see https://www.edx.org/). In particular, they are rerunning the circuits class (and every embedded developer should have a good appreciation of electronics). They are also running two computer science classes and one on artificial intelligence, if your tastes run more to programming. If you really want a break from the embedded world, they are also teaching Ruby on Rails.
What's it like taking one of these classes? I can only speak about the class I took, but I would assume they are mostly the same. The lectures are recorded, of course. There are exercises to do (ungraded) as well as homework, labs, and exams. All the work is done interactively. The exercise, homework, and exams typically have you fill in blanks with answers. Apparently, some questions are randomly modified so your answers might not be the same as your friend's answer who is also taking the class. Some answers are numerical and some are algebraic and the checker is sophisticated enough to accept some variations in answers.
The labs, however, are really interesting. These typically use an embedded circuit simulator GUI (like SPICE) and have you build a circuit. You might have to answer some questions, and the automatic grader can examine your waveform outputs to determine if they are correct or not. You might be tasked to make a signal go above 3V and the checker will accept any answer that produces the result (for example, a signal at 5V). The labs and homework are graded instantly, too, since the grading is automated.
The tests are similar to the homework but you have a limited amount of time to finish the test once you start it. In addition, you only get a limited number of attempts (the other tasks you can keep retrying until you get it right).
You do have set dates for homework and a period of time (about a week) for exams. They usually have material up two or three weeks in advance, so you can easily get ahead if you wanted to take vacation or anything. Although you could start an exam anytime during the exam week, once you started you only had 24 hours to finish.
In a real school, you learn from interacting with your peers. The online classes have several mechanisms to address this: videos from teaching assistants, a wiki, and a lively message board where you could get peer or teaching assistant help.
The fact that this was free was simply amazing. Of course, you don't get credit (other than a PDF file you can print out if you pass). You do, however, get knowledge. If you are a programmer looking to understand electronics or you just want a refresher, I'd encourage you to take the circuits class (which is starting next month). I am hopeful the other classes will be just as good.
What are your favorite online educational resources? There are quite a few good vendor-sponsored classes and many great "amateur" sites that have embedded system wisdom in them. Leave a comment and share your picks.