GNU/Linux Training

I’ve been considering trying to offer a GNU/Linux course at a local Adult Education Center. The Boston Center for Adult Education, the Cambridge Center for Adult Education, and the Brookline Center for Adult Education all offer dozens of computer courses, but only for legacy operating systems and applications. Not a single course focusing on open source software.

I imagine a few obstacles. First, would any of these places even let me set up a Linux lab? I can’t imagine they’d be too willing to have all of their hard drives wiped (or repartitioned) and replaced with new, unfamiliar software. My experience is that Linux is more threatening to system administrators the less familiar they are with it. The class could probably be taught with a “live” CD distribution like Knoppix or Ubuntu Live, but this would mean I couldn’t demonstrate an actual, real live installation, which is often the part where people get stuck.

Second, who would take this course? This is one of those cases where you can’t even lead a horse to water (much less make him drink)! I would want to tailor the course to a target audience, but I have trouble guessing if the audience would be: (1) no one (2) curious home desktop Windows users (3) technical people with no familiarity with Linux, or (4) beginner Linux users who are looking to be able to solve problems on their own better… or maybe some other audience entirely? Of course, the way the course is advertised would to some extent determine the audience, but I’d like to find the most ripe target audience.

Third, how do you teach a computer course, anyway? I’ve never had a demonstration-based computer training that I found very useful. In my experience, I learn everything by doing—and by doing I don’t mean repeating the actions I see an instructor doing. (“Now click on ‘Gnome Control Coenter’…”) It seems to me that learning about software is such an individual experience—how do you effectively scale it up to 5-15 people so that no one is left behind, no one is bored, and everyone comes away feeling much empowered? And how do you model the critical “trial and error” stages that everyone must go through to really grasp something?

It occurs to me that maybe the best way to teach a software course might not involve much actual demonstration at all, instead the trick is to teach people a generalized method for approaching problems so that they have the tools they need to find answers when problems arise.

For example, on linux-disciples, a small community-of-interest mailing list I administer, someone recently asked “how to get online”. It wasn’t clear at all what layer was the problem; I responded:

The trick with this sort of problem—and really 99.9% of linux problems—is drilling down to the problem area. One of the problems I consistently see with newer users is that they feel helpless because they don’t know at which layer the problem is arising.

So there are a few questions:

(1) Does your computer see your network card?
(2) Does your network card see the wireless signal, and associate with the wireless router?
(3) Does your network card get an IP address from the wireless router?
(4) Does the wireless router see the “Ethernet modem” (I assume you mean cable modem)?
(5) Does the cable modem see the Internet?

And then continued to walk through each of these items with some suggestions for how to figure out if that was the problem. I think training people to (1) figure out what questions they need to ask, and (2) how to go through the questions one-by-one and get a definite answer as to whether the system works at that level, would be the best way to teach this kind of course.