Slashdot Log In
Teaching Primary School Students Programming?
Posted by
Cliff
on Sat Aug 26, 2006 07:25 PM
from the toddlers-as-coders dept.
from the toddlers-as-coders dept.
NotesSensei asks: "Recently I was teasing the teacher who runs the computer club in my sons' primary school: 'You teach the kids only how to use software but not how to make software.' Today I got an email: 'OK, you're in: teach them programming.' Now I wonder what language should I pick? My first lesson will be the board game c-jump, but after that? The contestants are: Kids programming language KPL (ab VB.net derivate; Java using BlueJ; Greenfoot (and the BlueJ); and HTML. Does it sound like I'm on the right track or should I try something completely different? We are looking at primary 3-5 (that's 10-13 in this part of the world). Where can I find inspiration for the curriculum?"
Related Stories
[+]
News: Best Introduction To Programming For Bright 11-14-Year-Olds? 962 comments
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.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Scheme? *ducks* (Score:4, Interesting)
The Little Schemer [neu.edu]
Just a thought...
Re: (Score:2)
That's a feature of the interpreter being used, not a feature of the language.
In any case, teaching a programming language requires learning it beforehand in order to understand the concepts of the language. There was an IFComp entry called "Lists and Lists" that provides the basics on how to do
Re:Scheme? *ducks* (Score:5, Insightful)
Scheme is a beautiful language and for children and math and physics people, is easier to understand than traditional C syntax-based languages.
In fact, the main benefit of using a language from the lisp family is that it makes you a better programmer for the rest of your life, no matter what language you use in your job.
In a related note, I postulate LOGO, because that's what I learned when I was a child and it really helped me to grok programming. Beautiful programming.
Parent
Re:Scheme? *ducks* (Score:4, Informative)
But how about Logo Programming language?
http://en.wikipedia.org/wiki/Logo_programming_lan
Another lisp dialect that is very easy for the kids. I find the 3 choices of the submitter (not the parent) a little too restrictive - and the limited experience I have with VB taught me it's absolutely horrible as a programming language. Variable settings I specified to be done wasn't because of some arcane rule or something else. Beginning programming languages should be as straightforward as possible.
Parent
Re: (Score:3, Informative)
I strongly suggest checking out:
The Teach Scheme Project [teach-scheme.org]
How to Design Programs [htdp.org]
The first is a project designed around teaching programming through scheme, and the second is the text book for the project (full text online, free).
Re: (Score:3, Interesting)
If you teach anything other than Lisp or Smalltalk first is like trying to teach someone to write prose using Enid Blyton as your reference. Event
Karel (Score:4, Informative)
Re: (Score:2)
karel is an excellent way to teach programming without having to go deep into the math parts of programming that would be over the average elementary student's head
Re: (Score:2)
We disguised a landmine as a beeper and blew him up.
BASIC? (Score:2)
Visual Basic might not be a bad idea either, least it's a language they can build on and easily use in Windows if they decide to pursue programming in the future.
Re: (Score:2)
Re: (Score:2)
-uso.
I find BASIC confusing (Score:2)
I think it's the relative lack of parens/brackets/etc. I don't like the whole "similar to English" thing when it comes to programming.
Kid's Programming Languages (Score:5, Funny)
Unless they're vaccinated, don't give them MUMPS [207.192.157.194]; if you do find a nice Doctor (Like Dr. Pascal [gutenberg.org]), 'cuz Pascal [trieste.it] was fun for me in College.
If they like noises, Squeak [gatech.edu] is good, but the cogently verbiaged might prefer SmallTalk [lesser-software.com] in a group. For those speech impaired, knowing there's other people who Lisp [alu.org] would be good.
The mean ones will abuse Snobol [fit.edu] in Winter
The A.D.D. kids will probably like the feeling of Euphoria [rapideuphoria.com] they get from their first
Of course, you could teach them a very nice language with a horrible name, Brainfuck [muppetlabs.com].
Or, you could just look Here [jvoegele.com] for a comparison of popular programming languages.
Re: (Score:3, Insightful)
HTML (Score:2, Insightful)
What about a snake? (Score:5, Informative)
Alternately, perhaps something more graphic-oriented would be desirable. If it were still around and supported, I would suggest Apple's Hypercard [wikipedia.org] program. It appears there are some clones [wikipedia.org] out there also, although I have no idea how good they are. (The first alternative listed says it is popular with educators.)
Good luck.
CeeBot (Score:2, Informative)
Pascal (Score:2)
Comments (Score:2)
Are you teaching a regular stream of students or the "gifted" stream? Also, which grade level are you teaching? The answers differ depending on what you want to do.
While you did mention the answer in the posting, it's still a bit vague. 10-13 years is a large age group - 10 year olds may minimally grasp the concept, while 13 year olds may need something a bit more complex.
You can do something much che
HTML a typesetting language??? (Score:2)
I fully agree with you that HTML is not a programming language but it sure as heck is not a typesetting language either. It is, as its name implies, a markup language. TeX is a typesetting language and a very good one at that.
Be that as it may, I think that teaching HTML could be a good way to introduce primary school youngsters to programming. I agree that it lacks all of the charm and complexity of a real programming
Python. (Score:2)
Languages like Scheme, Forth, SML are interesting and cool but the ways of thinking they teach are, for better or for worse, not part of the mainstream. Better to teach good OO methodology and design.
Squeak (Score:3, Informative)
Re: (Score:3, Informative)
Squeak is actually a Smalltalk [smalltalk.org] derivative.
[/pedant]
Re: (Score:3, Informative)
If the teacher finds the Smalltalk paradigm incomprehensible I'd suggest (s)he try Ruby. [ruby-lang.org] The author, quite truthfully, claims it's a 'surprise-free
kids programming language (Score:2, Informative)
Python and Blender (Score:3, Informative)
Also there is predone games of a wide variety of types that they can play with, take apart, and rebuild into their own.
LetterRip
Re: (Score:2)
The age range is 10-13, not 5-7. We have a number of individuals in the 10-13 range who have self taught themselves Blender and the game engine. If you use the Blender cheat sheet, you can learn the important parts of the interface in a few minutes. Or if in a class it can be tau
Wrong question (Score:2)
IMO, you're asking the wrong question. Almost any programming language will work, what you need to find is an appropriate curriculum and supporting materials. What's needed is a series of fun programming projects that start out very simple, but progress appropriately and catch and keep the kids' interest. The curriculum needs to be constructed around a specific language, so it can introduce specific language elements as needed to support the programming projects, but the language used is nearly irrelevan
justBasic (Score:2)
The link is here [justbasic.com]
My Curriculum (Score:2, Informative)
Grade 6: Drape [christianthompson.com] - A drag and drop programming language (No longer free but you can downloa it from my homepage).
Grade 7: Game Maker [gamemaker.nl] - A more complex drag and drop programming language created by the same person who created Drape.
Grade 8: Kids Programming Language [kidsprogra...nguage.com] - A BASIC-like programming language with eas
BASIC, Logo, ToonTalk (Score:4, Informative)
Logo [mit.edu] became available to me after I was "too advanced" for it, but certainly deserves a look as the "other" classical language for introductory programming.
I've heard some good things about Toon Talk [toontalk.com].
Or there's always BrainFuck [muppetlabs.com].
language not important (Score:2)
Programming, as we all know, is establishing a standard process, while allowing for certain deviations, in a directly or indirectly machine readable code. There are several layers of abstraction involve, the most obvious is the abstracting of they physical process, but one must also abstract concepts
No, the language is important (Score:2)
In the best case, everything they type will have meaning and value to them. Instant feedback is also a plus. That means your best bet is a dynamically typed languages with a REPL. Many other posters have suggested languages/environments with co
That isn't an answer (Score:3, Insightful)
First off, you didn't really answer the question (I'm assuming here that this AC post was written by fermion, since it contains the same types of odd grammatical errors as the grand parent post). Have you ever actually worked with kids?
I have, and my experience is much more in accord with the standard view of childhood as a period of intense learning and rapid acquisition of new abstractions than it is with your picture of children locked in a world of simple and concrete structures. If you want to teac
Teach them Haskell. (Score:3, Funny)
Hell, maybe it'll teach kids better habits (like focusing on the algorithm and on getting a working program first) than some heavy mittens language like Python or Javur. The error messages could probably be a little much for 10-year olds though. Maybe Helium, a Haskell variant geared for education and without some of the more esoteric features, would suit that better?
As an Educator I Recommend Piaget (Score:3, Interesting)
Also, you have to apply the 80/20 rule. We are all different and our brains develop differently. But Piaget's theory applies to 80% of kids. I like to use the Lego Mindstorms Robots. The robotics invention system supports big blocks e.g "Turn Left" or small blocks e.g. "Turn on Motor A, Turn off Motor B, Wait 5 Secs, Turn on Motor B". The Legos give kids the change to try to work with abstract problems, but they can drop back to the concrete stage very easily by using the cause and effect process.
I believe that someone mentioned Logo. That is a great 'cause and effect' type of programming language in which kids can create a small abstract program and then see concrete results. Allowing the young brains to move back and forth easily between concrete and abstract is the key to teaching programming at this age.
Hope that helped.
Re:As an Educator I Recommend Piaget (Score:5, Insightful)
Parent
Logo - visible results with simple programs (Score:2)
I'm using Logo (Score:2)
Logo. Good, old fashioned Logo was designed to teach programming to elementary age kids. We home school, so I work with Logo with my 7yo daughter. She loves it. And logo is built on a lisp engine, so there is significant power underneath. We use Terrapin Logo, FWIW, and like it. There are other choices. Terrapin has an interface to the Lego RIS robotics system, and also the FischerTechnic stuff, if you get that far. Also Terrapin has some useful lesson and teacher guide books to give you some hints o
Starlogo (Score:3, Insightful)
- Kids don't always remember details. This can be difficult, because most computer langauges are not forgiving in their syntax. Kids are good at picking up on details, but don't expect them to memorize things like StupidConfusingClassname isn't the same as stupid_confusing_classname.
- Kids like feedback. Thus, the read-eval-print-loop style is important toward keeping their interest.
- Related to that, the intrinsic graphical nature of logo is very engaging.
- This really just a general teaching comment (which I was totally new to when this project was given to me) - especially with totally new topics, kids will have all kinds of levels of ability and interest in the topic. It's important to have something that all of them can do, but also to have something to challenge the kids having an easier time of it. I would ususally introduce a simple topic and have everyone try it out, and then I would have a "master" level problem for the wiz kids to try.
- Robustness and responsiveness is good; kids aren't very patient, as a rule, and if the programming environment crashes, or performs slowly (and Starlogo, being a Java app, did run poorly on those iBooks), the kids will lose interest in it while they wait for the app.
I should also mention that StarLogo wasn't really being maintained when I was doing this (or it was being minimally maintained), but now it looks like someone has revamped the project with StarLogo, the next generation. Finally, whatever you end up choosing, don't teach them HTML and then tell them that it's programming. Few things irk me more than people talking about "programming in html". If you want to teach them HTML, fine, but don't let them think they're programming. By they way, youung children might have trouble with html for the first reason I gave above. The syntax is very clumsy and exacting, and worst of all, you don't get error messages from the browser when you screw it up! Anyway, have fun! njordRe: (Score:2)
I'd second this. I cut my teeth on Hypercard. You could make graphical programs trivially, and it was a fantastic program. It had some problems by the time I used it (System 7) such as it was only B&W and adding color made the stack uneditable.
What would I teach them today? That's a tough one. I wouldn't do VB (that's a nightmare, plus the IDE is complex). I'd say Python.
My suggestion would be to get them started so it feels like they are doing something. Write the shell to a program or a game (checke
Re: (Score:2)
I wish Jobs would port it to OSX but Apple once again had the best early concepts of what was to come but never could market it outside their camp.
Re: (Score:2)
Python is a true scripting language. While PHP was designed for the web ("PHP Hypertext Processor" as it is now), Python does "everything". For a GUI it has all the usual bindings available (QT, GTK, Win32, etc). Getting students to program a GUI is going to be very tough unless you use VB, as sad as that fact is. GUI programming is just very tough. Hypercard is about as easy as I've ever seen it. It's scripting language (Hypertalk) was also very English like. It's really too bad Hypercard is basically out
Re: (Score:3, Insightful)
Re:too young for abstract thought (Score:4, Interesting)
Parent
Re: (Score:3, Insightful)
You, sir, were simply an exception. I was in your league too. Alas, I did the mistake of becoming a teacher 1.5 years ago (I quit, now I am unemployed). Yes, I did teach some programming. You see, I thought too that kids could do this and I was confronted with 16+ year olds that had no concept of a variable. Something I took granted at that age. So, perhaps I was a lousy teacher (I will not argue over that, I know I was a bad teacher), but they did not know what a variable was even tought they had alge
Re: (Score:3, Informative)
Logo is another excellent suggestion. It has many basic control structures (like FOR loops) and is also very visual (which is good). With a few simple commands it's easy to make geometric shapes, snowflakes, or just color the screen with a neat pattern. For a plus, you could have them do assignments like draw a square, draw the letter "R", draw your name, draw a house, whatever.
For ease of results, Logo is probably the best suggestion I've seen yet.
Of course it's not a general purpose language (like Pytho
You can have Python with turtle power! (Score:3, Interesting)
Both are excellent suggestions, and the good news is that you can have the best of both worlds!
Simply download Python [python.org] and xturtle.py [asn-wien.ac.at] (the module is a single .py file, no need for complicated installation and no dependencies beyond the standard Python library).
The xturtle site [asn-wien.ac.at] has extensive documentation, interesting examples and, of course, screenshots [asn-wien.ac.at] (becaus
Programming is not just for programmers (Score:2)
Teach programming for the same reasons. Computers are everywhere; if people knew how to program they might have a better appreciation of how software