The best language to get kids excited with

Started by
19 comments, last by DrEvil 18 years, 4 months ago
pascal, basic. java. Basic isn't widely used but can be fun and bring fundamental basic programming skills.
Advertisement
Quote:Original post by Roboguy
About how much math have they had (the reason I ask is that some programming languages' concepts can be explained fairly easily with mathematical concepts such as sets)?


I am a fan of functional programming and a new Haskell programming, and I really like them both (Haskell is _so_ fun!) However, I do not believe Haskell is ever going to excite a young kid. I instead recommend BotsInc and Squeak: it provides an easier programming environment and simpler language for kids and it uses graphics and other multimedia which are more appealing to kids than type theory and list consing :)
I'd go with Python and Pygame; it's simple but you can extend it in incredible directions using C and other languages via SWIG. You could easily produce your own tailored gamedev environment using SWIG, for example, or just let the kids make their own stuff using the Pygame library; there has been some great stuff coming out of there.

It's also non-proprietary; I don't know how much you care but a number of academics where I am have serious qualms about locking down students to proprietary systems like Flash and VB.
If you've only got two months and 24 classes in which to teach the kids enough to do something interesting, I'd recommend KPL (Kid's Programming Language).

It's got a simple BASIC-like syntax, a pretty decent and simple to use IDE, and is completely focused on allowing kids to use sound and graphics easily.

It's at http://www.kidsprogramminglanguage.com
I think having some kind of graphics is a must, but they shouldn't be OpenGL graphics. When you start explaining what a glBegin() is and what a render state is they'll get very confused, and the real concept is much simpler. Most schools I've seen use Pascal or Turing for the first programming course. Python might also be good if you can get a simple graphics interface, like "drawLine()" simple, not OpenGL. The other thing is that console IO should be easy - I think all the languages I mentioned cover this, but this is a problem with something like Java. After the introductory programming course, a more advanced course should probably be either Java or C#, because they have great libraries for almost anything you might want to do, they're object oriented, they're simple to learn, and they'll be very useful to know at college or in the industry.
How old are these "kids", btw?


My recomendataion (which was used with good success to teach C for microcontrolers at my uni to people with little programming experience) is to have a "framework game" already programmed up (I'd say PyGame is a good choice for this - and you might be able to use some open source game: my suggestion).

Then, go through excercises with the students to help them make changes and add features to the program. If you need to examine students, you can fit this in by having a shortcoming in the program (or a different program) they need to correct as an assignment.

The other advantage of this is that anyone who already knows how to program or picks it up very quickly - will have the entire source of the game with which to play with and add on their own features and such as they wish. Those who are not so programmer-ish might like do a similar thing with art or something. Being able to be creative and do their own thing makes a great incentive to learn and become good at it.


Also - consider having them use source control (use Subversion with TortoiseSVN). The major reason is that it will let your students "roll back" to a known-working state if they break something.

You can also use it for other nifty things: You could have students work in groups or as one large group on the same software (perhaps do this towards the end?). Also: It makes it easy to write a script to merge in changes to your own code if you find bugs in it (it happens).
Thanks for the ideas, guys. I really like the idea of giving them a semi-complete program that already gets stuff on the screen that they can tweak, and that idea merges rather nicely with a hobby project I'm working on. I'll let you know how it goes!

PS: The kids are mostly 15-18 (sophomore through senior in HS).
--Riley
Considering that you only have 2 months I'd think about using either Flash or PHP. Given the time frame (and i'm guessing lack of programming experience in your students) it might be difficult to do much more. They're both easy to pick up and both have some use out of the classroom.
If you've already got people comfortable with flash then I see no reason to not stick with it. Then, maybe in the future, you can offer an "advanced" programing course in C, C++ or some other language.

I would have killed to have a programming course in high school, though by that age I suspect I would have been teaching the instructor a thing or two :)

throw table_exception("(? ???)? ? ???");

I have to put my vote in one of the various BASIC languages. (Visual Basic, mainly)

They're easy to learn, pretty powerful, especially for what you're doing, and gets them learning some basics of programming. The Forms system for the various Basic's in Windows are always nice for quick GUI design. If tought improperly, can give some bad proramming habits, but that's really a minor thing unless you intend to eventually dive them in the path of programming in general.

A lot of people might disagree with me, however I stick with what I've said. I learned how to program tinkering with QBasic way back when, and I always got excited running the things I made with it. From there, I've broadened my language knowledge to many differnt things, from Java, to C++.

If you want to try directing them through some web development stuff, my suggestion is PHP, for the fact it's a very easy langauge to use with it's variant style variables and such.

This topic is closed to new replies.

Advertisement