We can build new programming languages that people will teach, learn, and use: Scratch 3.0 in August
June 25, 2018 at 7:00 am 20 comments
When I come out with blog posts saying that we need new programming languages (like this one), I regularly get a bunch of skepticism. People will only use industry-approved languages, says one argument. We need to teach the languages that exist, says another.
Then I just reply, “Scratch.” It’s real programming, it’s popular, and it’s taught around the world. We ought to study how Scratch succeeded. One key insight: Don’t beat your head against the traditional CS1 teachers. There’s a lot more people to teach, and not everyone has to become a software developer.
A new version of Scratch is coming this August!
Source: 3 Things To Know About Scratch 3.0 – The Scratch Team Blog – Medium
Entry filed under: Uncategorized. Tags: computing education research, programming languages.
1.
Michal Armoni | June 25, 2018 at 3:52 pm
People tend to see Scratch as a “toy” language, but it requires just as much algorithmic thinking as any “regular” or “real language”, and it even involves advanced and challenging ideas such as concurrency, as well as event-driven design.
Moreover, a language that was designed for education has a higher potential for effective teaching, that is, achieving meaningful learning of computer science ideas and concepts. Once these are acquired, learning another language (for those who will need it) is relatively easy.
After all, Pascal was designed for teaching, and it was a great language for this purpose.
2.
Augusto Chioccariello | June 25, 2018 at 5:03 pm
IMHO Scratch, as Logo, was designed for learning powerful ideas – some, among others, from computer science.
3.
Michal Armoni | June 26, 2018 at 10:19 am
my point, exactly. Thank you
4.
taybenlor | June 25, 2018 at 9:54 pm
My own experience in the industry suggests that learnable languages become industry standards as the people who learned them become members of the industry.
Python has become a standard learning language, and now it rules Data Science.
Ruby on Rails’ success was because it was easy to learn, not because it was popular.
In game development Game Maker is becoming a standard amongst indie game developers, it was built for beginners – not for the industry. Unity has seen a similar success because it was more learnable than other industry standard engines.
From my professional perspective ease of learning is probably a more important factor in the success of a tool than things like performance, flexibility, architecture, robustness or the “seriousness” of the tool.
5.
Mark Guzdial | June 26, 2018 at 10:01 am
But then, why not Pascal or LiveCode?
6.
gasstationwithoutpumps | June 26, 2018 at 11:51 am
Early Pascal implementations were severely crippled (memory size limitations, string-length limitations, slow interpreters) and they were competing with C, which was as simple to learn, but which provided fewer limitations. Pascal and C were close enough that learning Pascal first was not an impediment to learning and using C professionally.
C, by being very close to machine level, has remained popular for low-level bit-banging applications. Its weaknesses from a computer-science standpoint (such as unprotected access to memory via pointers and very crude memory management) also contribute to its very small runtime environment, which contribute to its popularity on microcontrollers.
I’ve not looked at LiveCode. From what little I’ve seen on the web, LiveCode looks like a language designed for GUI work, with a pretty heavy-duty library/virtual machine. If (as they claim) Scottish schools are heavily into LiveCode, then we may see it start to spread from there.
One barrier to more rapid expansion of LiveCode: the attempt to look like “English” is reminiscent of COBOL, which may scare off a lot of older programmers.
7.
Mark Guzdial | June 26, 2018 at 11:57 am
The CS department I’m joining this Fall is a C++ house. They only teach C++ to CS students. I’m trying to understand the argument for that perspective. Why not use a better tool for learning?
8.
Bonnie | June 26, 2018 at 12:28 pm
We taught CS1 in C++ at my current school for several years before switching to Java. I know you don’t like Java, but I find it to be a perfectly fine language for the introductory sequence, whereas C++ is COMPLETELY inappropriate for learners, in every way. It manages to combine the worst features of C with the worst features of Java, in a sort of glommed together together hybrid. Sorry, but I consider it educational malpractice to teach CS1 in C++.
9.
Mark Guzdial | June 26, 2018 at 12:34 pm
Java has flaws, but there are certainly worse choices for intro courses. I’ve written two books on teaching Media Computation in Java (one intro and one data structures), so I don’t *dislike* Java.
10.
gasstationwithoutpumps | June 26, 2018 at 4:20 pm
Why did you join a CS Department that has such a restrictive attitude towards teaching CS1? Did you not research their pedagogical approach before joining? Or were you hoping to change them?
I would prefer starting with Python (or Scratch for younger beginners) then adding C, Java, and Javascript (in that order).
For decades C++ was my primary programming language, but I’ve pretty much given up on it. It was always a bit of a kluge, and they keep breaking it by making incompatible changes. I now program in Python (for rapid development) or C (for microcontroller code).
11.
Mark Guzdial | June 26, 2018 at 9:09 pm
Neither — I’m trying to learn from my past mistakes. I was looking for a place where I can do good work, and that work doesn’t have to be defined in terms of the CS undergraduate program.
12.
Jeff Graham | August 3, 2018 at 8:43 pm
I’ve taught cs1 like courses in c++, python, and processing. Python is a great beginner language. Processing is fun too. If you can’t learn to program using shiffman’s processing book, you’re not trying.
13.
Bonnie | June 26, 2018 at 11:39 am
My kids are all veterans of Scratch. My oldest in particular programmed extensively in Scratch during late elementary school through middle school, exploring some pretty sophisticated algorithms (path finding anyone?) via Scratch. However, by 8th grade he had moved on to Java and Python. He is now in high school and teaches those languages at an afterschool program. My other two did not do as much in Scratch, but also moved on to Python, and then Java. That is the trajectory I see in general. I suspect that Scratch will always find its main success with kids. Having taught it and having built programs in it, I know I would never want to build anything real in it!
14.
Mark Guzdial | June 26, 2018 at 11:43 am
Bonnie, how about a different word from “real”? Scratch programs are “real” — they run, kids work at them and value them, they require real algorithmic thinking (as Michal points out). It’s reasonable to say, “I would never want to build anything that other users depend with Scratch” or even “There is a limitation to how large a program can be in Scratch.” It’s disparaging to students to say that what they do in Scratch isn’t “real.”
15.
Garth | June 26, 2018 at 9:21 pm
I use Scratch with high school freshman. Why not jump into Python or Java or some version of C? For beginning main steam kids Scratch is fun. The others, not so much. For first timers they just need the concepts of programming; loops, sequence, and selection, program design, problem solving and they need to have some fun learning it. Playing with sprites is fun compared to coding a Fahrenheit to Celsius app. Get the kids having fun and they might take that second and third and so on semester of programming. Maybe not as fun but they can understand that there are things in it that are satisfying. Scratch is a toy language. Write anything big and code management becomes a nightmare. Coding with it is also very slow compared to typing line code and debugging can be a real pain. I read articles about parents who taught their 10 year old (or whatever very young age) C++ (or Java or C or whatever) as a first language. More power to them. That is not a “normal” little kid. Kids should be able to have some fun learning to program. Scratch is fun.
16.
Michal Armoni | June 27, 2018 at 5:55 am
It is not a toy language in the sense that it can be used to convey important concepts and ideas of CS, sometimes even more than those taught in a standard CS1 course. I’ve seen kids doing very complicated things in it – a game of monopoly, simulations of scientific phenomena, a windows emulator, and many more creative projects (their own ideas, their choice). Right, they cannot write large-scaled projects with it (because it’s not practical). So what? Is this the purpose of an introductory CS course? I don’t think so. The learning objectives that I see for such a course do not include the design of large-scaled projects. It is more about the ideas and concepts, not the size.
I once heard someone presenting an educational simulation tool for the automata course, and he mentioned as one of the limitations of the tool that it is not practical to use it for automata with hundreds of states. And I thought – is doing anything with very big automata has anything to do with the learning objectives of this course??
At the end, it’s all about educational goals.
17.
Bonnie | June 27, 2018 at 11:58 am
But one of the educational goals of the CS1 for majors, at least at our school, is to establish good coding, debugging, and design habits that will help support students as they move to larger programs in the next courses. We teach students about test driven development and readable, literate code from the get-go. In baby steps, of course… But Scratch does not support any of it. In fact, I consider it one of the most wildly unreadable programming languages out there.
18.
Garth | June 27, 2018 at 12:58 pm
We need to specify what CS1 means. CS1 for high school freshmen can be a Scratch class. CS1 for college, well the students better have had Scratch before then, in fact they had better have had several languages before they try to dive into a CS program with CS1. A programming survey course for non-majors should not be the same as CS1 for majors.
19.
Michal Armoni | June 28, 2018 at 3:48 pm
I think differently. Scratch is very readable. It is event-driven and concurrent, so it requires a different way of thinking, and also of reading in some aspects. But, based on my own experience, it is apparently easier for young children than it is to “us”. Event-driven, scenario-based thinking seems to be quite natural to them.
Design habits, including the creation of readable and literate programs, can be taught in Scratch, and this is backed up by research.
I’m not saying that CS1 should be taught in Scratch. I’m saying that any decision made should take into consideration the power of Scratch, and that it shouldn’t be based on an assumption that Scratch is not much more than playing with colorful programming blocks.
Personally, I think that Scratch is a great environment for a first introduction to CS for young students. But this can be a introduction, including ideas such as abstraction, as well as design habits. But there can be other ways. For example, in some institutions Scratch is used in the first few weeks of CS1. There are many options.
20.
northtravel | June 29, 2018 at 10:08 pm
Only thing missing are K-12 teachers to “Just do it.” On my calendar for the month of July was the quote “Whatever you can do, or dream you can do, begin it. Boldness had genius, power and magic in it. Begin it.” -Goethe … having been in this CSEdu game for 30 years, I wonder why it is taking so long for teachers to understand the power of CS for everything they teach.