Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Why do schools teach Scratch instead of more commonly used programming languages (C, C++, Java, C#, Python etc)?

share|improve this question

put on hold as primarily opinion-based by ratchet freak, durron597, jwenting, Ixrec, gnat yesterday

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise. If this question can be reworded to fit the rules in the help center, please edit the question.

Because it is simple and usable for teaching rudimentary concepts. The same way stripped down basic was used decades ago. –  Rig May 10 '13 at 15:20
Please define "normal" and "proper". Otherwise, this is just a rant. –  Jörg W Mittag May 10 '13 at 15:21
@NimChimpsky - calling C++ normal and proper is a bit of a stretch ;-). As to an answer: why do some schools still teach latin? –  Joris Timmermans May 10 '13 at 15:30
Schools teach a lot of things that aren't used anywhere, programming and otherwise. Heck, a lot of people's favorite languages aren't used that many places, all things considered. Schools (good ones, at least) are teaching you how to think. How you apply it is up to you. –  Anthony Pegram May 10 '13 at 15:46
@Anthony Pegram: I agree with you. To quote Einstein "Education is what remains after one has forgotten everything one has learned in school." (wiki.answers.com/Q/…). Learning certain topics can educate you more than learning other topics, i.e. it can shape your mind, the way you think and approach things. It is only in the industry world that people are obsessed with learning only those things that are (immediately) applicable. –  Giorgio May 10 '13 at 15:56

3 Answers 3

Thinking like a programmer transcends what language you're learning in.

share|improve this answer
so why create a completely new one ? That is unused in inudstry and thus compeltely inpractical –  NimChimpsky May 10 '13 at 15:49
It's insanely easy to learn, using building blocks instead of syntax so you can see which constructs fit together. –  GlenPeterson May 10 '13 at 15:54
@GlenPeterson Why do you think its easier to learn ? THis answers highlights the point that the concepts transcend languages, thus the language doesn;t matter. –  NimChimpsky May 10 '13 at 15:56
@NimChimpsky: Adoption by the industry is not always a good measure of the quality of a language as a programming tool, and probably even less as a teaching tool. –  Giorgio May 10 '13 at 16:01
@NimChimpsky I think it's incredibly easy to learn because I've seen kids learning by using it, first-hand. Even kids who had already tried other text-based languages that are supposedly easy to learn, like Python, found Scratch way easier and more fun to use. –  Eric King May 10 '13 at 16:41

Early success is a great way to encourage further learning of something. A tool like Scratch allows kids to very quickly take their ideas and display them on screen with user interactions and graphics and the like, which would otherwise (in a traditional language) take a number of hours to do.

The whole process of creating things in Scratch is fun (I've watched groups of beaming 8-13 year olds collaborate on new ideas and ways of doing things) which brings them back to use it again, but most importantly it teaches important skills like logical thinking, functional decomposition and (more generally) a basic understanding of some of the fundamentals.

Of secondary importance (to the kids) is that it doesn't feel like learning in the way other educational tools do. They tend to view it as a fun creative task with results they can show off to their friends.

Each of the things I (briefly) covered here and the material in @meisterluk's answer combine to create an environment and language which is stimulating and fun, but also an effective teaching tool.

Of course Scratch isn't a tool for programmers. It was never meant to be. It's purpose is in introducing kids to the fundamentals of programming, without being intimidating like a traditional language can be.

The other side of the coin here is to look at why we don't teach more commonly used languages. Honestly, I think the #1 reason for that (outside of early success) is simply that the syntax is awkward, unfamiliar, unfriendly and frankly intimidating.

I asked a question about teaching kids the syntax of programming languages which has some interesting answers and discussions on the topic. I think the essence of the answers to that question is: it's not easy, because it's not natural.

The question linked is focussed around teaching kids in small groups of maybe 2 or 3, but quite commonly 1-on-1. Of course, this is almost invariably not the situation in schools. Instead, the environment is likely to be 1 teacher with 20+ students. Leaving alone the issue of the adequacy of training of IT/Computing teachers other than to say it's not likely the teacher will be a developer his/herself, this environment and teacher-student ratio isn't conducive to teaching something so obtuse and weird to children.

However, an environment and language like Scratch is a great tool for all the reasons outlined above, with the addition that its easy for teachers to learn too!

share|improve this answer

Programming languages used in the industry have certain implications. One of the most obvious ones is that you have to type text to write programs.

Scratch has a more visual approach and even children under the age of 8 are writing scratch programs (recognize that some of them cannot even read properly). Secondly typing on QWERTY keyboards is often not the first interface they learn for interaction with computers. The Catroid project provides a Scratch port for mobile devices such that children use the touchscreen to write programs.

Finally, the language probably is not the most important part about the project. Children use the website to exchange and remix projects with other children. The current Web does not provide such a network for children for exchanging programs in "proper programming languages" so far.

share|improve this answer
if a child can't read they shouldn't be learning to program –  NimChimpsky May 10 '13 at 15:53
@NimChimpsky Says who? –  Andres F. May 10 '13 at 15:55
@NimChimpsky Sorry, you are ranting :) It is used by children under 8 (with parent supervision), as explained by its homepage. You are begging the question! –  Andres F. May 10 '13 at 15:59
@NimChimpsky You are implying that we are talking about western countries with a low literacy rate. However, Scratch is also used in developing countries like India. And yes, literacy is an issue and shall be addressed by providing adequate learning resources in regards of language as well as computer science sites.google.com/site/summerofscratch –  meisterluk May 10 '13 at 18:14
@NimChimpsky No, the main categories of bricks are distinguishable by color and they can be tested. "To include children who are not able to write syntactically correct structures – nor read them, yet – visually grouped blocks can be tested by clicking on them and they can be easily replaced with different ones in order to re-mix, modify, and create new versions of projects." en.wikipedia.org/wiki/Scratch_%28programming_language%29 You are free to learn your kids a commonly used language, but I think Scratch is a valid approach. –  meisterluk May 11 '13 at 9:38

Not the answer you're looking for? Browse other questions tagged or ask your own question.