On 07/06/2015 08:12 PM, Marc D Ronell wrote:
I am working toward teaching a free introductory class to teens on
GNU/Linux and the philosophy of free software at the Newton Free
Library in MA this coming September.
For the class, the participants will need access to GNU/Linux. After
reviewing some options, including sdf.org, virtual machines,
Chromebooks, etc., I am considering just asking participants to
purchase a dedicated laptop and installing the OS. I may be able to
direct students to install fests in the area before the class starts.
I am not sure that this is the best idea, but it offers significant
advantages including a potentially working box as part of the results
of the course.
As a test, I purchased a laptop (Toshiba Satellite C75-B7180) on sale
for $350 at our local Microcenter in Cambridge and was able to load
GNU/Linux for my son. I am thinking of working some programming
assignments in Squeak (Smalltalk), but maybe C is a better choice for
an OS class?
Has anyone tried running a GNU/Linux intro class for teens? Can
anyone share their experiences, thoughts or suggestions? Feedback
based on actual experience would be most helpful, I think, but I would
appreciate any insights.
Thanks for your thoughts,
Marc
Having watched what newbies-- and experienced computer users-- get
confused or clueless about, and having designed and taught CS and
programming courses at various levels, I guess I could say I've been
down this road before.
As concerns hardware, I'm going to assume that the school has a computer
lab. You'll need to have a look at it to see what's there. But if at
all possible, I'd use a Raspberry Pi as a platform. Installation of the
OS is easy. Students can get more than one memory card and so boot up a
completely different system just by swapping the card. And of course
it's cheap. If students' spending $350 for a laptop for this class is
in the realm of possibility, then buying peripherals for home use
certainly would be. But it's likely that they already have most, if not
all, of the peripherals at home already.
As an alternative to logging into the Pi directly-- and/or in addition
to it--, your students could log into their Pi's remotely (even from a
Windows or Mac). This in itself would be a good learning experience for
them as well as reduce hardware they'd need.
As for course content, I'd emphasize visiting a lot of rudimentary
systems work and so then too much of the terminology... in a practical
way. The first class, after installing the OS, I would start with the
basic unix/linux/gnu commands: ls, cat, less, rm, mkdir, rmdir, file,
cd, pwd. They'll need to know some editor they can use in a terminal
window; vi is the obvious choice and the most used. So they should at
least know what vi is, even if you think it's too quirky of an editor
and decide to use something else. So they don't think it's going to
*all* command line stuff (though a lot will be) have them launch GUIs
for email and web browsing and perhaps other apps they well understand
already. Show them too the terminal-friendly mail and web apps. These
might be useful later on.
Then explain the client/server and have them set up a web server and
mail server and use them-- their own and each other's. These should
already be installed and pretty much configured for them. I'd think
they'd find it pretty cool to have their own web servers (accessible to
others in the class via IP address). If they can send email to
themselves, great. Even better if they can send email to each other,
again, just using their userid and IP addess.
This will bring up the topic of networking, IP addressing, what a DNS
and DHCP are, remote applications, remote login, the notions of local
and remote, different network protocols, and commands to look at and
exercise these... ping, telnet, ssh, scp, traceroute, nmap, etc. It
would be great if the students could routinely have all their machines
on one network for this. (If the lab doesn't have a large enough
switch-- with enough RJ45s--, the students might need to get a $9 wifi
dongle for their RPi's.) They should know a little about the init
process, just to see who the system as a whole gets started up, and show
them where the log files are and what they look like (a good time for
the 'tail' command). This of course will bring out the topic of
security, the difference between a regular user and root, groups, and
all the permissions and how to set them. Have them set up accounts on
each other's machines just so that they know firsthand about remote
login. You've already showed them 'ls' at the beginning; now they'll
see the importance of 'ls -l'. Have them change httpd.conf to allow the
students to create web pages on each others' servers. First they can do
a simple text file. Give them five minutes on basic html tags and let
them create better formatted web pages. If they could then pull up
their web pages from their own and other students' webservers on their
phones, I think they would enjoy that a lot.
As for programming, personally I'd show them bash and C. Bash is easy
and your students aren't going to get into tricky edge cases the first
day... or if they do, they'll learn about error messages, which they
should encounter anyway. I pick C and bash because so much of gnu/linux
is built from those... also because you can show them the difference
between interpreted and compiled languages and the several files which C
produces and needs. But I wouldn't spend but a day on programming. It
can get very complicated quickly and, IMO, emphasizing networking will
be more fruitful. Computing these days *is* networking... more than
ever. It's easier to learn than programming, but not often learned.
Generally normal users (in this US anyway) are remarkably ignorant about
networking. I'd pick C and bash also because they've been around for a
long time and will continue to be. On the other hand, I can't count the
number of programming languages du jour which have come and gone within
five or ten years. Why teach a language which no one will be using by
the time they're good at it? Have them do "Hello, world!" in bash and
C. Have them download some C source code and compile it. Make sure
they encounter error messages so they're not freaked by them and know
they need to go back in and fix things. Show them there's tons of docs
and tutorials on the web. Let them know that there are dozens of other
programming languages. And that's about it. It should take one class
period. If they have more interest, they can do that at home, with a
local Linux group, or in your next class (devoted specifically to
programming).
One other thing you might want to bring up in relation to programming is
the gnu/linux ethic. That all the code for all the programs etc. on
their machines and millions of others have been written by people who
have done it for free and given away for everyone else to use and adapt
and learn from. Same for the documentation. I think most kids already
know about mailing lists and forums, but these should be mentioned
anyway, just in case.
* Obections
Ideally, so the students can practice networking at home, they should be
able to connect their Pi's to their home networks. In the controlled
environment of your lab, this shouldn't be a problem. But in their
separate homes, there will be a lot more variables. Personally, I had
no problem doing this myself, but I'm not an intro-level student. I
don't even remember doing the network setup, it went so fast (and I set
mine up for static IP, not the norm). So they should go home from the
first class with instructions to print out their network configuration
at home (e.g., at least the IP address, netmask, gateway address, of
their home-connected laptop or whatever) to have some clues you can give
them for connecting their Pi's at home. Maybe there'll be no problem at
all. But like I said, there are many variables involved and you won't
be there to help them through it.
This is a lot to cover. But better too much than too little. Your
hand-outs will allow them to work/play with everything at home. And
intro class of this kind is about exposure, so they realize what's there
and are a bit familiar with it. Links to web docs in your handouts will
fill in some gaps too. All of what I've mentioned are things everyone--
at least everyone in the upcoming generation-- should know and which
most people today don't. This is why there are teachers.
Good luck and keep up posted on how the class goes. Maybe your class
will have a group website or blog?
--
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/559be8a6.2070...@mousecar.com