   what to teach for high school computer science class
  I'm teaching a high school computer science class this summer for 10th graders and I've been told the curriculum is completely up to me.  But I can't think of what to teach these kids.  The students are from very poor communities here in Louisiana and have not had the best of an education, so I can't teach anything very technical.  I taught the class last summer; it was a web page design class using Frontpage and some html coding.  I would rate success of that class somewhere between good and a failure.  The kids don't have a lot of motivation to do anything.  So I'm trying to figure out what I can teach them that will keep their interest levels up but at the same time actually challenge them a little.And yes, last summer's class is partly my fault to blame.  It was my first time teaching an actual full class and I did not have the 'teacher mentality' that I should have had.  But this summer I'm planning on being much more strict and disciplined.Anyway, anybody have any ideas for what to teach them?  We will be in a pretty crappy computer lab with P2 and P3 CPUs, 256MB ram and the bare essentials.  So anything relating to graphics is out.  I was thinking of really easy C++ coding, like "Hello World" type stuff, but I doubt they could take away any useful skills from that.   
  Assuming they won’t be able to learn anything will certainly doom them to that fate.I would just find a good intro-to-programming text book and model the course after that (with your own variations regarding the order in which things should be tought and material that should be disregarded).  Choose a language that is easily accessible to these kids, whatever that may be (given the region and availability of technology at home, etc.)[EDIT] - Oh, and I would suggest giving them something that will yield the most physical results possible - stuff they could tell their friends about.  Don't delve too far into concept - teach them to do things that have real, understandable purposes and results.  Doing so might increase your chances of getting some kids interested.   ;  Just teach 'em:Sequence/StatementsVariablesOperators (+, -, *, /, ++, --, +=, -=, etc)Controls (if, else, switch)Loops (while, for)FunctionsThat's pretty much what most intro to programming classes teach.   ;  I would spend a week or two focusing cycling through every major area of computer science. First you've got the "how to connect a computer together with plugs and wires" and "hardware 101". Then you've got "basics of networking 101" where you show students what a hub & switch are, cat5 cables, etc. Then you make your students connect the room together and assemble their computers.Then you show them how to install a computer game, like quake3 and then how they can play over the network. I'd let them play for the rest of the day, it gives those with problems an incentive to fix them and get to par with the rest of class.Next I'd show students how to format their computers and install an operating system with their personal settings, and then have the students do that for their own machines. The next day I'd give them the software to install dreamweaver and photoshop (or equivlent software) and teach them how to design a website (with minimal html). The reason I'd go with webpages is because it gives immediate results and is more useful to average joe to know how webpages work. I'd have the students build their own webpages for a class project.Finally, If time permits, I'd give them an introduction to writing C++ code, starting with the hello world program and probably not go much further then simple procedural programming. Depending on how much time you've got and how fast the class learns will dictate where you spend your time teaching.I'd take the assumption that most of your students won't know much about computers and your mission would be a success if they walk out of your class with understanding of the basics of all the realms of computing and they can make a decision on whether they want to pursue a particular path further or forget about computers.   ;  Why cant a p2 do graphics?  My first 486 could play StarFighter by 3DO.  It isa 3d space combat game with morphable terrain.  You should get one of these comps and see what it can do.If it has enough juice look at python.  It has pygame, pygext pyopengl, etc.  It even has Panda3d which is a very simple to use 3d engine.  Pygame is basically SDL.  That might be a good bet.  You could try C, but in my class the kids had a hard time getting it without much interest.I also had them make a text adventure, but that may not get everyone's interest.If you do C irrlicht is easy to use for 3d.  As is Haafs Game Engine.  So many options.  If the P2s can handle it, python would be a good choice IMO though. ;Quote:Original post by slayeminI would spend a week or two focusing cycling through every major area of computer science. First you've got the "how to connect a computer together with plugs and wires" and "hardware 101". Then you've got "basics of networking 101" where you show students what a hub & switch are, cat5 cables, etc. Then you make your students connect the room together and assemble their computers.Then you show them how to install a computer game, like quake3 and then how they can play over the network. I'd let them play for the rest of the day, it gives those with problems an incentive to fix them and get to par with the rest of class.Next I'd show students how to format their computers and install an operating system with their personal settings, and then have the students do that for their own machines. The next day I'd give them the software to install dreamweaver and photoshop (or equivlent software) and teach them how to design a website (with minimal html). The reason I'd go with webpages is because it gives immediate results and is more useful to average joe to know how webpages work. I'd have the students build their own webpages for a class project.Finally, If time permits, I'd give them an introduction to writing C++ code, starting with the hello world program and probably not go much further then simple procedural programming. Depending on how much time you've got and how fast the class learns will dictate where you spend your time teaching.I'd take the assumption that most of your students won't know much about computers and your mission would be a success if they walk out of your class with understanding of the basics of all the realms of computing and they can make a decision on whether they want to pursue a particular path further or forget about computers.Thanks slayemin!  I really like your ideas.  I'll definitely be using them.  But I think I'll stear clear of making web pages.  The class is only 6 weeks long, so I can't delve into too much stuff.  I'll probably start with the basic components of a computer, how to put them together and install an operating system, then networking, then a little C++ code.   ;  I've given this alot of thought as I've been thinking of getting into teaching math/comp sci in highschool as a second career when I get done coding for a living.For a summer class you won't have alot of time, and I'd want to grab the kids attention.  I was thinking video games would be a great way to do that.  SO I concluded that python, pygame, and selected chapters from this book:'thinking like a computer scientist' would be a great place to start.  The goal would be to have the kids make a space invaders clone (or something) by the end of the term.That should be easily doable in a short amount of time.  The only problem is that kids today have the perception that all games are 3d with very high quality animation, gfx, and physics, they may NOT get enthused about a simple 2d game.   ;Quote:Original post by WitchcravenIf it has enough juice look at python.  It has pygame, pygext pyopengl, etc.  It even has Panda3d which is a very simple to use 3d engine.  Pygame is basically SDL.  That might be a good bet.Believe me I had a computer with specs slightly better than that and I could only push 20-30 FPS tops with C++/SDL.   ;  I'd skip the C++ code if you only have 6 weeks to teach a class. The reason being that its going to take 6 weeks to teach anyone how to write anything basic in C++, and that's spending 1 week on how to use cout and cin, 1 week on variables, 1 week on the if statement and switch statement, 1 week on while loops and for loops, 1 week on functions and how to send inputs and get return values, 2 weeks for the introduction to pointers etc.At the end of the course, C++ would turn into useless knowledge that quickly becomes forgotten.I'd recommend webpages with HTML instead. New coders are very impatient and they want to see results right away. With HTML, there isn't much you can do to screw up the code. You don't have to worry about curly braces or forgetting a semi-colon or trying to figure out what the heck an error means. Then once someone learns how to write HTML, the get to a point where learning a few things about &#106avascript becomes useful. They get interested in &#106avascript because it makes their webpages look even more cool with rollover images and other things. Once students get familiar with &#106avascript, which is similiar to C++ in syntax, you have a very easy transition to C++. You've got the curly braces and semi-colons down, with maybe even an introduction to if statements, functions and object oriented programming (via DOM).Learning HTML is a great beginner "language" for people who don't know anything about code. It's not too hard for most people, its more useful and relevant then C++, and becomes a good tool for people in the future. At the worst, you'd give students a way to customize their myspace accounts without using someones editor.If I was teaching the class, my whole goal would be to get kids hooked on computers with something their interested in (games or internet) and then leverage their interests to teach them how to use computers as tools to complement their interests. ie, using computer games to create a LAN party which in turn teaches how basic networking works. (may even be evil and break the network the next day before students arrive so they have to trouble shoot the problems)   ;  Add some 2D drawing tasks (programming). 2D drawing is very very fun, and with turtles it is quite easy.For example, draw consecutive rotating squares that get smaller - it looks quite nice and easy to code. I remember drawing XORed lines from center of screen to borders, it looks like tunnel with quite interesting patterns on the walls. That's more or less how i started (with zx spectrum hehe). I know that most kids (high school or not) like this more than printing numbers on the screen and similar stuff that computer nerds like.   