Comment Divide and Conquer (Score 1) 452
Make sure you are teaching multiple levels of your class, and that they are not required for one another. Students nowadays have the wherewithal to be very proficient at everything from applications to programming to electronics and hardware before they ever set foot in a computer classroom. You need classes catered for, at least:
1) Students who have never been exposed to a computer.
2) Students who have used a computer and are familiar with how it works, but want to learn how to be power-users of important working applications such as Office (especially Excel) and how to be effective and courteous netizens.
3) Students who want to learn the basics of programming
4) Students who already know how to program and want to learn the Computer Science behind it.
I think they should all contain some element of web awareness and good netizenship, as those are going to be more important in the coming years, but most of the rest is going to be specific to the class.
Your course for basic computers should probably happen on a Mac. If that's possible. I only say this from experience watching my family: people can find things on a mac by reasoning it out, whereas you have to already understand the organization of Windows to find things there. It should cover the basics of starting a computer up, installing an application from CD, how to uninstall applications, the importance of anti-virus and anti-spyware, how to get and use a basic e-mail account (thunderbird, I believe, lets you sign up for at least one type of email account right within the wizard), how to create multiple users and why that is important, etc.
The Office course should at the very least cover using some of the more powerful features of Excel, how to create and collaborate (read: track changes) documents in Word (especially with automatic section numbering, advanced formatting with sections, headers/footers, etc.
The basic programming course should be done in a basic language that actually has real world applicability. I would recommend perl or C++. Java is an alternative, but I have my own issues with it that aren't relevant to this discussion. The essential thing to make clear to your students in this setting is that you are trying to teach them the basics of programming, not how to code. You need to be very clear about designing the program from the ground up and documenting it all along the way. When you teach them bad habits, make sure they know they are bad habits and why, and also why the better habit is being avoided. They shouldn't have to learn these when they are laughed at by an employer.
The advanced programming class should NOT be specific to a single programming language. Somehow, this seems like a novel concept to a lot of people. These kids know how to program, so don't make them learn your language or your style! Focus on computer science concepts such as recursion, algorithm design, data structures, etc. Obviously you will have to limit what language they can use (BASIC doesn't have OOP, data structures, etc), but anything from Perl, Ruby, and PHP all the way out to C++ could be used for a class of this style. Have a project-oriented class which focuses on deliverables and hands-on demos, as well as having to explain their code and methodology. These are essential skills in the workplace. Bosses don't care about the code, they care about what it looks like, how it works, and why it's better than what some monkey could write.
This is a lot to start up at once, so don't try to start all of the courses at the same time. Try to gauge interest first and start on the ones you can first. Don't stretch yourself too thin, or you'll just be doing your students a disservice.