Week-Long Free-Software Class for Kids?
mmol_6453 asks: "I have the opportunity to submit a plan for a week-long class about 'Alternative Operating Systems' to our local community college's Computer Camp. The students will be aged 8-16. We've had classes attended by students who used Linux, but we've never set up a class with alternatives as options. We've found that students in this age range, when interested in the material, can absorb a great deal of information in a short time. This means there's a lot of potential to teach them about Linux, *BSD, and open-source. We often get extremely bright students here, the kind who are likely to go out and earn $80,000/yr in a post-90s economy. Some of them are even on Slashdot. I want to give the rest a boost in the right direction."
"Considering that the great deal of material to choose from, I need to ask the Slashdot Community its advice:
- Do they need to know how to install the OS first, or should I let them look that up on their own while I make them power-users?
- What distributions of Linux and BSD should they be first introduced to? (I'm only familiar with Debian, and I know virtually nil about *BSD.)
- Initially, do they need to be more adept at the GUI, or do they first need to know how to use the shell?
- Should I give away Debian CDs no-questions-asked, or should I talk with the almighty Parents so little Daniel doesn't install Linux over Dad's 'work computer.'
- Are there any other key issue I need to think about?"
I would suggest Patrick Naughton.
Start 'em off by teaching them to set up a dual-booting system. That way you're introducing the OS to them in less of a "sink or swim" approach.
Stay with a simple-to-install distribution to start, like Mandrake. Once they're comfy with the KDE screens, you can introduce them to the wonder that is the command line.
Show them how to install a free os, then teach them a shell. If anything ever goes wrong, usually a shell can fix it on most all operating systems. I might even stay away from a gui until they have taken an intro class and learned the basics of a shell.
I would talk with mom and pop before giving away CDs and adress any questions they have about "free" software and piracy.
no gui, no. Most of the slashdot generation prolly started on nongui systems...Mine was apple][ tandy1000...I would hate to know how I would've turned out if I only had touched something from win95 up....there is something fundamental about not having the gui there.
The speed of their computer is not too important, Beos runs great on a P200.
There is a pile of software on BeBits (see my present sig), and it is easy to install.
It has a UNIX-esqe command line with many similar commands.
The Personal edition can be installed as a file on Windows and requires just 500 some megs.
Lots of hints and info on the BeOS Tip Server.
The GUI is easy and fast, and there is lots of new driver support.
It will have an OS version rather soon, with options of binary compatabilliy (openBeos) or intergrated with a linux kernal (Blue Eyed OS).
Just some stream of consciousness ideas here.
First make sure that they are comfortable users, then worry about the Power User status.
The age group you are speaking of tends to be low on the wisdom scale, so I think that it may be a VERY good idea that you get the parent's permission to give them the CD, or even better, introduce them to Linux via something like Gentoo linux, where you simply need to boot off the CD and the Hard Drive isn't touched at all.
Using something like Gentoo eliminates the "Do they need to know how to install" question. I would include a few page document of "Linux options" with information on where to get different flavors, as well as cautions and howtos on installing them.
I think that understanding of the GUI would be more valuable initially.
And most importantly, teach them where to find information. Don't just say "do this, then do this". Say something like "There is a HOWTO here, read it and I'll help you if you get stuck".
Teach them what they need to know in order to teach others to be comfortable using(not administering) an alternative OS
Sticks and Stones may break my bones, but copyright will always protect me.
Start with the CLI, back when I started work on appleII and dos machines, CLI was all there was.. and it was a good thing, because I learned early on, that you don't ask "what am I supposed to do", but rather "what can I do".
Viewing the CLI, and computers in general, as an open book with nothing limiting what you can do with them is a key to making people use computers properly.
Comment removed based on user account deletion
- Don't politicize your teaching. The last thing the world needs are more brain-blocked hysterical zealots.
- Teach them what is good and what is bad about both sides of the fence (Linux/Microsoft/Everyone Else). Don't polarize things and say "MyOS is better than YourOS... because"
- Don't give them crutches but don't overwhelm them. Show them how to work the damn thing off of a blinking cursor. If you don't have time to go into X and GUI stuff in general, don't worry. If everyone started with a command line the world would be a better place (and support reps would have more hair). At the same time, don't try to go into how bootstrapping works - just stimulate their appetite. If they're good for it, they'll take the next step by themselves.
- Teach them what is good about open source and why it exists and what it's all about. Don't let them grow up to be confused thinking that "free" means "I should get everything for free" instead of "freedom"
- Don't mention RMS.
- ???
- Profit!!!
(ok, the last two were a joke. Just the last two)This means there's a lot of potential to teach them about Linux, *BSD, and open-source.
I read this statement and saw a similar version right next to it: "There's a lot of potential to teach them about economics, history and socialism."
Two of those things are disciplines, one's a specific political theory. Two of your topics are operating systems, one's an often controversial intellectual property concept. What are you trying to teach them -- about Linux or a BSD, or to proselytize about Open Source?
Sure, how Linux or BSDs are developed ("Who makes Linux Mr. Smith?") is likely to be addressed, but a simple explanation that it has many developers collaborating and is distributed freely would be an adequate explanation. Especially considering you're dealing with kids -- even adults with a good grasp of what intellectual property is don't always grasp the concept of open source well.
I wish you well, but don't lose focus as to what you're doing. If you want to preach open source, fine, but don't call it an operating system class, call it an appeal for open source.
then i would want to see a "free" box next to it doing all of the same things. xmms, openoffice, mozilla, gimp, evolution.
then go on to show them how it is different thatn windows in terms of cost, freedom, opensource, configurability. then show them all of teh aditional software. show tehm sourceforge and fresh meat.
the command line is scary for non-geeks, i bet very few OSX users even know they have it, let alone use it, (and im not refering to the /. crowd OSX users) show them it only to enhance, not confuse, their experience.
in short, show them linux as an alternative, and how it can seamlessly replace their current tools, and extend their computiong functionality.
I want 2D games back.
I don't know about the rest of you, but I started linux from the GUI (a copy of redhat 6.1). Within a couple of years, I was banging out shell scripts and perl scripts with the best of em. I say learn the way you feel most comfortable with, but most importantly, just learn.
Bingo - I actually started Linux from the shell, but the only reason I could pull that off is my dad's first machines were a CP/M a 386 that ran DOS 6, so I was familiar enough with using a shell to not get frustrated (cd worked the same, dir=ls, that was all I needed). Take away that safety net - I wouldn't be using Linux today. Now, the only reason I use a GUI is to have multiple shells on screen at the same time.
A witty [sig] proves nothing. --Voltaire
do show-and-tell: each student explores something then briefly describes their findings to the others
/. kids need a chance to rub off those rough edges of untested social interactions as much as possible. Having kids try to teach what they know and ask others for help and vice versa (!) will pay enormous dividends.
I think this is perhaps the most interesting part of the learning experience... though 'most' of us are geeking out 'wasting time' reading and writing for
As well, teach them how to copy paste their CMDLINE stuff to a wiki so they can begin to build their own online libraries of HOWTOs.
dgd
Don't laugh so hard that you miss the serious good that can come out of semi-boundary-skirting activity. I remember when I was in junior high and high school. The science demonstrations involving explosives or fire always lit up the eyes of otherwise jaded kids. A kid who starts out just trying to blow stuff up will learn a lot of chemistry along the way.
I was riding on the BART a few months ago when a young African-American kid (maybe 12-14yrs old) came up to me with his little brother and asked me about my Laptop (an IBM X22 running GNU/Linux). He had never seen one before and was fascinated by it. He kept asking me whether I could crack into computers and decrypt secret documents.
I recommend that you include a demonstration of a basic packet sniffer by setting up a fake user on a machine with scripts that are sending instant messages, surfing the web, sending emails, and reading files from an SMB server. Then, you can use the excitement of voyeurism to keep them interested as they learn about the basic protocols of the internet and how things work. (Use a very basic sniffer that just dumps things)
You can then build on this to teach them basic scripting and perl by having the fake user do a bunch of "boring things" (like sending out boring mails and just surfing news sites) while occassionally doing something "interesting" (like sending out an instant message to a girl he likes or going to a "naughty" website). Make them work to write scripts that filter out the boring stuff.
Next, I would setup a computer on the same internal network that is running a vulnerable version of some program while running the internal website. Show them that it is possible to get in and teach them about buffer overflows and the basics of how computer programs work. Leave them with a computer to try to get into that is running a piece of knowingly buggy software that they have the source to.
Spice up the week with these security related hooks. But there are plenty of other great things to do that will showcase the advantages of the Free Software philosophy.
1) Show them how to modify the code for one of the solitaire games in Aisleriot to be to their taste. (My 6 yr old nephew was fascinated when I showed him that it was possible to change the rules of the game by programming)
2) M-x yow and M-x doctor are great fun. Show them the power and wonder that is emacs and let them see how it lets them do things that they never would have even thought of earlier. (dynamic abbrevs, etc.) Once they are interested, they will sit through the tutorial on their own.
If you use some security related demos to spice up the stuff, it will be a lot more interesting for them. And you won't get into trouble since you won't be teaching them how to break into M$ windows boxes of the sort they are likely to encounter at school or home.
In regards to your curriculum, I would suggest informing them about different types of software, not just operating systems. The idea is not just that you want them to learn how to use linux and let that be the end. All you'll end up doing is teaching them how to use unix, which won't turn out to be immediately very useful unless they have a computer with a spare partition at home. The following ideas might be useful to you...
;) Pico/nano or something like that for the shell, or a plain text editor like nedit in the GUI. This shouldn't be too long of an exercise, as they probably know how to use an editor already. The main idea is to expose them to a plain text editor in a shell environment.
;)
1) Operating systems. Spend the first day letting them boot and play with linux. As others have suggested, use a CD-based distro like Knoppix or Gentoo. Show them the GUI AND the shell. Don't worry about shell programming; just go over the basic commands like ls, cat, grep, etc. Nothing too fancy. You've only got a week, so don't swamp them. If they've got the mind for it, all you'll have to do is provide the introduction at this point. Don't forget to provide a nice handout for the various commands. Include pipes and redirection.
2) Go over using an editor. For god's sake, don't start the poor kids on vi. You want them to get something useful done, not spend all day trying to figure out why they can't exit.
3) Explain the various categories of software like web servers, databases, programming languages, etc., and let them know there are completely free versions out there that are just as useful as versions for which people pay hundreds of thousands (sometimes millions!) of dollars.
4) Let them tinker with making their own website. If you gather a large collection of free images and backgrounds (and GIMP so they can make their own), then give them a handout on basic HTML, they should pick it up pretty quickly. Kids who finish earlier can take a handout on PHP and learn to make pages dynamic w/ database access. This will allow them to see several different functional areas (the OS, programming, web server, database, and browser) all come together in a cohesive way.
5) Possibly cover some basic programming. Perl or ruby would be a good start. Maybe Python, but I'm not a big fan of its forced indentation. I think it might be ok to talk about the difference between interpreted languages and compiled languages, but teaching C or C++ is probably a little much.
You could probably spend a week on that stuff and instill in them an idea of the types of open source software available, how open source benefits people (especially point out that the class they are in wouldn't be possible without open source because of the cost!), and how they can use open source themselves at home. With any luck, you can start another generation of computer-philes who will understand why the Copyleft is a good thing, not a virus.
bytesmythe
Hypocrisy is the resin that holds the plywood of society together.
-- Scott Meyer
I wouldn't start out teaching them how to install; as an earlier poster mentioned, it simply takes too long, and could quickly lose kids' attention. Just as important, though, is that so many distributions these days are easy--SuSE's install is downright mindless. Instead, just point them in the direction of some easy-to-install distributions.
What I would teach them is how to find the information necessary to modify existing installations--not simply "Use YaST to add a new package", but rather the process of finding answers to non-obvious questions. As a new Linux user, it took me some time to figure out how to find answers to my questions on the web (How to ask the right questions, I guess), how to use the answers I found, and perhaps most importantly, how to modify answers for one distribution to work on my distribution. There's a lot of information out there, but it's not always easy to use. Some questions that I remember fighting with included how to get Samba to work, running mySQL, creating virtual domains in Apache, How to get Tomcat and Apache to work together, How to get X to work on a docked laptop (actually I'm still fighting w/ that one).
My experience in teaching software development courses at both the local community college and at CMU has been that teaching students how to find information for themselves is one of the most important skills I can offer. Students that have learned how to do this have been more successful and more enthusiastic in my classes. They've also been more likely to pursue the subject matter both outside of class and after the semester has ended. I also suspect they are more successful in their careers, as they are more capable of keeping their skills up to date.
In my mind, you shouldn't teach them first how to install the system. If they become really interested in, it is not so difficult to install a modern distribution, and you have the motivation to learn.
About the GUI, I think you MUST show teach them with GUI, simply because Win/MacOS are known for their GUI. When people teach only command line, the first thing students do at the end of the class is to remove Linux in order to install an OS with a nice GUI, because they believe there is no GUI for Linux.
But you should also explain them why non-gui tools are great, what kind of job they can do, what kind of job they are good for, and teach them the basics of shell, pipes, and a few tools (cat, find, grep, sort, tr, cut). So, next time they will have to do a simple but repetitive task, they will remember that command line tools are great, and they will be ready to spend more time learning them (that is exactly how it worked for me: I knew awk was great, what it was designed for, and so I learnt it the day I first needed to do something easy with it and boring with GUI tools)
Mathias