Linux tutorial for a small number of very enthusiastic students
Hi everyone
After the long weekend lets out, I'm slated to teach a handful of very eager high school students at a local science camp about Linux for several hours. The camp has some old PIIs, so I plan to cook up some Knoppix LiveCDs (and some of Tom's RTBT floppies just in case) and head out there with my Zaurus to try and do some very "hands on" Linux learning with them. I won't have to keep it simple because these kids have already ripped apart all the PCs at the camp on their own, so I just need enough material to keep them going. I've got a bunch of ideas for "cool" things to learn about Linux, which are behind the cut. Please provide some feedback on the good ideas, bad ideas, and provide your own. Thanks!
Start of lesson:
Historical background (GNU and the FSF, RMS, GCC, ESR, Linus Torvalds)
Current operating system families (Unix derivatives (HP-UX, AIX, Linux, Solaris), BSD based systems (Dragonfly, NetBSD, OpenBSD, FreeBSD, and to a lesser extent OS X), new OSes (BeOS and friends))
The difference between Linux (the kernel), GNU, and a distribution
Covering the boot process: bootloaders, SysV init, and rc scripts (like ~/.xinitrc, ~/.bash_profile)
Users, groups, and the filesystem hierarchy: the ugo/rwx model, "everything is a file or process"
The Linux desktop system: X11 (XFree86 and X.Org), KDE and GNOME, alternatives like enlightenment and SymphonyOS
Licenses: The GPL, the BSD license, and everything in between (MPL, CDDL, Apache)
Basic CLI manipulations: Using wildcards, pipes, tab completion, tools like cat, grep, awk and sed.
How devices work under Linux: /dev, /proc and /sys. Udev and devfs, kernel modules, modules.conf
Advanced filesystem manipulations: loopback filesystems, encrypted filesystems, symbolic linking
Networking under Linux: using route and netstat, using iptables and ifconfig, networking over USB/serial/null modem
Networked filesystems under Linux: Samba, netfs, AndrewFS, ftp and scp
Advanced Linux networking: Using Freenet and Tor for anonymity, using tcpdump, ethereal and ettercap for ... stuff
Advanced CLI fun: shell scripting, introduction to other shell scripts (python, perl, ruby), FIFOs, cron, screen
Linux as a server: http daemons (httpd, thttpd), ftp daemons (vsftpd) and network control daemons (inted and xinetd)
If the kidlets are somehow still going at this point, dive into working with KDE to make a program that fully integrates into the desktop environment, or maybe a perl script.
After the long weekend lets out, I'm slated to teach a handful of very eager high school students at a local science camp about Linux for several hours. The camp has some old PIIs, so I plan to cook up some Knoppix LiveCDs (and some of Tom's RTBT floppies just in case) and head out there with my Zaurus to try and do some very "hands on" Linux learning with them. I won't have to keep it simple because these kids have already ripped apart all the PCs at the camp on their own, so I just need enough material to keep them going. I've got a bunch of ideas for "cool" things to learn about Linux, which are behind the cut. Please provide some feedback on the good ideas, bad ideas, and provide your own. Thanks!
Start of lesson:
Historical background (GNU and the FSF, RMS, GCC, ESR, Linus Torvalds)
Current operating system families (Unix derivatives (HP-UX, AIX, Linux, Solaris), BSD based systems (Dragonfly, NetBSD, OpenBSD, FreeBSD, and to a lesser extent OS X), new OSes (BeOS and friends))
The difference between Linux (the kernel), GNU, and a distribution
Covering the boot process: bootloaders, SysV init, and rc scripts (like ~/.xinitrc, ~/.bash_profile)
Users, groups, and the filesystem hierarchy: the ugo/rwx model, "everything is a file or process"
The Linux desktop system: X11 (XFree86 and X.Org), KDE and GNOME, alternatives like enlightenment and SymphonyOS
Licenses: The GPL, the BSD license, and everything in between (MPL, CDDL, Apache)
Basic CLI manipulations: Using wildcards, pipes, tab completion, tools like cat, grep, awk and sed.
How devices work under Linux: /dev, /proc and /sys. Udev and devfs, kernel modules, modules.conf
Advanced filesystem manipulations: loopback filesystems, encrypted filesystems, symbolic linking
Networking under Linux: using route and netstat, using iptables and ifconfig, networking over USB/serial/null modem
Networked filesystems under Linux: Samba, netfs, AndrewFS, ftp and scp
Advanced Linux networking: Using Freenet and Tor for anonymity, using tcpdump, ethereal and ettercap for ... stuff
Advanced CLI fun: shell scripting, introduction to other shell scripts (python, perl, ruby), FIFOs, cron, screen
Linux as a server: http daemons (httpd, thttpd), ftp daemons (vsftpd) and network control daemons (inted and xinetd)
If the kidlets are somehow still going at this point, dive into working with KDE to make a program that fully integrates into the desktop environment, or maybe a perl script.
