Beta

Slashdot: News for Nerds

×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Best Introduction To Programming For Bright 11-14-Year-Olds?

timothy posted more than 5 years ago | from the don't-forget-cty-and-other-nerd-camps dept.

Education 962

firthisaword writes "I will be teaching an enrichment programming course to 11-14 year old gifted children in the Spring. It is meant as an introduction to very basic programming paradigms (conditions, variables, loops, etc.), but the kids will invariably have a mix of experience in dealing with computers and programming. The question: Which programming language would be best for starting these kids off on? I am tempted by QBasic which I remember from my early days — it is straightforward and fast, if antiquated and barely supported under XP. Others have suggested Pascal which was conceived as an instructional pseudocode language. Does anyone have experience in that age range? Anything you would recommend? And as a P.S: Out of the innumerable little puzzles/programs/tasks that novice programmers get introduced to such as Fibonacci numbers, primes or binary calculators, which was the most fun and which one taught you the most?" A few years ago, a reader asked a similar but more general question, and several questions have focused on how to introduce kids to programming. Would you do anything different in teaching kids identified as academically advanced?

cancel ×

962 comments

PHP? (1)

arizwebfoot (1228544) | more than 5 years ago | (#26067739)

Hello World, it's Foo Bar!

Re:PHP? (4, Insightful)

moderatorrater (1095745) | more than 5 years ago | (#26067895)

PHP or C are ideal for a number of reasons. Enforcing OO from the outset is a terrible way to teach programming, so java should be right out. Functional languages are fun and interesting, but unless a major paradigm shift happens in the next decade, it's not going to be as useful.

With a procedural language, you get the benefit of showing them with just a few lines of code what you can do. The basics of programming can all be taught from the outset including arrays, loops, conditionals, functions w/default parameters, etc.

As they learn more, they'll have a natural step up to OO with C++ or php's built in OO. With C, they get the benefit of compiling code and having an avenue for more sophisticated programs, graphics libraries, etc. With PHP, they'll be able to set up web servers and use that as a stepping stone to html, servers, and javascript.

Neither language needs a large investment to start programming with in terms of money or teaching, both languages are widely used, and both languages give them a clear avenue to more advanced topics.

Re:PHP? (1, Funny)

Anonymous Coward | more than 5 years ago | (#26068281)

"With a procedural language, you get the benefit of showing them with just a few lines of code what you can do."

class HelloWorld:
    def __init__(self, msg="Hello World"):
        print msg
hw = HelloWorld()

OO with only a few extra lines

Re:PHP? (0, Troll)

ILuvRamen (1026668) | more than 5 years ago | (#26068013)

PHP? A scripting language? Are you freaking kidding me? Scripting languages are pathetic insults to programming. You don't even have to declare variables before using them or choose their type. There would be some serious oversights of programming basics if you teach them php. In high school I took C++ and that worked out just fine. It was intimidating to think about writing a whole piece of software with that ancient language but it did teach the basics so later when I learned VB.net I could identify all the stuff they screwed up and improved and understood how a framework worked. At my college anyone in the IT field, even if it wasn't programming, had to take intro to VB and that class was pretty well structured. Plus you could actually write something with a GUI like modern programs have. I'd lean towards either C++ or VB.net.

Re:PHP? (-1, Troll)

Anonymous Coward | more than 5 years ago | (#26068117)

The teacher needs to have sex with them all.

Assembly (5, Funny)

loteck (533317) | more than 5 years ago | (#26067745)

We'll see how bright they are then...

Re:Assembly (5, Funny)

77Punker (673758) | more than 5 years ago | (#26067769)

It might be tough to actually solve a problem in assembly languages, but at least they're straightforward in the sense that it always does exactly what the documentation says it does. Each command is so simple that there's no chance you'll get hit with a language bug. Then again, maybe assembly just seems like a warm fuzzy bed of consistency since I have to use PHP at work.

Re:Assembly (2, Insightful)

Ethanol-fueled (1125189) | more than 5 years ago | (#26067929)

I'm pretty sure that guy was kidding. As far as calculators go, wouldn't you think that sum = num1 + num2; is much more intuitive than the equivalent assembler instructions? I believe the most useful languages for rudimentary procedural programming are C or C++ (for bare basics C++ because cout
As far as assignments go, It always bothered me that things that made a computer fun and more interactive were never taught at the early level. For example, using the alarm escape sequence \a in conjunction with an infinite loop, or to make the program beep whenever something happens etc.

Re:Assembly (2, Interesting)

DrLang21 (900992) | more than 5 years ago | (#26067845)

I actually learned my first moderately complex programming in assembly, and I found it to be very straight forward. It's easy to step through code and see exactly what went wrong when things don't work (until you run into memory paging problems).

Re:Bright vs. Hard Workers (2, Interesting)

dsginter (104154) | more than 5 years ago | (#26068133)

We'll see how bright they are then...

I know that I am piggybacking but I thought that the educational world had moved on from the terms bright, gifted [sciam.com] and related words.

A good read, if nothing else.

Lua? (5, Interesting)

slime73 (1083393) | more than 5 years ago | (#26067751)

I learned Lua when I was 14, with no previous programming experience. It's a pretty simple scripting language, and it can be really fun when you make addon scripts for games you play (quite a few games use Lua these days) and see them come to life. :)

Re:Lua? (1)

shirro (17185) | more than 5 years ago | (#26068109)

Yes Lua.

You can run it on a PDA or PSP. It has relevance because it can be used to script well known commercial games and networking tools.

It has a very friendly and informative community.

The ease of c/c++ integration can be a helper getting started on those.

Being exposed to first class functions, closures, coroutines etc will help learning other languages.

Re:Lua? (1)

aaron alderman (1136207) | more than 5 years ago | (#26068211)

So you were a script kiddie?

T.A. (1)

iconic999 (1295483) | more than 5 years ago | (#26067753)

Tiny ALGOL

Logo, LISP, Scala, F#, Erlang, and Haskell (3, Insightful)

Marxist Hacker 42 (638312) | more than 5 years ago | (#26067755)

Functional programming is making a comeback- it's going to be to the 2010s what OOPs was to the 1990s. I'd suggest these, and make recursive loops a major sticking point. Dr Dobbs has a nice article on why [ddj.com] these functional languages make excellent methods for taking advantage of multi-core processors.

LOGO! (5, Insightful)

mamono (706685) | more than 5 years ago | (#26067761)

It is partially in jest, but LOGO was created to teach kids how to program. Real world wise, though, I would say C or PHP. They are both currently used, relatively easy to learn and require no cost to get started.

Re:LOGO! (1)

Swizec (978239) | more than 5 years ago | (#26067859)

LOGO is too basic for 11-14, when I first started learning programming it was in LOGO yes, but that was at 9 ... when we were 11 we were taught a "real" language which was Pascal and that's what I'd suggest.

The main advantage of Pascal is that it's nice and simple while still feeling leet enough the kids aren't getting the feeling they're being taught how to use a toy and I can assure you 11 year olds, let alone 14, will look at you funny when you tell them to move a turtle (that's what I remember it being called) around the screen drawing senseless shapes.

Re:LOGO! (1)

DragonWriter (970822) | more than 5 years ago | (#26068159)

can assure you 11 year olds, let alone 14, will look at you funny when you tell them to move a turtle (that's what I remember it being called) around the screen drawing senseless shapes.

Sure, moving a turtle around drawing "senseless shapes" is probably not going to be very interesting to 11-14 year olds, especially those on the older end of that range, but then even the versions of Logo I used at 11 could be used to a lot more than that, and modern, agent-based versions of Logo are designed to do quite a lot more, easily. Take a look at NetLogo [northwestern.edu] or StarLogo TNG [mit.edu] .

Re:LOGO! (1)

LWATCDR (28044) | more than 5 years ago | (#26067981)

Take a look at Squeak. I feel that it is the new Logo.

Re:LOGO! (1)

deniable (76198) | more than 5 years ago | (#26068291)

Squeak feels like a playground to me. Any 'real' programming tool feels like work. A first lesson with Squeak would include time to find the neat stuff buried inside it. Combine that with the fact that you can alter pretty much anything and you work with a single file VM image and kids could go wild with it. The eToy (?) interface is also pretty cool from a simple, not really programming, but making things happen point of view.

Re:LOGO! (4, Informative)

themba (11220) | more than 5 years ago | (#26068149)

Seconded. You can't beat designed for the task. It's got an extremely low learning curve, immediate feedback, and lends itself nicely to exploration. And contrary to popular belief, it's not exactly limited. Brian Harvey at UCB has 3 downloadable books suitable for varying skill levels here [berkeley.edu] .

Python (5, Insightful)

EvanED (569694) | more than 5 years ago | (#26067767)

See subject.

I started with QBASIC, and I would rather recommend against that. Things like real functions (as opposed to GOSUB) and such, even though you can do them in QBASIC, I didn't see for years.

Re:Python (1)

morgan_greywolf (835522) | more than 5 years ago | (#26067959)

I completely agree with your choice of Python, of course. ;)

Python is a multi-paradigm, dynamic language. You can use Python to teach functional programming, object-oriented programming and imperative programming. And you don't have to worry about getting bogged down in technical details such as memory allocation, garbage collection, etc. The fundamentals such as hashes, lists, etc., are already built-in to the language and Python is batteries-included (tm) -- you have everything you need to do basic GUI programming, databases, simple and complex math, systems-level programming, etc., right in the box!

Of course, you can say the same thing about Tcl/Tk, Ruby and Perl, too.

But I don't recommend teaching Perl to anyone. My theory is that the reason Larry Wall is losing so much of his hair [google.com] is that he pulled it all out writing Perl code...

TI-85 (1, Insightful)

Brigadier (12956) | more than 5 years ago | (#26067773)

Always enjoyed programming teh old TI-85 calculators. Not sure if yrou still required to use them in school, it allows simple graphical stuff, plus it is mobile which woudl appeal to a kid.

http://tibasic.wikia.com/wiki/Main_Page [wikia.com]

Re:TI-85 (0)

Anonymous Coward | more than 5 years ago | (#26067863)

Most schools use TI 83/84s now for the lower level courses, and some use TI-89s for calc and fewer still for pre-calc. The TI-89 supports C in addition to TI BASIC, but I actually did much less programming on the TI-89, because between the builtin functions, and the ability to define custom functions in terms of the builtin functions, pretty much any simple math related need could be filled.

DO NOT (4, Insightful)

MindlessAutomata (1282944) | more than 5 years ago | (#26067787)

DO NOT, I repeat DO NOT do what many comp sci departments and high schools do, and that is "begin with Visual Basic".

NO! NO NO NO NO NO! Okay, so they learn about variables and shit, but, just, NO. Terrible programming practices and weird little things where commenting is done with apostrophes and other typical retarded shit is what you'll end up teaching them.

Visual Basic is OK for a quick and dirty Windows program. But if you want to teach the basics of what "real" programming is, I wouldn't recommend VB.

Re:DO NOT (5, Funny)

Red Flayer (890720) | more than 5 years ago | (#26068289)

DO NOT, I repeat DO NOT do what many comp sci departments and high schools do, and that is "begin with Visual Basic".

I'll heartily second that. Visual Basic is totally inappropriate for a budding programmer.

Make them use vanilla Basic. I suggest using a C64 emulator (or, if you're feeling perverse, a VIC-20 emulator).

What? I had to use line numbers, so should they.

I'd also suggest making them use a cassette tape drive, or even a reel-to-reel drive, to ensure that they understand why bloated code is bad.

Oh, and while you are at it, make sure to supply them with a limitless supply of Tang (no, not 'tang, you'll get in trouble for that) and store-brand potato chips.

Finally, make sure that whatever they do, they need to write out their programs in pencil for review first, then enter the code verbatim once it's been signed off on.

Look at POV-Ray. (5, Interesting)

Gavin Scott (15916) | more than 5 years ago | (#26067789)

Consider something like POV-Ray [povray.org] , since it's a programming environment with a visual payoff.

Show someone a simple program that generates 10 randomly positioned mirrored sphere over a checkered landscape then encourage them to play with the number of sphere, assign colors to them, etc.

Much more interesting to be able to *see* the output of your program than just reading "Hello World!".

G.

Re:Look at POV-Ray. (2, Informative)

Facetious (710885) | more than 5 years ago | (#26067905)

I was just thinking of suggesting POV-Ray. In addition to your very valid points, it is also a great way to teach certain math concepts. I once taught math at the secondary level and found that there was a real "Wow" factor associate with POV-Ray.

Bubble sort (1)

finnw (415539) | more than 5 years ago | (#26067791)

The first algorithm I actually understood and was able to re-implement (in Sinclair Spectrum BASIC) was a bubble sort, so I would recommend that. I had been experimenting with the graphics functions for a couple of months before but I did not learn much from that. I think the important thing is to avoid pointers and also avoid dependence on any OO concepts (it's easy to forget how hard they were to learn.)

Ruby/Python (1)

robbrit (1408421) | more than 5 years ago | (#26067803)

These languages are clean, easy to learn, and abstract away from the machine architecture enough that young'ns don't need to worry about all that stuff just yet.

You don't really expect things like Fibonacci numbers or binary calculators to entertain a 12-year old do you? Why not make something actually fun, like a game. One class when I was in university had an assignment where you had to remake the "Hunt the Wumpus" game. Little games like that might be better for getting kids into programming than the boring stuff like Fibonacci.

Re:Ruby/Python (1)

Swizec (978239) | more than 5 years ago | (#26067951)

Maybe I'm just a regular slashdotter, but I remember being fascinated by fibonacci, bubble sort and other similar stuff when I was 12 ... sure I was working on an "operating system" on the side and made a few games. But you want to know those lovely numbers first.

I still have fond memories of how much love I held for finding prime numbers and just seeing all those digits roll down the screen, knowing they're all primes. It was magnificent!

C# is the best alternative... (5, Funny)

LibertineR (591918) | more than 5 years ago | (#26067805)

Yeah, yeah, but here me out, bitches.....

11-14 years old = NO CASH.

Nobody has more free resources available to the budding programmer than Microsoft; like it or not.

Anyone can download FREE IDEs, free Source code, videos, documentation up the wazoo.

Also, C# is almost syntactically identical to Java, and it is a good language for the beginner to discover whether or not they have a REAL interest and a knack for coding.

If I were 14 again, wanting to learn how to code, Microsoft would be nirvana with all the free available stuff out there. There really is no contest.

As always, I got karma to burn, so take your best shot....

My best shot (3, Interesting)

77Punker (673758) | more than 5 years ago | (#26067853)

If you want to use C# because it's similar to Java and is freely available, why not use Java? It has awesome tools available and is just as (moreso?) free as C#. Since we're talking about free, what decent programming language exists that is not free nowadays or does not have loads of free support material available?

Re:C# is the best alternative... (2, Informative)

HeronBlademaster (1079477) | more than 5 years ago | (#26067877)

I'll tend to agree with you, at least as far as the free IDEs go. However, I'd recommend exactly what *I* did when I was that age that got me my start.

Sam's Teach Yourself C++ in 21 Days by Jesse Liberty is a fabulous book that I still (ten years later) use for reference on occasion.

C# is good, but you miss out on a few things that I think are important concepts for budding programmers to learn, the most important of which is memory management.

Re:C# is the best alternative... (1)

LWATCDR (28044) | more than 5 years ago | (#26067883)

So why not Java?
It is available for Free.
IDEs for it are also available for free.
Tons of documention , books, source code, and tutorials are available for free.
And it runs on Linux, Windows, and OS/X so you are not limited to using Windows or working with Mono.

Re:C# is the best alternative... (4, Insightful)

fuzzyfuzzyfungus (1223518) | more than 5 years ago | (#26067911)

Huh, funny. I could have sworn that I'd heard of some other little outfit that let you download free source code and programming tools and stuff.

I'm not going to disagree with you on MS's offerings; but you make it sound like they are an oasis of free stuff in a sea of unaffordable tools. With the exception of the various outfits that sell pro tools for various languages and scenarios, is there any major programming language(or, for that matter, many minor ones) for which you cannot get the necessary free stuff to get started?

Re:C# is the best alternative... (1)

ion.simon.c (1183967) | more than 5 years ago | (#26068245)

Um...
Delphi?

Robo Rally (1)

amclay (1356377) | more than 5 years ago | (#26067807)

For the times where you want to have fun in class - it's a fun game, and it really teaches you the aspects about thinking ahead when doing functional programming.

Games! (1)

argent (18001) | more than 5 years ago | (#26067835)

The most fun things were games. There are some very simple games that you can write programs for relatively easily.

If you can get ahold of an old book that got ME interested in programming in the '70s... David Ahl's 101 Basic Computer Games... it will have a lot of examples of games that are readily implemented. Don't worry about the code, of course, but consider the games themselves as exercises.

Squeak (0)

LWATCDR (28044) | more than 5 years ago | (#26067839)

It really is a great looking learning environment.

Lego Mindstorm (5, Insightful)

Dynedain (141758) | more than 5 years ago | (#26067855)

If you're trying to introduce the concepts of looping, iterations, etc and don't want to get hung up on the details of the language, I highly recommend the Lego Mindstorm kits. They have a flow-chart programming interface that I had great success introducing programming to my 11-13 year old cousins, and if I remember correctly, they also have a lower level interface to let you start writing your own functions.

For kids this age, nothing is better/cooler at showing them the basics of programming than something that gives a physical response. Loops, conditions, make so much more sense when trying to figure out how to keep your robot from running off the edge of the table.

Tangible real-world feedback, and a sense of real accomplishment. If you just give them abstract languagues for the sake of language, they get disappointed they can't just whip up the next Madden game. Besides, they probably all already have Legos at home, and a Mindstorm kit is something they can easily get at home, which probably won't happen with Pascal compilers or Basic editors.

Re:Lego Mindstorm (1)

retech (1228598) | more than 5 years ago | (#26068083)

Legos in general. With all the various bits out there have them make a Goldberg machine to accomplish a set goal. It's a great way to see cause/effect, logic and think outside the box.

Re:Lego Mindstorm (2, Interesting)

Mista2 (1093071) | more than 5 years ago | (#26068123)

I did mine with two robots in a ring, and the interface allowed a list of operations on each robot, and the winner was the last one still in the circle when done 8)

At college (about thirteen years old) we also wrote scripts in logo, but as in my first lab I whad already gotten in early and modified the autoexec.bat file to include:
myroutine:
echo "Hamish is a dick!"
goto myroutine

I thought logo was a little dull 8)

Snake Wrangling for Kids (4, Informative)

caseih (160668) | more than 5 years ago | (#26067861)

I know several young people who've got hooked on programming because of this free book: http://www.briggs.net.nz/log/writing/snake-wrangling-for-kids/ [briggs.net.nz]

There are versions of the book for Windows, Mac, and Linux. Although the book targets kids as young as 8, it would still be able to speak to an 11 or 12 year old I think.

Objective C (3, Informative)

Foofoobar (318279) | more than 5 years ago | (#26067865)

Objective C gives them the ability to build applications quickly and easily using GnuStep or Xcode. If they have iPods, this also gives the them ability to develop apps for them as well. The intrigue and excitement in their ability to do that often will get them excited in developing in other languages.

UML? (2, Informative)

nobodylocalhost (1343981) | more than 5 years ago | (#26067867)

Instead of teaching them how to write a dummy program in a particular language, it is by far better idea to lay the foundation work by teaching them how to design and formulate a solution to a particular problem in a logical, concise, and efficient practice. Being able to diagram out an idea, condense it into a formula, and then simplify will be much more useful than knowing how to write hello world in one particular language. In a sense, you would do them the favor of prepping their minds to be able to handle any language their future employer will throw at them.

Re:UML? (1)

Dynedain (141758) | more than 5 years ago | (#26067955)

That's exactly why I recommended Mindstorms above [slashdot.org] . The basic programming interface isn't code, it's a flow chart, really emphasizing the idea of doing problem solving and breaking it down into components instead of worrying about language and syntax.

Re:UML? (1)

nobodylocalhost (1343981) | more than 5 years ago | (#26068093)

Lego Mindstorm cost $ and i don't know how well funded OP's class is. ArgoUML is a piece of junk, but it's free. Well, if OP got the funding, i'm all for doing it the lego way. If not, then UML would work.

Alice? (5, Informative)

SpectraLeper (1079785) | more than 5 years ago | (#26067869)

It wouldn't start with any specific languages, but using Alice [alice.org] and its younger cousin Storytelling Alice [alice.org] might provide a good intro to concepts.

I would judge how quickly those concepts are being integrated and then move on to an easy-ish language like BASIC.

Re:Alice? (1)

edalytical (671270) | more than 5 years ago | (#26067991)

Alice is great, but after that move on to Python instead, not BASIC.

Java, Scala, C. (1)

FatherOfONe (515801) | more than 5 years ago | (#26067873)

I would start off with Java if I wanted to learn an object oriented language and the tools and documentation are abundant. There are many good IDE's out there to "help" you with the syntax and it is cross platform, so if you like Linux, Apple, or Microsoft you are covered (and many others).

I would then learn Scala, that is a functional language. I can't speak a ton for it because it is so new but if I had to pick a functional language to learn Scala wold be it.

Next I would learn C. This one could take you a while, but by this point you should have a solid understanding the basics and thus you can focus on C specific things.

This is unfortunately not what I did.
I started out doing machine code on a Z80, then some BASIC, then Pascal, then some assembly thrown in there and then some simple C, then Java. The jump to object oriented programming what tough for me, and I have seen guys go from object oriented programming to procedural far easier.

Hope this helps and I am not trying to start a coding war.

Scratch (5, Informative)

Num6 (792641) | more than 5 years ago | (#26067881)

http://scratch.mit.edu/ [mit.edu] Scratch is very cool, comes with an educational program for kids. It's an mit/ucla project

PL/1 or COBOL (2, Funny)

Anonymous Coward | more than 5 years ago | (#26067887)

I'd think the only reasonable languages to start programming should be PL/1 or COBOL. Whitespace or Brainfuck could be suitable alternatives.

Use a Real-World Language (1)

danelav (906834) | more than 5 years ago | (#26067903)

My CS program started us in Pascal, and I would vote against doing that. I'm a Java programmer now, so of course I'm biased in that direction, but I believe Java, C#, C (if you're brave), or any of the web scripting languages would be a better choice than Pascal.

Close to natural language is best (4, Funny)

RJBeery (956252) | more than 5 years ago | (#26067915)

Lisp.

When I was that age... (1)

Black Art (3335) | more than 5 years ago | (#26067921)

When I was 10 I learned Fortran... On cards... On a big mainframe.

And we were grateful!

Boy I feel old.

Re:When I was that age... (1)

Amazing Quantum Man (458715) | more than 5 years ago | (#26068141)

Did you use bubble-cards hand coded in Hollerith? Or did you have actual punches?

PostScript (3, Informative)

Colz Grigor (126123) | more than 5 years ago | (#26067927)

I recommend PostScript.

For kids, PostScript has the advantage of nearly instant gratification, because it allows them to draw graphics quickly. It has loops and conditionals. It uses stacks and variables and functions.

All you need to get going in PostScript is a text editor and a PostScript to PDF converter. On a Mac, it's built in. On Windows, I use GhostScript in CygWin and run ps2pdf, just like I would on Linux. Alternatively, Acrobat Distiller should do the trick.

simple: use perl (5, Insightful)

petes_PoV (912422) | more than 5 years ago | (#26067931)

You want a language where it's possible to start producing results with very little initial effort. That precludes anything which uses or requires an IDE - just learning to navigate that is a morning of classes with nothing to show for the effort - a definite demotivator. You also want a language that has a printable form - so they can have something tangible to work with - not merely a bunch of files.

If these children really are the gifted ones you say, they'll already have the basic concepts of an editor: create, change, save, so they can start creating programs much sooner.

You also want them to become familiar with the basic syntax od computer languages - most of which are quite similar and look a lot like Perl's syntax.

Perl also gives those who wish, the ability to develop further, after the classes finish.The large amount of freely available documentation and examples on the internet will help then learn from properly written code from other people.

HTML (4, Insightful)

grege1 (1065244) | more than 5 years ago | (#26067937)

These are kids of the 21st century. Start with simple web pages in HTML, then add picture loading, tables, etc. If they take to it, then basic javascript. Start by using a text editor then later introduce graphical tools. All free and easy to implement.

C, please (1, Insightful)

geekgirlandrea (1148779) | more than 5 years ago | (#26067963)

Please keep them away from any form of BASIC. The last thing this world needs is even more programmers who couldn't understand pointers or recursion if their lives depended on it. Start them with C, and then let them try high-level stuff once they understand what's going on under the hood. No, it really isn't too difficult. I did my first non-trivial programming and learned C and x86 assembler around that age.

I fully agree (1)

Skapare (16644) | more than 5 years ago | (#26068119)

I fully agree. It's about knowing what is going on inside computers. If they don't do this, then things like "binary arithmetic" are invisible and nothing more than a "mathematical oddity" to try as a toy project. Definitely stay away from languages like BASIC. I'll leave my bias against C++ and Perl out of this, for now.

Gorilla and Nibbles in BASIC (1)

SonicSpike (242293) | more than 5 years ago | (#26067965)

When I was that age I learned BASIC by changing the text in the Snake and Gorilla BAISC game that came with DOS. In my high school they had a programming class that was mostly BASIC but also taught Paschal.

Re:Gorilla and Nibbles in BASIC (1)

Amazing Quantum Man (458715) | more than 5 years ago | (#26068173)

In my high school they had a programming class that was mostly BASIC but also taught Paschal.

So they taught religion in the programming class? I could understand teaching Pascal, though.

Fun programming puzzle (1)

Fjodor42 (181415) | more than 5 years ago | (#26067973)

Towers of Hanoi is always a hoot :-)

JavaScript (5, Insightful)

Cyrano de Maniac (60961) | more than 5 years ago | (#26067975)

I hate to say this since I don't even know the language (heck I'm barely competent with HTML) and came up through GW-BASIC, Turbo Pascal, assembly, FORTRAN, C, Tcl, C++, Perl, and some others I'm sure I'm overlooking, but...

JavaScript

First, it's nominally C-like, so it gives them exposure that will help them with a large variety of other languages (e.g. C, Pascal, C++, Java).

Second, it's available to be used pretty much anywhere the kids have access to a computer. At home. At school. At a friends house where they can show off their newfound coolness. Don't underestimate this, because it's very important that they have access to the necessary programming tools in their idle time at home and elsewhere. It's also important because they don't need to learn how to use a compiler, linker, and all those other tool distractions that will get in the way of understanding programming itself.

Finally, it's useful in a context they likely already somewhat understand -- web pages. Fibonacci sequences and prime number sieves and such are all wonderful, but an environment that allows them to build something a bit more interactive and, lets face it, relevant to their day-to-day life, will inspire some portion of them to continue the pursuit. Granted, I got a lot of personal satisfaction out of writing BASIC programs to print "x" characters in a sine wave scrolling up the screen, but somehow I think the bar has been raised for today's kids' expectations of what a computer can do.

Re:JavaScript (1, Insightful)

nobodylocalhost (1343981) | more than 5 years ago | (#26068247)

No, just no. You ever debugged js before? I am sure those kids will make mistakes, but finding that one typo in 2000 lines of code using js console output is a nightmare. Let's not even get into the js cross browser compatibility issues. Also, unless you are using chrome exclusively, odds are your program will be very very slow and eats tons of memory.

Any open source project (0)

Anonymous Coward | more than 5 years ago | (#26067979)

They could dive into an open source project. They are always a mess and a challenge to even figure out what is going on. Sounds like the perfect real-world intro to the world of programming.

Metascore [metascore.org] could use some help from some bright kids. :)

Or really, absolutely any open source project would do, since there is always something to which anyone can contribute.

wikipedia (5, Informative)

jbolden (176878) | more than 5 years ago | (#26067993)

I (and others) wrote a good wikipedia page on this topic
http://en.wikipedia.org/wiki/Educational_programming_language [wikipedia.org] . I'd look at this list

I personally love and can recommend Alice http://www.alice.org/ [alice.org] and had a great deal of success with my daughter with this.

QBasic still one of the best (4, Interesting)

Zouden (232738) | more than 5 years ago | (#26067995)

If only for the graphics control. It lets you draw text anywhere on the screen, and clear it, enabling quite sophisticated graphics and animations. It can also wait for user input and respond, so you can make games with it. Kids love that sort of thing.

Logo has good graphics control but poor input-response, and Python is a much better language than both Logo and QBasic, but since it can't (easily) do graphics, it appears quite boring.

Pick a language... (1)

Phred T. Magnificent (213734) | more than 5 years ago | (#26067997)

There are several languages out there that can work well as introductory languages. C probably isn't your best option, but any of Perl, Ruby, PHP or Python would do fine. Scheme or Lisp might be interesting, too, but I'd probably save those for a second or third language. The concepts they emphasize are important and well worth knowing, but probably not the first things to be learned.

More important than the choice of language is the analytical thought process of programming -- breaking down the thing you want done into small enough pieces that you can tell the computer, in some language, what steps to take to do the job.

Experience... or rather lack of. (0)

Anonymous Coward | more than 5 years ago | (#26068005)

I am a freshman who goes to a technical charter high school. I don't know how talented or gifted of kids your looking at but we were introduced to HTML just two months ago. I'll try to find out what programming language they teach first, but with 11-14 year olds it's going to be more of a task keeping they're attention then teaching them something. From experience with martial arts instructing I would say you either need to split them into groups (less talented, moderately talented, extremely talented)or build from the bottom, explaining that it would be good to review the basics first. The number one thing though is ALWAYS keep them busy.

Lojban (2, Interesting)

Sybert42 (1309493) | more than 5 years ago | (#26068019)

Lojban is a constructed, parsable language that can deliver the same (or greater) information content as natural languages.

Division algorithm (1)

mpc22 (1126077) | more than 5 years ago | (#26068023)

Coding up the division algorithm for integers is very insightful. Also, showing it's application to the euclidean algorithm connects all kinds of fun math and algorithmics with programming.

BASIC and Logo (1)

Lightwarrior (73124) | more than 5 years ago | (#26068043)

3-2-1 Contact (and encouragement from my father) got me started programming Basic on our family's Apple IIe computer. In elementary school, Logo helped it along.

Either of those, or their modern equivalent, should be great. Basically anything where you start off seeing direct, tangible results and then move on to the theoretical stuff.

Wow. That really took me back. Is there still good media like 3-2-1 Contact and Square One for kids?

Project Euler (2, Interesting)

MozeeToby (1163751) | more than 5 years ago | (#26068057)

For different challenges you could put them to, I would recommend http://projecteuler.net/ [projecteuler.net] . There are a huge variety of programming challenges (most involving math concepts) across a huge range of difficulty. They also provide a good introduction to recursion and cost of complexity since the 'most efficient' algorithm is not always obvious.

You could provide prizes for who completed the most problems as well as a prize for being the first to complete a problem. Then when all or most of the class has completed a problem, you can show them an 'efficient' or 'simple' solution depending on which you want to emphasize.

Re:Project Euler (0)

Anonymous Coward | more than 5 years ago | (#26068201)

I'd say most of those problems are inappropriate for 11 year olds, not to mention they really don't teach you how to program.

PLT TeachScheme! and Bootstrap (1)

KanshuShintai (694567) | more than 5 years ago | (#26068061)

The PLT [plt-scheme.org] TeachScheme! [teach-scheme.org] project has a curriculum for teaching programming to high school students, and apparently it's been modified for middle school students as well in the Bootstrap [wikipedia.org] project.

LOGO and LOGO for Legos (2, Informative)

BennyBigHair (636963) | more than 5 years ago | (#26068085)

i got a mild introduction to programming from learning LOGO and LOGO for legos (that may be deprecated by now). anyways, the first 'big' project i did was a Mastermind clone. it taught me the basics of looping, random number application, and how to make use of the mouse.

Exploration (1)

fermion (181285) | more than 5 years ago | (#26068089)

I started learning about that age on a teletype. It really didn't stick until I got into a formal class in high school and learned Fortran. The key, to me, is exposure and exploration. For instance, in a pre engineering class, the 11-14 year olds are taught the tools and how they can be used to create. The older students are then given specific tasks with deadlines, deliverables, and consequences.

Therefore I would suggest an exploration type of experience, especially for the pre teens. I also would not focus on giving the latest tools, as it will be 10 years before most of them are out in the market, and tools will change. One nice application is the Alice software from Carnegie Mellon, along with story telling Alice for the small kids. It is free and teaches many of the concepts of OO and procedural languages. What is bad is there is no real curriculum for it, IMHO, targeted to under 16 set. OTOH, it does teach many good concepts, and does engage kids.

For a more traditional approach here would be my objectives. Note that the language and tools are unitmportant. What I think is important is to encourage abstract thinking. Number one: algorithms and procedures. These are important in math and science, yet most students cannot write a good algorithm. They leave large gaps. If a student can write an algorithm to count, or sort, or whatever, and code it, your science teachers will worship you.

Number two: variables. Many kids can never understand variables. What are they, how are they used, why do they change over time(they vary, duh). By focusing on variables, constants, and parameters, the kids will gain an important problem solving tool. You math teachers will worship you.

Number three: Form and syntax. Make them use a language to code! It teaches that almost is not good enough. Everything has to be perfect. This is why Fortran is so wonderful. It forces the student to focus on the details and the overall process. This is like writing an essay. You have an overall goal and parts that must be equally organized. Now the english people are on board.

Lastly, my pet peeve, i=j; j=i is not a swap operations. Any kid that can understand this is ready for any math or science high school class. In fact this is the first thing I would do. Write a swap function. Watch it fail. Let them fix it. See the joy when understanding comes through.

None of this needs to complex or over the kids head, and they can take as long as they like to learn the concepts. Those who race ahead can solve typical problems like stacks, efficient sorting, and the like. One thing I see missing is the lack of teaching of basics, stuff that is now buried deep in the library. When one starts programing in college, sure it is hard to do all this, but when is programing at 12, there is time.

C and Hanoi (1)

zapakh (1256518) | more than 5 years ago | (#26068097)

My first language was BASIC, but I wish it had been C. If I'd been a member of a captive audience (such as an enrichment program) when I first acquainted myself with C, I might not have to deal with "but this isn't like BASIC". I imagine that the inevitable "but this isn't like C" would have been much easier to cope with. BASIC dulled my senses during my formative years. :(

For a toy problem, I've always been partial to Towers of Hanoi. Input n, then output a sequence of moves that solves the n-disc Hanoi problem in some format (e.g., "1-3, 1-2, 3-2, 1,3, 2-1" and so on). Recursion is very confusing for newbies. This particular problem was one of the influences that helped me out early on.

Visual Basic (3, Interesting)

tonyray (215820) | more than 5 years ago | (#26068105)

Actually, I started my son off with Visual Basic at age 12. It wasn't very difficult and it may well be better to start them off with event driven programing rather than procedural. Rather than writing the answer on a command text line, put the results in a text box. Push buttons to actually execute code. The kids will really like writing a program that looks more like what they are used to than some antiquated program written for use on DecWriters. My son loved it and now at 24 he is a programming project leader for a software development company.

Easy Enough (1)

exabrial (818005) | more than 5 years ago | (#26068113)

Ruby. I'm not a fan of it, but here's why it'd make a great starter language: 1. Loose, Forgiving, English-Like Syntax 2. Supported Everywhere 3. You can start with Functional Programming and later introduce OO. Finally, DONT FORGET TO MAKE THEM GRADUATE. Challenge them on their last few projects and make them do it in c++ or Java. I worked with a brilliant 15yr old in college (highschool programming contest), but he refused to try anything but Ruby "cuz it's best."

Ask for input from your students (2, Interesting)

FreshKarma (1333201) | more than 5 years ago | (#26068131)

If your students aren't total noobs, ask them about what languages or web technologies they might have thought about trying out, like, someday.

If they are total noobs, ask them what their favorite sites are. Protip: do not roll your eyes at any point after asking this question.

Either way, it will give them familiar ground to work from, and a little bit of context. myspace may be godawful, but learning from the mistakes of others is second only to learning from your own mistakes.

Try competition problems (1)

Qzukk (229616) | more than 5 years ago | (#26068147)

In my experience, CS programming competitions tend to have entertaining problems that should keep the kid's attention. The American Computer Science League has a small handful of quizzes and example problems posted on their website here [acsl.org] . ACSL's contests are designed so that each difficulty level's problem builds upon the previous problem. Another example is the International Olympiad in Informatics, which has problems from each of their contests here [ioinformatics.org] .

Scheme and "How to design programs" (1)

stevebyan (806118) | more than 5 years ago | (#26068167)

Use the text "How to design programs" and Scheme. It's been used in high schools, is quite approachable, and is easily motivated by connection to recurrence relations, which seem to be a theme in my 14 year old's math curriculum. The book is free on the web, and the programming environment is also free and supported on many popular platforms.

When I was a kid it was much harder... (1)

Shao Ke (266962) | more than 5 years ago | (#26068189)

Wow, there are so many more options than when I began a little more than a century ago.
Back then unless you had access to high end hardware, there was basic and machine/assembly language. I was so stoked when I finally got the Assembler cartridge.
I lived in a small rural town so I had to scour magazines and the book store on trips to The Big City with an occasional nudge from an older brother who was in college.
You kids nowadays don't realize how easy you have it :).
Which one? Whatever gets them excited.

Re:When I was a kid it was much harder... (1)

Shao Ke (266962) | more than 5 years ago | (#26068199)

Uh, yeah, I mean "quarter century" :).

Why does everyone ignore C? (4, Insightful)

WarJolt (990309) | more than 5 years ago | (#26068191)

I always wonder why colleges start out teaching Java first. Procedure based languages are easier. You learn
2 + 2 = 4
before you learn
a^2 + b^2 = c^2.

You can learn the basics in any language. The syntax is all very similar. Lets look at the difference.
in C explain a routine.
int main(int argc, char *argv[]){
    return 0;
}
In java explain a class and a routine. Plus the string class is more complicated than a char * and an int.

class javaprog
{
                public static void main(String args[])
                {
                }

}

Always start with the fundamentals.
You should know what pointers are and what memory is before you learn what a class is.

A programmer needs to know why if he allocates 2 million empty string classes why his memory gets chewed up. To a C programmer the answer is obvious.
Fundamentals! Fundamentals! Fundamentals!

Perpetual calendar (1)

Skapare (16644) | more than 5 years ago | (#26068229)

One of my most fun "first month" programming projects was a perpetual calendar [wikipedia.org] . I did that in Fortran [wikipedia.org] back then. These days it could be used to not only learn applying arithmetic in programming, but also an opportunity to learn something like HTML [wikipedia.org] by having the program produce its output as a web page. Or maybe even learn JavaScript [wikipedia.org] (after learning C [wikipedia.org] first ... to learn how computers work) and do it as a live web [wikipedia.org] page.

These are arguably not programming languages, but. (1)

m1ss1ontomars2k4 (1302833) | more than 5 years ago | (#26068249)

..you can try teaching them TI-BASIC or MATLAB. They're very simple programming languages that still have common aspects of programming (control structures, variables, etc.). Depending on what calculator you use to teach TI-BASIC, it might even be impossible to make typos (e.g. Than instead of Then). As I said, these aren't really programming languages, but that's how I started out. Arguably, I'm still "starting out" though...

That's easy... (2, Funny)

GFree678 (1363845) | more than 5 years ago | (#26068251)

COBOL.

Visual Studio Express (1)

cplusplus (782679) | more than 5 years ago | (#26068273)

I'm sure all these kids have computers at home, probably running XP. Given that, Microsoft publishes Visual Studio Express, which is a free download for hobbyists. They could download it and play around with it at home. It supports C#, VB, etc. - so pick a language of the day and try something. It would be an excellent place to start.

Project idea (1)

GroundBounce (20126) | more than 5 years ago | (#26068285)

When I taught my son programming when he was around 11 or so, the project I picked was to have him write a stack calculator, including a simple GUI (like a simple version of the GNOME or KDE calculators). It taught most of the basic elements of a program, including a simple GUI, but unlike a really simple game who's novelty would wear off quickly, it was something he was able to use, improve, and be proud of for some time after finishing it.

As to what language to use, that's a hot topic and you'll hear lots of opinions. At the time, which was a long time ago, we used Tcl/Tk because it was simple, had a very easy-to-use fully integrated GUI toolkit (Tk), and was high level in that it avoided having to worry about complex issues like memory management and pointers, which could overwhelm some 11 year olds. OTOH, it taught programming concepts beyond what you could do with something really basic like LOGO. I'm not necessarily suggesting it now, however -- it might not be the right thing today, when there are other potentially better choices like Python, Java, etc.

Games (1)

jaavaaguru (261551) | more than 5 years ago | (#26068293)

I wrote the snake game (now made famous by Nokia) in SuperBASIC on a Sinclair QL when I was about 10. Get your 11 year olds writing a simple game, they'll love it. Tetris was the next one I did.

Processing! (1)

smilinggoat (443212) | more than 5 years ago | (#26068301)

Processing [processing.org] is based on java and is all about visuals. It removes all the obnoxious set up and background necessary from lower-level languages, allowing students to focus on concepts and not minutiae. And the fact that it's output is drawing stuff on the screen keeps the reward-level high and immediate!

If there's one thing that will interest kids in programming for a lifetime, it's getting them turned on to fast and cool-looking results.

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Create a Slashdot Account

Loading...