MIT Media Lab Making Programming Fun For Kids 318
An anonymous reader passed us a link to an article on the Boston Globe's website, talking up efforts by MIT to make programming a non-threatening part of grade-school education. MIT has developed a new programming language designed to encourage experimentation and play. Called Scratch, the project eschews manuals and high-level concepts in favour of approachability. "Efforts to make computer programming accessible to young people began in the late 1970s with the advent of the personal PC, when another programming language with roots at MIT — Logo — allowed young people to draw shapes by steering a turtle around a screen by typing out commands. But the path to mastering most programming languages has been strewn with obstacles, since students needed to figure out not only the underlying logic but also master a brand new syntax, observe strict rules about semicolons and bracket use, and figure out what was causing error messages even as they learned the program."
Lego Logo (Score:4, Interesting)
-Rick
Re:Lego Logo (Score:2)
I freak out new CS grads today when I convert hex in my head almost instantly.
Re:Lego Logo (Score:5, Funny)
What?! (Score:3, Funny)
Re:What?! (Score:2)
Indeed!
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
-- Edsger Wybe Dijkstra [utexas.edu]
Now that quote is from 1975, and here we are, trying to create a new and better beginners allpurpose symbolic instruction code.
Like Hegel told...
Oh well, nevermind.
Re:What?! (Score:3, Insightful)
After reading your post, I initially agreed with you. Then I remembered all the horrible, horrible crap I wrote in basic.
The problem with basic, as I experienced it, is that it never really taught me programming. I started out in QuickBASIC, screwed around for a bit, and then screwed around in Visual Basic. But nothing I wrote had any kind of structure at all. I would type in random statments, hit "run", have it fail to compile, attempt fix the compile errors, hit run again, get a runtime error, write a few more lines, and so on until it eventually worked. I never understood what I was writing, and I never really understood why certain things wouldn't work. That's the big problem with Visual Basic (besides being a hacked-together language): it makes it incredibly easy for beginners to write code that they don't understand.
I really don't think I made any progress until I started trying to write games in C++. The advantage with C++, of course, is that it forces you to prototype everything. It forces you to structure your code, at least a little. Since programs take a while to compile, unlike an interpreted language, it forces you to think about what you're typing instead of just trying different things until something works. IMHO the "shoot yourself in the foot" aspect of C++ is a very good thing -- it forces you to learn syntax instead of leaning on your compiler.
If I was going to teach a kid a language (yeah right) I'd probably start them in Java. There are loads of good introductory books, and it is relatively easy to do "cool" things with the standard library. But then after they'd worked out the urge to create little dancing applets, I'd have them build an LFS [slashdot.org] box. Once they'd achieved a usable environment, I'd have them learn assembly, then C, then C++. After that, any other language would be pretty trivial, because they'd really understand what was going on under the hood. It's only after you know how things work that you can start to think about learning "programming".
Yes, I probably sound like an elitist bastard, but I'm sick of hearing about this sort of thing in education. It's like how they have kids build model volcanoes and call it "science". That's not science. That's not even close. If you want to have kids grow up to become scientists, teach math, for God's sake. Make them do long division until the numbers seep into their little underage bones. Then get them doing calculus early. That way, they'll have a fighting chance when they have to take freshman physics.
Computers are just the same. You can't teach programming by having kids move blocks around in a GUI. At best, it's just a feel-good sort of thing so you can say you're teaching programming. If you're going to teach kids something, REALLY teach them. The fact that they're young is no excuse to not be rigorous. Teach them the real thing. Otherwise, you're just wasting their supposedly precious time as kids.
Re:What?! (Score:4, Insightful)
Pascal is more like modern programming languages, and while it has its problems, it's simple enough for a preteen to use.
As for your comment that BASIC gets slagged on slashdot -- I think typically it's VisualBasic that gets slammed, for giving people the tools to get a bit of programming done without making sure they have programming concepts down. People who learn to program in VBA learn a lot of bad habits, and if they start doing real development instead of basic scripts, they don't have the background necessary. It's not so much VBA that sucks IMO, it's the fact that so many VBA users learned how to write code without learning how to program.
Re:What?! (Score:2)
That is my biggest pet peeve with using modern IDEs to teach programming - that they are so abstracted. Not only do kids not learn as much because the tools do things for them, but often case the tools take longer to learn and use than doing it directly anyway. It's not like Logo or QBasic where you wrote a couple of lines of code and have it immediately draw something for you on the screen.
Re:What?! (Score:2)
Eh, Pascal as a language doesn't have a lot to offer, IMO, that isn't provided better in Python, Ruby, etc., if you want accessibility. I will agree that the standard libraries that came with many Pascal implementations have some advantages over the libraries that come with most modern languages in terms of easy graphics and some other things that are useful to learners (though no two were compatible in how they did this.)
Pascal is a stricter language than C++ (or C), and, IIRC, even a bit more strict than Java; it was the archetypical "bondage and discipline" language. Pascal inherently doesn't have easy access to "drawing graphics", but (as with BASIC) many versions were tightly tied to a specific platform and came with libraries that provided quick access to it. That is something many modern languages lack. (Easy access to "standard" IO, even in a fairly general sense, is not, however, something Python, Ruby, etc., lack.)
Re:What?! (Score:4, Interesting)
Re:What?! (Score:2)
Turbo Pascal had the best/simplest design environment, but things like the Tiny/Compact/Small/Large/Huge programming models, and the 64K segment limit made group projects tricky.
The other main disadvantage was that having procedures within procedures also made for monolithic programming, requiring that code has to be completely rewritten in order for basic concepts to be used with a new programming language such as C or C++ (lists, trees, hash tables, pointers, etc...)
At the time, C with vi/vim on the UNIX systems was the only other alternative, with postgraduate students being given the
privilege of using the Sun 3 workstations.
Given the choice between Microsoft
Re:What?! (Score:3, Insightful)
Re:What?! (Score:5, Insightful)
No, Logo teaches them to push a turtle around the screen. It doesn't really convey a sense to young children that they're "programming" a computer. I technically had Logo before I ever had BASIC, and it took me years to realize that it was supposed to be an introduction to programming. Most of us saw it as an introduction to computer graphics.
While Visual Basic is a poor tool to teach programming (most "programs" taught are simple GUI constructs with little to no code), the original BASIC regularly gets slammed because of Dijkstra's 1968 article, Go To Statement Considered Harmful [acm.org]. Dijkstra's core argument was that GOTO statements created spaghetti code. While this is unavoidable in assembler, his point was that it does not need to exist in high-level languages.
That paper had a profound effect on languages that followed, resulting in many modern languages doing away with a GOTO keyword altogether. (e.g. Java reserves GOTO, but does not implement it.) Taken by itself, Dijkstra had a point. Unfortunately, he went on to say: "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." This started the idea that BASIC is somehow the "wrong" way to teach programming.
The truth of the matter is that the design of BASIC will only limit programmers who are not interested in a long term career (or at least hobby) in computer programming. Most BASIC programmers quickly find the limitations of the GOTO statement on their own, and need little prodding to move to subroutines via GOSUB calls. From there, a programmer quickly learns the limitations of global variables. This makes the introduction to procedural functions much easier.
Basically, it's easy to provide a student with new tools when they feel the need for them. If you simply give them the tools without giving them the background, they will never learn to use the tools correctly. That's why I personally believe that classic BASIC is still an excellent teaching tool. Besides having simple syntax that any child can understand (one instruction goes after the other, see?), the interpreter environment allows children to play around with the instructions without having to write complete programs for each experiment. This invaluable teaching feature is lacking in modern structured programming.
Thus it is my personal belief that we need to STOP reinventing teaching languages, and just go back to what works. All we're doing with these new languages is giving them the CompSci version of "New Math". And all that "New Math" ever accomplished was to generally confuse children, and ensure that they never take up higher maths. Such is the result of providing highly structured coding tools to a child who wants to explore.
You can read more of my thoughts on this subject in this article [intelligentblogger.com].
Re:What?! (Score:3, Interesting)
Re:What?! (Score:3, Interesting)
If the kids only learn the "enter command, watch turtle move, rinse, repeat" part of Logo, then they are not learning to use Logo at all. Proper instruction in Logo will teach kids about subroutines, about loops, about the importance of syntax, about planning out a somewhat complex program. Note that I should have mentioned that Logo BASIC is what I'm referring to, not just Logo -- I should have made the distinction.
As to why Basic still gets slammed, I think you're incorrect, it has little to do with Dijkstra's 1986 article. We've moved past that, and it's the VB scripters who now get slammed on Slashdot. Just my opinion, from what I've observed over the last several years.
Re:What?! (Score:3, Interesting)
Untrue. If they don't know what they are learning, then how can they ever apply it? Furthermore, programming courses attract those students who want to actually program. If you're not providing the impression to the student that they are actually programming, then how do you expect them to take an interest in the things you are teaching them?
What is Logo BASIC? Logo is Logo. The concepts of loops and subroutines are core to the language itself. That still doesn't change the fact that students will see these features as merely in support of pushing the turtle around. Because the end goal of every Logo program is to make the turtle do something interesting.
Now if you taught Logo without the graphical component, it could make for a half-decent teaching tool. However, I see little that the syntax would offer over the syntax of BASIC. BASIC is straightforward and easy for an english-speaking person to grasp. Logo adds a variety of identifiers and lexical control structures that make it less accessible to someone with no prior programming experience.
e.g.: vs. vs. As you can see, BASIC is a lot easier to grasp for the untrained eye. It's only after one has experience that lexical control structures appear natural.
I don't think you understand. Visual Basic always gets slammed. It's a lousy excuse for a language, so it should come as no surprise that the technological elite don't like it. That's secondary to the fact that classic BASIC is regularly slammed as well. (As Google can helpfully demonstrate [google.com].)
Re:What?! (Score:2)
I'm going to have to disagree with your initial point. At the high school level I would agree, any education has to be accepted for it's educational value. But at the grade school level (we're talking 5-10 year olds here) it is much more about motivating interest in a subject. I don't care if the 4th grader sitting in a lab is more interested in the logic that tells the turtle move, the motors and gears that make the turtle move, or the tactics that can be applied to make a specific type of drawing. What I care about is that they are interested, and will hopefully go on to learn more.
I did two of these courses in my youth, Lego Logo classes. Some kids did a turtle project or other follow the instruction projects, some made race cars, and some got into more of the advanced stuff with the IR detectors, logic based movement, and more advanced mechanics. Some kids liked the coding, some kids liked the building, some kids liked the brain storming.
It takes all kinds in the tech world.
-Rick
Re:What?! (Score:3, Interesting)
But as far as tools go; sometimes you just need a crowbar, not a screwdriver, or a scalpel.
If you're writing an office suite, or 3d simulation, of course you don't want to even consider something like VB Script.
But if you're blasting changes to 100 Active Directory users, or changing permissions on a web site's directory structure, it's a damn useful little crowbar. (that's not because of the language - it's because of the embedded facilities in windows that talk to this language).
I don't know a single construction worker or mechanic that doesn't like to have more tools in his (or her) toolbox. They may not ever use all of them. Some may be favorites. But every tool is the right tool for some job.
Learning/Teaching programming?
I don't think that a particular programming language is ideal for that.
Re:What?! (Score:2)
Re:What?! (Score:2)
Bad Habits (Score:2)
As some one who also taught himself applesoft BASIC (but did go into computer science) I think it was a great way to start. The reason BASIC was/is so reviled by developers is because the language itself encorages programmers to write spaggetti code (from what I remeber applesoft BASIC did not even have a GOSUB), it teaches you "bad habits" that can be carried over into structured languages.
I don't know about you, but I found once an applesoft BASIC program got to about 2000 lines it was an unreadable mess, especially if you stopped working on it for a while. It's much easier to write readable code with modern versions of BASCIC (such as VB), but the language has been extended so far it looks nothing like what you typed into your IIe.
After a couple of decades in C/C++ development, I sometimes open an unfamiliar source file only to find the comments inside claim that I wrote it. If you could look at some of your files from the 80's, it would be crystal clear what was wrong with applesoft BASIC.
Re:Bad Habits (Score:2)
Re:What?! (Score:3, Insightful)
BASIC is counter-intuitive? Difficult? Inflexible? Well, let's see if you have a point. Here are a myriad of Hello World programs in BASIC vs. modern and semi-modern languages. (Specifically, C, C++, C#, Java, Smalltalk, and Eiffel.) Let's see how the various languages stack up, shall we?
BASIC: C: C++: Java: C#: Smalltalk: Eiffel: Yes, I see what you're getting at. BASIC is obviously a confusing and inferior teaching tool. </sarcasm>
As for BASIC's descendants, those are not BASIC. Microsoft (which set itself up as "the BASIC company" in the 80's) raped a perfectly good language in an attempt to convince people that they could reuse their BASIC skills to make GUI programs. In reality, Visual Basic is about as far from the original BASIC as you can get. It could have been a descendant of FORTRAN or COBOL for all it has in common with BASIC. Even QBasic traded away the simple syntax in favor of more advanced features. Great for professional software development (!), but lousy for teaching. (i.e. The worst of both worlds.)
Re:What?! (Score:2)
print "Hello World!"
Or, of you want to throw in some C-tastic goodness (*choke*):
def main():
print "Hello World!"
main()
Re:What?! (Score:2)
Then why call it BASIC? As I said, VB has almost nothing in common with its supposed ancestors. A few keywords are the same, but seemingly for no real reason.
I don't disagree that VB was intended to make Windows programming easy. (A goal which it met with flying colors.) My argument is only that Visual Basic is not BASIC. It traded on the name to attract developers, not because it was a true derivative.
It's a bit like the situation with Java vs. Javascript. The two languages share some syntax elements (both being descendants of C-style syntax), but their actual implementations are as different as night and day. The only reason why Javascript is called Javascript (it was originally called Livescript) is because Netscape and Sun were partnering to bring Java to the browser at that time. Netscape made sure that Livescript could perform scripting on the Java Applets, and thus thought it would be cute to call it "Java"script.
In any case, I apologize if it seemed like I was on a Microsoft-bashing tirade. I'm only attempting to point out that VB is not BASIC. Making any statements about BASIC based on VB represents a grave injustice to the original BASIC language.
Hell (Score:5, Insightful)
Re:Hell (Score:4, Interesting)
The problems I see with it are related to the entropy of the human soul. Gets especially painful when the entropy aggregates into organizational behavior.
I, for one, find reading Knuth a delightful escape from Perry Ferrel's observation: "...and the news is just another show / with sex and violence..."
Re:Hell (Score:2)
PHB's
last minute Change orders
reorganization
changing focus
I could go on, but I'm starting to get flashbacks of all day meetings with marketing promising the world to clients and programming asking "are you on drugs?"
Re:Hell (Score:3, Insightful)
As I noted in the preceding post, your pain points have to do with people, not CompSci.
Is this an example of Post Soul-Crushing Meeting Disorder? If so, you've my sympathy.
Re:Hell (Score:3, Insightful)
Programming in and of itself is not Comp Sci.
Re:Hell (Score:5, Interesting)
Hellish to non-coders. And I use "coders" there instead of the more generic "geek", because most people with a near-obsessive interest in something can qualify as some form of geek, while very few people can really code well.
You don't just need to know "the" language (sign #1 that coding doesn't suit a person - They want to learn C or Java for a few specific purposes, rather than "how to code" and "how it works" - The language doesn't matter, within reason). You need a particular type of personality (near obsessive). You need a clear mind (I mean that in the Zen way - In my teens I tried "meditating" a few times and always found it frustrating that the guides made no sense, with phrasing like "stop your internal monologue"; I finally realized that while most people apparently can't shut the voices in their head up, I have no internal monologue that needs silencing, and consider that a BIG part of what makes me a decent coder). You need the ability to think really, truly logically. The ability to sit motionless for hours at a time really helps. Finally, and perhaps most importantly, you need to break arbitrarily complex tasks down into atomic actions (which goes along with thinking logically, in the proof-theory sense).
All of those, to most people, sound hellish. Thinking in terms of formal proofs? Quieting your internal voice enough to think over it? Sitting motionless at a computer for so long your SO/family needs to remind you to eat ten hours later? Most people don't want that.
I hate how this topic usually boils down to the stereotypical us-vs-them, "Real coders do/don't"... But sometimes, you just can't escape the facts. Most people can't code, which doesn't state a temporary lack of training but rather an outright permanant inability.
Re:Hell (Score:2)
I contend (in my arrogance) that the bulk of the population simply doesn't invest the time to nurture that mental facility. We now have a society so advanced that you really can blow off literacy, for example.
My father has been a steam and diesel engineer his entire career. Has this mental block about electricity. "I can't understand it," he whines. Yet the ideas of capacitance, inductance, potential difference, etc. have their analogues in steam engineering. The man just can't get past a self-imposed limitation.
People. Gotta love 'em, or you'd do the unspeakable.
Re:Hell (Score:5, Interesting)
I don't claim that I don't think about things, or even daydream just like everyone else. I just don't do it in English (or any language that ever could exist outside my own head). I can even think in words - You probably gave the best example, when I think about how to phrase something, I do so "in" the language itself; Oddly, although I only speak one natural language (English), I do the same thing when coding - I "think" in an internal voice speaking C, for example.
Let's say you shut your eyes...do you notice anything around you?
Yes, of course - I don't claim myself in a coma.
But "conscious" doesn't mean "words". I meant more than I don't have, hmm, a narrator, I guess? As I mentioned, I found it quite a surprise when I first learned that most people do. As I understand it (second hand of course), most people would internally "say" something about almost all of the major things that pass into their awareness; I don't do that.
I've never talked to anyone who was absent an internal monologue.
Think of the smell of a crayon. Do words suffice to describe it, or did your first burst of thought contain a wave of sensory impressions and memories that include kindergarten, wax, some little girl's hair, pictures on a refridgerator, the sound of an ice-cream truck, and far, far more than that, all in one burst? Just typing that, I tried to touch on a few of the points of what the smell of crayons makes me think about, and found it incredibly restrictive. Imagine always thinking in terms of that initial burst, and you have the idea.
Re:Hell (Score:2)
You're going to raise a much better generation of programmers if you give all the kids Game Boy Colors, emulators, lots of sample code, and books on Z80 assembly. Assembly is as easy, if not easier, to learn than high level languages, especially with a simple 8-bit assembler. You know EXACTLY what the CPU is doing at all times, and you end up being a much better programmer later. By enabling kids to make real games, you provide motivation, not just dumbed-down, high-level crap.
I politely disagree: CS is beautiful. (Score:4, Insightful)
IT is hellish bullshit.
CS is pretty, applied math. And the culture of computer scientists is creative, inventive, and intellectual. Hell? No!
(This distinction, others have pointed out before me.)
More, some exposure to CS teaches people how to think. Before I started to program, I was horrendous at math. Every standardized test I ever took told me I should be a writer. But by turning logic into play, the computer changed everything. Sure, I can still barely add. But I'm going for a Ph.D. in theoretical control -- which is essentially an applied math field. Because, give me a calculator, and I can do pretty cool stuff.
How many people "hate math" because they think it's all about adding up numbers? Tons! (Including, unfortunately, most of the elementary school teachers who teach math). That's not what it's about! Computer Science is beautiful. It changed my mind, and my life: That's no overstatement.
My first language, as a child? QBasic.
I still like logo (Score:2)
Re:I still like logo (Score:3, Interesting)
It doesn't have to be all that distant from raw code. Another MIT project (StarLogo TNG [mit.edu]) uses drag and drop that has a pretty much 1:1 relationship to raw code, but is presumably less intimidating and certainly less dependent on typing and memorizing syntax rules, since the blocks both visually indicate syntax and won't link-up in improper ways. Scratch seems similar, though this is the first time I've looked at it and I haven't played around with it.
Really, I don't see how "drag and drop" is inherently any further from "real programming" than using a modern IDE with automatic code completion, automatic closing of blocks, code generation, GUI builders, etc., is.
Re:I still like logo (Score:2)
I like Logo too. I've been thinking about getting my kids started on it (my oldest 2 are 5). How'd you get them started, explain angles, etc.?
Re:I still like logo (Score:2)
Re:I still like logo (Score:2)
Re:I still like logo (Score:2)
You could even make it competitive by awarding or subtracting points for how well they follow the rules of the simulation.
Computers are the physical manifestation of a mathematical model. No actual physical computers need to be involved in the lesson.
Now if only they could make programmers (Score:5, Funny)
Re:Real Women Aren't Afraid to Program (Score:3, Funny)
Re:Real Women Aren't Afraid to Program (Score:2)
Re:Real Women Aren't Afraid to Program (Score:2)
I'm not sure which she finds more gruesome prospect: Modula-2 or labor.
Not Possible (Score:3, Interesting)
He said it was impossible.
All that means, really, is that it won't be Michael Tiemann who authors or participates in this inevitable breakthrough.
It is a bad idea. (Score:5, Insightful)
You are better off creating a your own language (like this or LabView or Squeak or the newer graphical Lego Logo) than to try and retrofit C++, or worse to call on someone whose strengths are in low-level machine language generation and optimization to do it for you.
The universe, and the future, are big places to go (Score:2)
What will happen is that the graphical symbols will eventually reach the hardware through fewer and fewer levels of text-based abstraction, until someday, in the not-too-distant future, the hardware will directly manifest the graphical symbols that people interact with at the level of the interface. It's the most efficient way to do it - and, ultimately, the simplest, once the task of how to do it is, itself, finally comprehended.
Re:The universe, and the future, are big places to (Score:2)
Yes, more or less. (Score:3, Informative)
Virtually anyone could benefit from having such a system, engineered by the use of graphical symbols to be of specific use to anyone in their specific situation, especially now that the graphical symbols and the language itself consists of network transparent graphical symbols. Graphical programming is all around us, actually, and it will become so predominant that people will soon find it hard to comprehend that it was not always so.
Re:Not Possible (Score:2)
What does that mean ? In what sense would they be programming ?
Did your proposal have any concrete ideas which you ommitted
[Let alone programming in C++, which to most people means writing C++]
This visual programming crap crops up from time to time because so many people are brainwashed by that crap about a picture being worth a 1000 words. Draw me a picture of "misguided". They are stuck on the "pictures are better than words" meme. Sure, until you learn to read.
Programming is done with languages because programming is communication. It's communication between programmer and computer.
I can believe in this stuff as a decent way to introduce people to programming, like picture books introduce people to language but I don't see it moving beyond that.
Re:Not Possible (Score:2)
Games are all programmed graphically. It isn't even close to possible to program games using text. Text and spoken language can only take you so far. There are many other types of languages, fortunately, and many of them are, for instance, mathematical. You need to get over your anger about 'pictures' and their usefulness. Pictures aren't something that we can look at - they are something that we can use to communicate with, and to build languages out of, just like we build languages out of the sounds we can make with our lungs and throats. And if you can build a language with something you can build civilizations out of those languages. Why do you pretend you don't understand this or that you despise it?
Re:Not Possible (Score:2)
I got my start in programming using BASIC for the C64. I eventually wrote a few simple which way games along the lines of Zork, but with multiple choice of what to do instead of guessing. It also did random number generation for combat and tracked hit points. I was in about 3rd or 4th grade at the time.
So, what I'm saying is that the same kind of thing could be done by kids today using a web browser and some JavaScript. There are tons of samples to get them started. The samples are not usually articles written in a way that kids would really understand though. What they need is a tutorial that would guide them, in a way that they can understand, to write a simple game in the web browser.
Whats the point? (Score:5, Insightful)
Re:Whats the point? (Score:3, Insightful)
The kids will develop machines and methodologies to make neurosurgery less intimidating to themselves. They won't care for or have any respect for all the fears, excuses and mental obstacles that the old people have. They'll do it for themselves.
Re:Whats the point? (Score:2)
Re:Whats the point? (Score:2)
No and yes, respectively. Actually, the military spends lots and lots of money to make soldiering, of every kind, less dangerous.
So what?
Stripped of the things like memorizing complex syntax rules, etc.—which is exactly what things like this try to minimize—programming is a mechanism for teaching generalized problem-solving and analytical skills, as well as a tool to provide applied lessons in other fields. It is not an alternative to teaching "real skills they need at that age", but a means of doing so.
Re:Whats the point? (Score:5, Insightful)
Thank you! EXACTLY what I was going to post. Screw programming! Certainly kids who are interested in that should be encouraged, but it's a VERY small minority that have a true interest. There are far more important skills that we should be encouraging.
Such as? How about true art training? Studies (which I don't have a link to) have shown that kids that are taught to draw realistically tend to do better in ALL subjects, probably because of the quiet concentration that it requires. Kids as young as 4 or 5 can be taught to do realistic art, but even a lot of art schools don't do beginning classes until 8 or 9, and the closest typical schools get is just letting the kids slap paint on paper without any instruction at all. Only gifted people learn to play piano by banging keys, and only gifted people learn to draw by scribbling. Yet anyone can learn piano through instruction, and anyone can draw realistically through instruction as well.
Sorry for the pseudo-rant on art classes, but I've been looking for art instruction for my young children, and it's very difficult to find. I finally found great book [amazon.com] and I'm doing it myself. :) Note the picture on the cover that was done by a non-gifted five year old, BTW.
Re:Whats the point? (Score:2)
How many grade schoolers will have day-to-day contact with neurosurgery or genetic research or soldiering? On the other hand, almost everyone probably has at least some contact with a computer every day.
And in any case, this isn't about "sticking programming down their throats" so much as it is about teaching problem solving and providing an outlet for creativity. It is about as close to real programming as a nature walk is to neurosurgery or genetic research.
Re:Whats the point? (Score:2)
Re:Whats the point? (Score:2)
The teacher of that class and myself discussed this and came to the conclusion that the language really wasn't what schools should be focusing on. What would have been more beneficial is using computer programming as an example of general problem solving. The ability to look at a problem break it down and decide how to solve it. And most would have been better served by teaching them how to use a word processor, spreadsheet, and database if you were going for practical computer skills.
Problem solving skills were really lacking in most of the students. This was evident when hitting balancing trig equations and anything else that didn't have a formula based solution that you could remember to solve the problem.
I think a relatively simple language would server such a purpose. It doesn't have to be all that practical either.
I started off with BASIC before I took that class. I had already realized it's limitations and short cummings and had moved on to Pascal by the time I took that class.
--
Q
Re:Whats the point? (Score:2)
It always worries me when people have no idea what is going on. I really dislike the idea of people learning computers like they were microwaves and having next to no idea how the work. Actually, most people have received a LITTLE instruction on how microwaves (and cars and other things) work (it heats the water in food, pistons harness combustion, etc) but discussion about how computers do things is usually "they use binary". That doesn't mean anything to most people.
This is a great idea. Not only does it teach programming (good, maybe they'll pickup an interest), but it teaches logic. I can't tell you how many kids I run across that seem to have next to no training in logic and being able to make steps to get to a task (or simply aren't good at it due to lack of practice). The current education system (memorize facts, here is a problem and here is how to solve it, memorize how to solve it) don't help. This kind of education (figure out how you can do things by chaining other things) is important and very valuable.
Interesting Point, I think (Score:2)
It is WAY too early in the phenomenon known as software engineering for anyone to draw conclusions about what is not possible. And it is WAY too useless for anyone to try to explain to us what the people of the future will never be able to do.
People are graphical - this is why programming MUST eventually become graphical. It's that simple. And inevitable.
Not that I think it's a bad idea (Score:5, Insightful)
Just think... (Score:5, Funny)
Kid Programming tool - RoboRally! (Score:4, Interesting)
ROBORALLY! [wizards.com]
You "program" your robot with cards from your hand placed in a certain order. A turn proceeds and the cards are executed. If all goes well, you hit waypoints, and blast a few other robots to dust on the way.
Re:Kid Programming tool - RoboRally! (Score:2)
William
Clearly (Score:5, Funny)
Reminds me of Alice (Score:3, Interesting)
http://alice.org/ [alice.org]
Re:Reminds me of Alice (Score:2)
If anyone's interested in Alice, there's an archive of Alice summer camp projects here [calvin.edu].
Programming is fun to begin with! (Score:5, Insightful)
Re:Programming is fun to begin with! (Score:3, Insightful)
1) gets you familiar with the process of inputting code, so that when you write your own code, you'll already be familiar with how to type it into the computer and execute it
2) demonstrates that by just typing in a program, it's possible to make the computer do something really cool, even though you haven't yet learned how to design something that complex yet
3) gives you a working example of a program with source code, so you can try to understand what various parts of the code do, and you can try changing something and see how the change affects the program's output
It's not a bad way to introduce kids to programming, although of course it needs to be followed by actual learning.
Re:Programming is fun to begin with! (Score:2)
BBC Scratch Article with Video (Score:2, Funny)
hmm (Score:2)
Logo (Score:2)
Oh great (Score:2, Funny)
Re:Oh great (Score:2)
Looks a lot like... (Score:3, Interesting)
Some will never push the boundaries of Scratch, never discover its limitations. But for those who do, those limitations could well be exactly what drives them to try "real programming" - maybe using Javascript and CSS to push things around on a page. Who knows where they'll go from there?
Re:Looks a lot like... (Score:2)
My kids never hit those limitations. I can teach logic, decision making, and most importantly the ability to divide a complex task into its primitive components.
They can, by the end of the school year, write programs that can respond to their environment such as to make a car navigate a maze. By our standards the programs are not complicated but I think for a 10 year old it is fantastic.
Using the graphical language lets me teach them how to think through a program and then represent it correctly. I think if I tried the same thing with any text based language we would quickly get bogged down in syntax and I would fail to teach them how to think like programmers.
bit like squeak (Score:3, Informative)
Re:bit like squeak (Score:4, Informative)
Try for yourself... download Scratch, drag the included image onto your Squeak VM and it'll open fine (although, at least on the Mac version I can't find a way to quit properly).
BASIC started it all (Score:2)
Python as a starter language (Score:2, Interesting)
I've read about the Alice program, but I think it's a bit buggy, and a little too much stuff to learn.
Re:Python as a starter language (Score:4, Interesting)
Re:Python as a starter language (Score:3, Informative)
Re:Python as a starter language (Score:2)
Yes, it took a while for them to get some of the concepts like functions and for range/xrange required more explaination than was really necessary. They did get a good grasp of what was going on by the second class hour and it was quite fun! Eventually, we made Java applets to demonstrate some graphics capability. One thing really nice about those classic home computers is that they all had good basic multimedia support. Some could even 'speak' the audio sections of the tape cassettes. ;)
Hackety Hack (Score:4, Informative)
why the lucky stiff [whytheluckystiff.net] has started an amazing project called Hackety Hack [hacketyhack.net], in an attempt to solve the Little Coder's Predicament [whytheluckystiff.net]. It's a development platform designed for the younger coders and beginners, with an emphasis on sharing, community, ease-of-use (lots of built-in functionality), and cute cartoon characters. Currently it teaches Ruby in a series of fun lessons, but _why has stated that it might teach other languages in the future. A slick help interface comes bundled, as well as a Ruby cheat-sheet.
Come and join in the public beta testing. The forum is active and the people are nice. And don't forget to share your exciting hacks with the rest of us!
--
Eli
Re:Hackety Hack (Score:2)
Logo? Meh. (Score:5, Interesting)
Efforts to make computer programming accessible to young people began in the late 1970s with the advent of the personal PC, when another programming language with roots at MIT -- Logo -- allowed young people to draw shapes by steering a turtle around a screen by typing out commands.
From what I remember of Logo, few people in the class "got" it. Everyone in CS harps on and on about how great logo is, but most of my classmates in grade-school just laughed when the "turtle" did stupid things, and asked the teacher for help (ie, to fix it for them.)
To say teaching Logo "teaches programming" is akin to saying that having your kid watch you inflate your tires is "teaching car repair."
Re:Logo? Meh. (Score:4, Funny)
Yes, one of the big failings of Logo is that although it had the potential to help make kids smarter, it couldn't do anything about the teachers.
Disclaimer: I wrote Logo for the C64, Apple II, and Mac.
If Only... (Score:2)
Tomorrow on Sesame Street (Score:3, Funny)
LOGO! (Score:2)
Is it interpreted? (Score:2)
Raise your hand if your first introduction to programming was on some flavor of interpreted BASIC
Instant feedback and low level control were a pretty fundamental appeal. Dragging and dropping a sound object into a window, pushing a button, and having it pop out the other end playing a song is less gratifying than getting some discordant squeal out of the PC Speaker with a line of code you had to hack out on your own. Change the line, a different discordant squeal! COOL!
LOGO was fun, sure, but how much more fun was it when you figured out you could put your own pixels where ever you wanted?
The key captivating factor of programming wasn't that it was easy to make constrained cartoonish crap but that you could do anything. Maybe cartoonish crap is what you originally wanted to do when you first sat down with an intent to learn you a program... but the fact that there's a limitless amount other stuff to do diverts you.
Project Greenfoot (Score:2)
http://www.greenfoot.org/ [greenfoot.org]
Seems to have similar goals, it is very simplified and the focus is to teach programming via creating simple games.
Because we can't have "unforgiving" code (Score:2)
According to the BBC article on Scratch [bbc.co.uk]:
Umm... what's wrong with some parts of life being unforgiving if you don't get them right? It's called learning and is related to discipline, trial-and-error, problem solving, etc.
Welp (Score:5, Funny)
Re:Been there? (Score:2, Funny)
Re:No Linux port? (Score:2)