I am a teacher of informatics and programming on high school. But programming isn't very popular among students. So I ask you, can you give me some tips and tricks, how make classwork more interesting? Maybe some competitions or graphics things like Logo etc. Now I teach them C and later C++.
|
|
Use XNA game studio and teach them to make simple video games. A lot of young programmers I see want to program so they can make video games. They like the idea that they could create a video game that is bigger/better than something else they've played and would fix all the things they hate about video games As a side note, I always wondered why they didn't teach math using video game examples. It's far more interesting planning a fireball trajectory within an enclosed dungeon than it is to figure out angles and triangles. |
||||
|
|
|
I think the following languages could be attractive and fun for students:
|
|||
|
|
|
Make it fun and give them purpose.
|
|||||||
|
|
If you have the budget, you could try getting some Lego Mindstorm sets. A family member of mine attempted this for his class, and got enormous response due to the immediate and very visible feedback. You could e.g. pit a few teams against each other, making their robots compete in tasks like "Finding the door", "Blocking each other", "Drawing the polygon defined by this file". |
|||
|
|
|
Another good choice for an introductory course is to teach a scripting language like Python, Ruby, or JavaScript. This results in more reward for less effort, no matter what they are interested in. But no matter what you do, you should be aware that most people don't seem to enjoy programming. For example one consistent finding of UI research is that over half the population (including most educated people) simply Don't Get the idea that files exist in a directory tree with a structure that can be arbitrarily nested. People who have trouble with that sort of thing are going to have a lot of trouble writing any interesting programs. So I'd suggest aiming to fire up the 10% that are likely to enjoy the topic, and accept that most won't like it no matter what you do. |
|||
|
|
|
If you want to create competitions for your students, you can try DevContest. It's pretty simple server for this - http://packages.python.org/DevContest/index.html |
|||
|
|
|
The easiest way to engage the current generation of high-schoolers with programming might be to let them code to and consume some of the many social networking APIs . Young peeps (and many older ones too) love that stuff and being able to create little custom apps to do "cool" stuff with their social networking accounts could surely excite many of them. The biggest problem though, IMO, lies that you're starting with C/C++. There are some complex topics to learn before you get to the fun stuff. Real geeks won't have a problem with C/C++ and will work to overcome the learning curve and even enjoy it but if you're looking to attract a more casual student a better option, IMO, would be Java or a .NET language which lower the barrier to entry, especially for some of the fun stuff. Also, maybe doing some iPhone/Pad/Android dev would excite some of your youngsters as well. Play to their interests. |
||||
|
|
|
For an introductory course, use a LOGO interpreter. It's an excellent tool for demonstrating how a program works and the students will have fun producing graphical outputs. To balance that out, interweave the LOGO with old-fashioned math problems and logic in binary: learning to think in binary isn't fun, but it well engage their minds. |
|||
|
|
|
You got the advantage that generally in high school you have more freedom about methodologies than in college. You could watch Social Network, the movie XD! I found it pretty exciting! |
|||
|
|
