4 ms·
The author states: Prior to joining the Snap! project, I had spent 20 years teaching computer science using the best computer science book ever written, Structu
by diskzero 5y ago
The author states: Prior to joining the Snap! project, I had spent 20 years teaching computer science using the best computer science book ever written, Structure and Interpretation of Computer Programs (SICP).
I have also taught high-school aged students using a modified version of SICP, Picturing Programs [1], and have had a very high success rate. The students have been able to comprehend topics like recursion and functional programming as a natural progression of learning. After completion of the course, they are able to pick up other languages like Javascript and Python rapidly, given the fundamentals they have learned.
The question I have, which I could not find an answer for in the article, is why Snap, or any visual programming language, leads to greater successful outcomes than using SICP and Racket? Even if you agree that Scheme/Racket has limited practical value in the workplace, I have found that students who learned these languages have a much greater facility to learn other languages. Courses that I have taught using Javascript and Python have not given the students that same ability.
Students who I have taught using Racket and SICP have a much deeper understanding of the fundamentals of computer science and they pick up these fundamentals in a much more organic way.
[1] http://picturingprograms.com http://picturingprograms.com
- Ericson2314 5y agoI have my doubts about the snap style of visual programming, e.g. due it emphasizing imperative code too much, but I have no doubt that text is bad. I've watched too many students struggle with text and the beginning, and this accident complexity slows down the learning by weeks.
- hjek 5y ago> I have my doubts about the snap style of visual programming, e.g. due it emphasizing imperative code too much, The whole point of Snap is to encourage you to "Build Your Own Blocks" which can call themselves recoursively. They've made it really seamless, whereas in Scratch you just got all these looping constructs and limited options for abstraction. There is nothing inherent in visual programming which emphasizes imperative code. You should really try it; just implementing a quick fibonacci or something.
- Ericson2314 5y agoI meant to say "scratch style", emphasizing the commonalities between them. For example, I would have no mutation or ;+like things at all in my teaching language. All edges would represent dataflow.
- hjek 5y ago> The question I have, which I could not find an answer for in the article, is why Snap, or any visual programming language, leads to greater successful outcomes than using SICP and Racket? Because you can't make syntax errors (as the blocks don't fit) or spelling mistakes (because you drag-and-drop the blocks). Racket is great but Snap can be accessible even to primary schoolers who're just getting into Scratch. Snap's emphasis on drawing on the canvas has a very Logo / Turtle Graphics feel to it, which DrRacket doesn't quite have. What makes it easier for the teacher is that Snap is in JS so you don't have to go through the app store to run it on school iPads (because that's just what's there in many classrooms, sadly). If the page is blocked on school wifi, you can even set up a local hotspot for it. I imagine it could be potentially be more difficult to get Racket running on school iOS? Don't Apple have a ban on apps that can run code in many instances?
- diskzero 5y agoApple will make exceptions for education apps that can execute code, but I think your observation is good about iPads/tablets in general. They are not great devices for keyboard-driven programming apps, unless you have a keyboard attached! You make a good point about syntax errors and the ergonomics of connecting blocks. My initial point was that Snap might not be the best option for high-school aged students. I can totally see it being really nice for younger students.