Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Education

Best Introduction To Programming For Bright 11-14-Year-Olds? 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?
This discussion has been archived. No new comments can be posted.

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

Comments Filter:
  • Assembly (Score:5, Funny)

    by loteck ( 533317 ) on Wednesday December 10, 2008 @06:42PM (#26067745) Homepage
    We'll see how bright they are then...
    • Re:Assembly (Score:5, Funny)

      by 77Punker ( 673758 ) <spencr04NO@SPAMhighpoint.edu> on Wednesday December 10, 2008 @06:44PM (#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: (Score:3, Insightful)

        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
    • Re: (Score:3, Interesting)

      by DrLang21 ( 900992 )
      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).
    • Algebra I (Score:3, Insightful)


      I wouldn't want to try to teach "programming" to any child who hadn't had Algebra I [and preferably Algebra II].

      I suppose that "programming" could serve as an introduction to Algebra I, but my gut tells me that that's the wrong way to go about it.
      • Re:Algebra I (Score:5, Insightful)

        by caerwyn ( 38056 ) on Wednesday December 10, 2008 @08:03PM (#26068669)

        Why? I taught myself BASIC at 7 with an Apple IIgs' built in interpreter- I was a good 5 years from my first Algebra I class at that point.

        Algebra is relevant for the manipulation of expressions with variables, but is completely unnecessary for the *evaluation* of expressions with variables, which is what programming really is. Higher math is generally required for complex algorithm creation, but for introductory programming assignments it's really unnecessary.

      • by readin ( 838620 )
        Knowing a little algebra confused the heck out of me when I was taught programming. How can X = X + 1 make any sense? That would imply 1 = 0! Pure nonsense!
    • Re: (Score:3, Insightful)

      by riceboy50 ( 631755 )
      You jest, but that is actually a fabulous idea because then you get a little understanding of how computers work at the same time without having to unlearn "magic" later.
  • Lua? (Score:5, Interesting)

    by slime73 ( 1083393 ) on Wednesday December 10, 2008 @06:43PM (#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. :)
  • 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.
    • Re: (Score:3, Funny)

      by rolfwind ( 528248 )

      "Functional programming is making a comeback- it's going to be to the 2010s what OOPs was to the 1990s."

      That's rather unkind. I don't think Functional Languages are going to screw up an entire generation;)

  • LOGO! (Score:5, Insightful)

    by mamono ( 706685 ) on Wednesday December 10, 2008 @06:44PM (#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.
    • by Swizec ( 978239 )
      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
    • Re:LOGO! (Score:4, Informative)

      by themba ( 11220 ) on Wednesday December 10, 2008 @07:14PM (#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].
      • Re:LOGO! (Score:4, Insightful)

        by laird ( 2705 ) <lairdp@gmailCOW.com minus herbivore> on Wednesday December 10, 2008 @11:34PM (#26070697) Journal

        I'll second this. While Logo has a reputation as a limited language, it's actually as expressive as Lisp, which is to say that it's a more powerful language than most, though teachers tend not to go too far with it.

        Back when I taught kids programming, I found that the best languages were the ones that supported iterative development so that users could easily try ideas. For this, Logo is perfect. Once kids learn Logo, they know about variables, scope, functions with parameters and return values, recursion, closures, etc., all of which apply to any civilized language.

        There more modern instructional language options, such as Squeak/Scratch (http://scratch.mit.edu/) and OpenStarLogoTNG (http://education.mit.edu/starlogo-tng/) that are really fun as well. They are (IMO) a bit too complex for very young programmers (I taught 5-6 year olds simple Logo programming, as it's designed to be super-approachable for kids, but I think that a kid would have to be 7-8 to tackle those).

  • Python (Score:5, Insightful)

    by EvanED ( 569694 ) <evaned@gm3.14159ail.com minus pi> on Wednesday December 10, 2008 @06:44PM (#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.

    • Of course, the real objective is teaching them how to break down a problem into logical steps. If your language bogs them down with harsh syntax (like c) or with weird data structures (like lisp) or onerous drudergy to get the simplest things done (assembly) then that gets in the way of the learning. Also, kids thrive on results and experimentation, so you need to have a language that the kids can do something relatively useful relatively quickly in. That means a language with an immediate mode.

      So, I c
    • Re: (Score:3, Informative)

      by steveha ( 103154 )

      I second the recommendation for Python.

      Python will let you focus on the fun and interesting parts. Compare "Hello, world!" in C vs. in Python; in Python you jump right in and print something, whereas in C you need to declare your main() function and import before you can do anything.

      I recommend you grab Python 3.0 and use that to teach the kids. It's Python 2.x with a few sharp corners knocked off. For example, integer division is now unsurprising:

      print(1 / 2) # prints "0.5"

      In older versions of Python,

  • DO NOT (Score:4, Insightful)

    by MindlessAutomata ( 1282944 ) on Wednesday December 10, 2008 @06:45PM (#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 (Score:5, Funny)

      by Red Flayer ( 890720 ) on Wednesday December 10, 2008 @07:25PM (#26068289) Journal

      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.

      • Re: (Score:3, Funny)

        by MikeS2k ( 589190 )

        My kingdom for a mod point, high shcool teahesr VB to get the kids to grips with the very basi (If statements, arrays etc)

        This basic launguage got me started today.

    • VB YES (Score:3, Interesting)

      by anorlunda ( 311253 )

      I disagree, and I'll tell you why.

      An introductory course in programming does not have the purpose of teaching people how to program, or to learn good practices etc. It should help the students to decide whether or not programming is something they are interested in pursuing. Further, those students who decide not to go further, should walk away with some value that enriches their lives anyhow.

      I've taught several introductory courses and I use VB as the vehicle. In only 3 hours of classroom work I can te

  • Look at POV-Ray. (Score:5, Interesting)

    by Gavin Scott ( 15916 ) * on Wednesday December 10, 2008 @06:46PM (#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.

  • by LibertineR ( 591918 ) on Wednesday December 10, 2008 @06:47PM (#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 (Score:4, Interesting)

      by 77Punker ( 673758 ) <spencr04NO@SPAMhighpoint.edu> on Wednesday December 10, 2008 @06:51PM (#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: (Score:3, Informative)

      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.

    • by LWATCDR ( 28044 )

      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.

      • by ClassMyAss ( 976281 ) on Wednesday December 10, 2008 @09:01PM (#26069305) Homepage
        If you want to go the Java route, start with Processing [processing.org] instead of pure Java if you really want things to be easy - things like drawing take no work ("line(10,10,100,150);" on a line by itself in an empty Processing file will draw a line, just like any extreme beginner would expect...), and it's very easy to transition to real Java later on (and also possible to use it within Processing, for that matter, so you lose very little). There's also lots of 3D stuff and libraries for advanced students, and as an additional bonus you don't have to hit kids with something as complex as Eclipse or Netbeans when they're just trying to write "Hello, World!".
    • by fuzzyfuzzyfungus ( 1223518 ) on Wednesday December 10, 2008 @06:55PM (#26067911) Journal
      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?
    • by ion.simon.c ( 1183967 ) on Wednesday December 10, 2008 @07:27PM (#26068305)

      *nods*

      MSFT isn't the first place that I'd go.
      I was *quite* pleased with my copy of Sam's "C++ In 21 Days", DJGPP, and EDIT.

      Hell, while we're here, why not talk about Squeak? It has an absolutely *KILLER* IDE, is cross-platform, and is free and unencumbered. :D

      • I've been following along this semester's CS61A Lectures by Dr. Brian Harvey out of UC Berkeley (audio and video podcast). He devotes two lectures to a 20 some year old videotape of Alan Kay talking about the coalescing of OOP principals in SmallTalk. Kay makes an important point: at different ages we learn differently. He also shows kids doing clever things with drawing and computer animation and they do it by writing programs. Look for Sept. 12 and 15 [berkeley.edu].

        I also found a book from Apress "Squeak, Learn Progr

  • 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.

  • Lego Mindstorm (Score:5, Insightful)

    by Dynedain ( 141758 ) <slashdot2@anthon ... Nom minus author> on Wednesday December 10, 2008 @06:51PM (#26067855) Homepage

    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: (Score:3, Interesting)

      by Mista2 ( 1093071 )

      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)

    • Re:Lego Mindstorm (Score:5, Informative)

      by tylerni7 ( 944579 ) on Wednesday December 10, 2008 @07:48PM (#26068519) Homepage
      I remember getting the RCX a few years ago, I think that was probably one of my first experiences programming even...
      I would not recommend the default graphic programming language for 11-14 year-olds, however. There are a lot of third part languages [wikipedia.org] you can use to program it, which not only allow you to do more, but also will be more educational and feel less like a toy to the kids.
      I agree with you that programming something like a robot is nice because they get to do something in the real world, but at that age, the kids should really be doing something more than sticking blocks together on a screen.

      On a similar note, you may want to try Processing/Wiring. Both are based on Java, so they are pretty easy. Wiring is used in a lot of micro-controllers, so it might be interesting to try that route instead of the Lego kit if the kids are really into it.
    • Re:Lego Mindstorm (Score:4, Interesting)

      by mothlos ( 832302 ) on Wednesday December 10, 2008 @08:59PM (#26069293)

      Of the suggestions I have seen this one makes the most sense to me (with a close second being the games suggestion a bit down). Education simply works better when you are learning to DO something. The language you choose isn't as important here as what the interests of the students are. After you know the student interest you will then have a better idea of what language to write in.

      Another idea would be to use Rails to design a school community website and then later design a site for a local non-profit group. Integrating programming with community outreach and provider client interaction would be great at this age.

    • Apart from the regular Lego language there are a whole host of other third party ports including LeJos (Java) and many others.

      Mindstorms is far from being a dead end toy and is used in many university programs too.

      Robotics is an excellent way to learn about programming. You see real stuff happen, not just pixels on screens. You see the algorithm actually working. A bug is impressive ... crashing debricking robots make you really think. My kids (and I) have two Lego NXT sets and one RCX set. We build our own

  • by caseih ( 160668 ) on Wednesday December 10, 2008 @06:51PM (#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 (Score:4, Informative)

    by Foofoobar ( 318279 ) on Wednesday December 10, 2008 @06:52PM (#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? (Score:2, Informative)

    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 han

  • Alice? (Score:5, Informative)

    by SpectraLeper ( 1079785 ) on Wednesday December 10, 2008 @06:52PM (#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.
  • 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 yo

  • Try Python. (Score:4, Informative)

    by atomicthumbs ( 824207 ) <atomicthumbs@3.1415926gmail.com minus pi> on Wednesday December 10, 2008 @06:52PM (#26067879) Homepage
    Take a look at this: http://www.swaroopch.com/notes/Python [swaroopch.com]
  • Scratch (Score:5, Informative)

    by Num6 ( 792641 ) on Wednesday December 10, 2008 @06:52PM (#26067881) Homepage
    http://scratch.mit.edu/ [mit.edu] Scratch is very cool, comes with an educational program for kids. It's an mit/ucla project
  • by Anonymous Coward
    I'd think the only reasonable languages to start programming should be PL/1 or COBOL. Whitespace or Brainfuck could be suitable alternatives.
  • by RJBeery ( 956252 ) <rjbeery@gma i l . com> on Wednesday December 10, 2008 @06:55PM (#26067915)
    Lisp.
  • When I was 10 I learned Fortran... On cards... On a big mainframe.

    And we were grateful!

    Boy I feel old.

  • PostScript (Score:4, Informative)

    by Colz Grigor ( 126123 ) on Wednesday December 10, 2008 @06:56PM (#26067927) Homepage

    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.

    • Re: (Score:3, Interesting)

      by Kent Recal ( 714863 )

      Sounds like you have a deep hate for children?
      Seriously, there are valid arguments for Lego Mindstorms, Assembler, Python, heck some twisted mind may even find an argument for Java.
      But how exactly do you intend to explain to a kid why it basically has to write his first program backwards, in a syntax and under semantics that can make even veteran programmers cry for mercy?

  • simple: use perl (Score:5, Insightful)

    by petes_PoV ( 912422 ) on Wednesday December 10, 2008 @06:56PM (#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 (Score:4, Insightful)

    by grege1 ( 1065244 ) on Wednesday December 10, 2008 @06:57PM (#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.
    • Re: (Score:3, Insightful)

      by Red Flayer ( 890720 )
      But that's not programming at all... HTML is a translator, that's it.

      Using HTML to teach programming is like using a French-English dictionary to try and get laid in Paris.

      You might be teaching them the grammar and words, but it's not going to enable them to programmatically solve a problem.

      I'd start by demonstrating a finished product that can be programmed using all the techniques you'll teach in the course, and work backwards to teach them the programming logic and constructs. By the end of the cours
  • JavaScript (Score:5, Insightful)

    by Cyrano de Maniac ( 60961 ) on Wednesday December 10, 2008 @07:00PM (#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.

    • JavaScript will give young programmers the immediate feedback that I think many of us found so addictive back in the early days. Lots of comments here talk about "kids these days"; about how they're somehow dumber than us for not jumping into C right away.

      But I think we forget: modern computers are extremely complicated. There wasn't much that could go wrong on my old TI (OK, there wasn't much to go right, either, but I digress). How many of you out there have really written something in C? I don't m
  • wikipedia (Score:5, Informative)

    by jbolden ( 176878 ) on Wednesday December 10, 2008 @07:01PM (#26067993) Homepage

    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.

  • by Zouden ( 232738 ) on Wednesday December 10, 2008 @07:01PM (#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.

  • Project Euler (Score:3, Interesting)

    by MozeeToby ( 1163751 ) on Wednesday December 10, 2008 @07:07PM (#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.

  • Visual Basic (Score:4, Interesting)

    by tonyray ( 215820 ) on Wednesday December 10, 2008 @07:11PM (#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.

  • by WarJolt ( 990309 ) on Wednesday December 10, 2008 @07:18PM (#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!

  • by tknd ( 979052 ) on Wednesday December 10, 2008 @07:36PM (#26068401)

    The problem with most introductory programming courses is that they drop you in the deep end and expect the student to eventually figure out how to stay alive based on all the tools they start throwing at you. And I'll be honest, I don't have an answer as to what programming language you should use or if it even matters. Let me explain.

    I first started learning programming at the age of 14 (first year in high school). So I might have been one of these kids. Prior to that I knew how to write html and make webpages. That part was easy because there is no programming there. But when I got to my introductory programming course taught in C/C++ at the time, I didn't feel equipped as a student to tackle the problems presented. For example one of the tougher problems in the course was printing a diamond (ascii art) of stars based on a given number as input. So if they provided you with an input of 5, that meant at the widest point, the diamond would be 5 consecutive * characters with the previous and next lines being 3 consecutive * characters followed padded by one space on each end, and finally the top and bottom lines having one * with 2 spaces padding the left and right sides. Keep in mind that by this point, as a student, the most I had learned was basic algebra and perhaps a bit of geometry. The real heavy math/science courses were to be taught later in high school involving trigonometry, calculus, and physics.

    Continuing on with the story, most students in the introductory programming class failed at this simple task of printing a diamond to the screen. It wasn't because of their lack of knowledge regarding programming, but their lack of knowledge regarding problem solving skills and the application of math. Had the teacher reviewed the problem at hand, by examining the necessary parts (calculations involved) on a black or whiteboard, I think all students could have implemented a solution. But the place where students were struggling was finding A solution. They would start writing 'for' loops knowing that this was a test of how well you understood 'for' loops without having a clue of why they needed the loops or what the loops were going to do.

    So if you want your students to succeed, the language of choice will be the least of your problems since you are not bothering to teach high level programming paradigms (OO, functional, logic etc). The bigger problem will be how to teach the students to apply what they already know in a fashion they've never seen.

  • Python (Score:3, Informative)

    by Secret Rabbit ( 914973 ) on Wednesday December 10, 2008 @07:39PM (#26068425) Journal

    It uses language as close to natural as I think a programming language can. It also forces proper indentation, which, as we all know, is very important for readability. It's also a scripting language that is very useful in RAD. All in all, it's a very good first language for those that don't want a C, hair pulling out, first experience. It also runs pretty much everywhere. Also, if you want to do graphics and/or games, there's Tkinter, PyOpenGL and PyGame.

    Happy Hacking!

  • by macz ( 797860 ) on Wednesday December 10, 2008 @07:41PM (#26068445)
    It was developed by MIT (http://scratch.mit.edu/) and has some cool stuff to keep their interest.
  • by Archangel Michael ( 180766 ) on Wednesday December 10, 2008 @07:55PM (#26068577) Journal

    FOR $DIETY sake, don't do it!!! You'll end up surfing Slashdot ALL DAY like the rest of us.

    If you're really bright, go into Physics or Chemistry! Better chance at girls than living in your mom's basement for the next 30 years till you're too old to program any longer!

  • by Tom ( 822 ) on Wednesday December 10, 2008 @08:06PM (#26068695) Homepage Journal

    Whatever you do, never ever ever teach someone BASIC. Not QBASIC and not any other flavour. It was my first programming language, too, and it took almost ten years and a study of computer science to finally get all those bad habits you acquire in BASIC out of my system. DO NOT POISON INNOCENTS WITH BASIC.

    You can consider Pascal, which after all was designed specifically as a teaching language. There's also Oberon if you want to go more into OO and make sure that the language they learn on will never be used in an actual real-world context. :-)

    Java, Mono, C++, etc will probably all be suggested, but I wouldn't consider them suitable for beginners.

  • Scratch (Score:5, Insightful)

    by Jimmy King ( 828214 ) on Wednesday December 10, 2008 @08:10PM (#26068725) Homepage Journal

    I was just looking into this recently for my nephew. Scratch [mit.edu] looks really cool. I downloaded it and played for a few minutes and e-mailed my sister to tell her to install it for her kid. She hasn't done it yet, so I don't know if it was as good of an idea as I thought, but it sure looks cool.

    It has color coded, drag and drop logic stuff that interlock like a puzzle so that kids can see how it fits together. It takes seconds to get a little animated sprite "walking" and do the fancy, whiz bang, pretty stuff today's kids will be wanting to see right away.

  • Language (Score:3, Informative)

    by TheBradshaw ( 1428829 ) on Wednesday December 10, 2008 @08:11PM (#26068741)
    I would suggest Alice http://www.alice.org/ [alice.org]. It is a drag and drop interface to a 3D environment. It is FREE and was designed at Carnegie Melon University. I teach high school sciene and have almost zero programming background. I learned the basics in two weeks at a summer workshop at Duke University. The last week of the workshop was a summer camp for middle school aged children. They picked it up easily, enjoyed making worlds, and learned quite a bit about basic programming. Once they learn it, they can easily start exploring languages like Java.
  • by Greyfox ( 87712 ) on Wednesday December 10, 2008 @08:22PM (#26068879) Homepage Journal
    It's very helpful to be able to make a change to the code and see how it affects the application. Good candidates would be Logo, Postscript or Squeak (A smalltalk dialect built for just such purposes.)

    The problem you're going to run in to with beginning programmers is that they have to learn the environment as much as the language. I remember back in the day we had to adapt to an assortment of editors and operating systems. To an extent the lack of choices in this arena is going to help you out here. I'm assuming kids these days have some computer experience coming in to your classroom, too. If that's not a safe assumption, you might consider covering how to operate a computer first.

    You can go with a compiled language like C or... well C. No java? I've tried to explain classpaths to IT professionals with little success. Maybe it'd be easier to a 14 year old. If you do that, you should probably set up the environment and gloss over stuff like building a makefile. It was not uncommon for our professors to hand us a cheat sheet describing how to build and run the code along with the vi cheat sheet. Those languages will be visually more boring than the ones with immediate visual feedback, but they might make it easier to explain what's going on inside the computer.

  • by isdale ( 40622 ) on Wednesday December 10, 2008 @08:47PM (#26069153) Homepage

    Alice and StoryTelling Alice [alice.org]
    "Alice is an innovative 3D programming environment that makes it easy to create an animation for telling a story, playing an interactive game, or a video to share on the web. Alice is a teaching tool for introductory computing. It uses 3D graphics and a drag-and-drop interface to facilitate a more engaging, less frustrating first programming experience."
    Thank you Randy Pauch. We miss you.

    Or try
    Myro [roboteducation.org] using Microsoft Robotics Studio

    or Pyro [pyrorobotics.org] which was the non-MS precursor to Myro... program bots in Python with either real bots or simulation.

    Either way, the graphical environments and real bots give kids a great way to SEE and TOUCH their results, which is more how they learn. You can cover all the important software constructs (variables, loops, events, data structs, etc) and avoid some of the abstract conceptualization required in more conventional languages/applications. They will learn the concepts through doing & using them. Then once they are hooked, they can dig into other languages.

    Works great for middle school & college kids.... Pyro's got years of track record teaching intro to AI - to liberal arts majors!

  • Alice (Score:3, Informative)

    by jordandeamattson ( 261036 ) <jordandm@noSPAm.gmail.com> on Wednesday December 10, 2008 @09:24PM (#26069509) Homepage

    I have found Alice (www.alice.org) to be a great introductory language for this age group. Depending on how quickly them come up on it, Ruby would be a great follow-on (assuming they have some experience with HTML, so they can use it with web apps).

    Jordan

  • Spring! (Score:3, Funny)

    by msormune ( 808119 ) on Thursday December 11, 2008 @07:48AM (#26073429)
    Wow, he already answered the question himself:

    I will be teaching an enrichment programming course to 11-14 year old gifted children in the Spring

    Spring [springframework.org] it is!

"There is no statute of limitations on stupidity." -- Randomly produced by a computer program called Markov3.

Working...