[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [SAGE] Where to start?



In a message dated Fri, 17 Jan 2003, Anthony Howe writes:
> I have to provide in-house tutorials on Unix (Linux) systems and
> their administration to our Windows sys.admins. who know nothing
> about Unix or its variants.
> [...]

A few thoughts as someone who has a fair bit of experience teaching such
topics...

- Beg, borrow or steal a projector, if you don't already have one, and
  make the sessions demos.  Static slides will be nearly ineffectual for
  newcomers.

- If you use slides, use them as overviews, illustrations, and
  organizational tools.  Don't put any commands or code on them, as this
  will cause your students (especially since their command of English
  is apparently not 100%) to spend their time copying down notes instead
  of paying attention to the concepts discussed.

- *Do* include commands, file structures, and the like in handouts.  Pass
  them out before class so that the students will understand they don't
  need to take notes.  A student taking notes is a student not letting
  concepts sink in and not asking questions.

- If you can think fast on your feet, use likely tasks these admins will
  face as points of departure.  Use the process of gaining administrative
  rights (su or sudo) as an introduction to the concepts of UID and
  the Unix superuser.  Use ps as an example of process heirarchy (which
  can naturally, through init, lead to the boot process), and use 'ps |
  grep' as an illustration of pipelining.

- Again, if you can think fast on your feet, structure the classes with no
  set points to cover.  Instead, think of a few topics you'd like to hit
  and leave plenty of time for students' questions to lead you off in
  other directions.  This works especially well for second, third, and
  successive classes, as the students try out what you showed them in
  earlier classes and make discoveries on their own which they want to
  talk about.

- If your students are shy or bored, elicit responses from them.  First
  tactic, ask the whole class a question: "Can anyone see something
  strange in this output?"  If you get no response, start picking on
  individuals.  "Claude, why do you think this column here is twice as big
  as that one there?"  Get your students used to the class being
  interactive.  If certain students are always silent, single them out a
  few times to see if they get what you're covering.  If they don't,
  shower them with attention until they become more talkative.  If they're
  following along okay, leave them alone--they probably are just quiet
  types and will only be embarassed if you pick on them.

- Use real systems, not sanitized examples.  If you show a root directory
  with just /bin, /usr, /var, /dev, /home and /etc, your students will be
  befuddled and panicked when they login to their own systems and see
  /lost+found, /SomeRandomDirectorySomeoneLeftBehind, etc.

- Concentrate on the method behind the madness.  Unix is *not* a system of
  magical incantations, at least not in the forms beginners see it.  It is
  one of the most cohesive, understandable operating systems out there.
  Introduce files, devices, UIDs, processes, scheduling, filesystems,
  and all the other high-level concepts early, and relate everything from
  there on in terms of them.

- Break the rules to show them how things really work.  Create a user
  named "guest", UID 0, and show them what you can do with that user, and
  they will never forget that the name "root" is just convention, not
  magical.  Add a port to /etc/services, then attach that port to bash via
  inetd.conf, and telnet into it, and watch your students suddenly "get"
  how things connect together.  A good junior Unix admin knows what
  commands do what.  A very good junior Unix admin, one well on his way to
  becoming a more senior one, knows *how* they do it and what the edge
  cases and limitations imposed by the operating system are.

- If someone asks a question about a command, option, etc., don't answer
  it directly--pull up the manpage and show them how to find the answer
  for themselves.

- I don't know the scope of this class, but if it's more than six hours,
  I'd strongly recommend working scripting into it.  Perl, Python, or
  shell, whatever you're most comfortable teaching, but some scripting
  language will vastly increase the toolset your students have access to.
  You don't have to go into detail, but just showing them "type commands
  like *this*, then chmod +x the file like *this*, then run it like
  *this*" will get your students over a big psychological hurdle.  If you
  choose Perl or Python, use it as a vehicle to demonstrate
  important low-level OS concepts, like fork/exec, that aren't readily
  grasped just working with the shell.

- It's completely okay to show a few magical incantations *so long as the
  students don't need to master them*.  For instance, you can show the
  fork/exec example in Perl without having to explain that a parent gets a
  PID return, a child gets 0; just tell them that's magic and they don't
  need to worry about it.  But if it's something your students are going
  to have to type, you have to able to explain it, even if it's just by
  analogy.

- Blow up your system in realtime.  Pull the network plug, start a fork
  bomb, eat up all your memory, even pull a running disk, to show the edge
  cases.  An admin who has seen something before is an order of magnitude
  more effective.

I could go on, but I've already taken up too much space. :-)

Trey
-- 
I'm looking for work.  If you need a SAGE Level IV with 10 years Perl,
tool development, training, and architecture experience, please email me
at trey@sage.org.  I'm willing to relocate for the right opportunity.