Comment Baby Steps First (Score 1) 467
There are a LOT of things you could teach them... too many for one semester, in fact. My suggestion is that you start with things that will allow them to "feel" proficient with the OS first. Make Linux USEFUL to them. Assuming that this is a semester-long class, then this is my $0.02.
So, think: what does a freshman in college want to do with a computer?
- Check email
- Surf the web (ok, ok, look at pr0n)
- Download stuff
- Possibly do some sort of homework
So first few days, teach them how to check school email, ftp, ssh, etc. Every time you have to enter a server, show some basic network diagram of how you are connecting (ex: 192.168.x.x -> gateway -> internet ->target server. Be specific: specify ports, etc), and say something like "later in the semester, we'll learn how to set up each of these servers." That's a good segue into later classes on how to set up apache, bind, exim (or whatever), ftpd, etc. CS students may get guidance from their programming instructors about the nuances of the compilers, so I suggest just showing them how to install/invoke them.
Last part of the semester you can talk about hardening techniques. Require the latest/greatest Securing Linux O'Reilly book (I'm sure people from here can suggest books), and go through a high-level survey about how to secure services once they are set up. Show how to use netstat, iptables, nmap, etc etc. Re-reference the basic network diagram and now tell them what ports are, and why they are important.
My feeling is that if you show the students HOW to do something, being CS students, they'll want to figure out WHY it works. At that point, they dig as deep as they want into it.
Good luck!