λ Snap – An inviting programming language for kids and adults for CS study
71–80 of 118 posts
Re: λ Snap – An inviting programming language for kids and adults for CS study
#72https://news.ycombinator.com/item?id=38016554 [...] I'm also a huge fan of Snap!, which has all the advantages of Logo (Lisp without parenthesis) and Scratch / eToys / Squeak / App Inventor family of block based visual programming languages, but all the power of Scheme. If you know Scheme, then it's easy to think about Snap!: it's just Scheme with a visual block syntax, but with some functions renamed to make them ea…
> I think Snap! could take advantage of its equivalency with Scheme, and you could just parse Scheme into Snap! blocks, and the other way around. And ChatGPT knows scheme pretty well, though it's not as ubiquitous and standard as JavaScript. There's already a right-click menu option called "Lisp code". Take the "turn left 15 degrees" block (the "15" is the default value but of course it's a parameter that can be set…
Once you have the text version, you put it back into a split block set to split "by blocks", which gets the list version, which can then be put into the input list of a join block to get the code again.
This is technically discoverable from within Snap itself since they provide a library wrapping these steps, but it's not the first place you might look if you don't know it already exists.
Re: λ Snap – An inviting programming language for kids and adults for CS study
#73I don't love graphical programming environments like this and Scratch and I can't quite put my finger on why I find them so unattractive. A big part of it is that you can, to some degree, learn programming from this. But you absolutely cannot learn software engineering from this.
If you appreciate when keyboard interaction gets added to a GUI, then you might think of a graphical language as the opposite, as it essentially removes keyboard interaction from what is normally a text-based system.
https://www.youtube.com/watch?v=ITWSL5lTLig
The video above shows keyboard, but the main motivation for the key-based navigation was actually gamepad.
Re: λ Snap – An inviting programming language for kids and adults for CS study
#74Earlier quoted context omitted.
When I looked at Scratch six months ago, its lists were deliberately handicapped in function. They could only contain text or numbers; they could not contain other lists. Nor could they be passed as parameters to functions (!!), which really made me say "Nope, this is not what I'm going to use to teach programming to kids". I looked at Logo, and was drawing up lesson plans when I noticed Brian Harvey (the primary des…
Not to mention first class continuations! :) Thanks!
And thank you for all your work not just on Snap!, but on Logo before that. You have done a lot for coding education.
Re: λ Snap – An inviting programming language for kids and adults for CS study
#75Right, you aren't our target audience. We're after the people who aren't going to major in computer science in college, but who're curious what all the fuss is about. They've taken high school algebra, so they know what a variable is and what a function is. (They don't have to know about functions as data, but we hope to teach them that.) These days, they probably used Scratch in elementary school, so we don't have to teach them the syntax of blocks, or what a sprite is, etc.
Nobody's going to come straight out of our class into a software engineering job. They'll have plenty of opportunity to learn that later, supposing that (as happens gratifyingly often) they change their minds about what to study in college because of our course.
They're not (or at least not yet) hackers, in the sense of people whose instinct on meeting a machine is to take it apart.
Oh, P.S., there is one sense in which block languages are better for software engineering: you can have arbitrarily long names of things (including spaces between words), because you only ever need to type the name once, so you can give your procedures self-documenting names such as "convert upper case to lower case letters" instead of ugly "convUcLc".
Re: λ Snap – An inviting programming language for kids and adults for CS study
#76A note to those commenters who complain that visual programming doesn't help you learn software engineering: Right, you aren't our target audience. We're after the people who aren't going to major in computer science in college, but who're curious what all the fuss is about. They've taken high school algebra, so they know what a variable is and what a function is. (They don't have to know about functions as data, but…
But you know some wag is going to paste the Pevear and Volokhonsky translation of War and Peace into a block name, just to see if he can. :-) So perhaps there does need to be an artificial limit, at 4096 characters or so, on block names.
Re: λ Snap – An inviting programming language for kids and adults for CS study
#77Earlier quoted context omitted.
Six months ago I was teaching a beginning-programming course to six kids, using Snap!, so I was reading the forums. And there was a group effort to add documentation to many of the blocks that were lacking it. I haven't been back in a few months, so I don't know how that effort is progressing, but there were definitely some undocumented blocks that were getting documentation completed as I watched, and eventually add…
I have to clarify that the Snap! implementation is 99% the work of Jens Mönig. It was 100% Jens for the first two major releases, back when it was called BYOB ("build your own blocks") and was an extension of the Scratch source code. Then we wanted to use it in a CS course for non-majors at Berkeley so I got in touch with Jens and started complaining about missing features! The result was an intense collaboration in…
Re: λ Snap – An inviting programming language for kids and adults for CS study
#78Earlier quoted context omitted.
Fair that your path worked differently for you. But "no connection to the real world" is hard to sustain once you look at what people actually build with Snap!/Scratch. The ecosystem is full of bridges to physical stuff: Cameras, microphones, audio, pen plotters, 3D (BeetleBlocks). Snap! 12.1 (video from a few days ago) adds body-language recognition, Bauhaus-style shape compositions, first-class Processes, translati…
I guess I just can't relate to it, because I was fascinated with the computing itself, not just getting from A to B as quickly as possible so it wasn't the project that was the motivation, it was figuring out how to do it for real, and getting closer to expertise in programming for example the TurtleStitch, I don't know how to say this exactly, but to me it doesn't strike as something that'd interest people who want…
No, I think you're the one missing the mark. And even if it shows off Snap! while teaching computer science, and students have something tangible, soft, and colorful to show off from the learning process, in what way is that missing the mark? What do you even believe the mark it misses is?
In no way are any of those modules I mentioned merely intended to simply show off Snap's capabilities. They have much more legitimate pedagogical purposes, and if you'd simply watch some of the Snap!Con presentations and videos I linked you to, you'd see and hear their developers and teachers and students show and explain what those purposes and results are.
I attended Snap!Con in Barcelona, played around with TurtleStitch myself, and still have and cherish the cool textile artifacts (and also cool friends) I made.
And the TurtleStitch presentation included live streaming video of students of diverse genders and cultures and ages enthusiastically showing off and talking about the beautiful physical objects they designed, programmed, made, presented to their parents and the conference, and are rightfully proud of, and discuss what they learned from the experience.
Trigger Warning: If diversity enrages you but Nazi salutes don't, then that's your own bigoted psychiatric problem.
Snap!Con 2021 - TurtleStitch: The Power of Diversity
https://www.youtube.com/watch?v=B-EGVQR9Aa4
> Over the last few years, the TS community has grown not only in size but also in diversity, integrating people from different cultures, ages and genders. We believe this has to do with the specific attraction that textiles generate. Every culture has a specific textile tradition which reaches directly into the daily lives of everyone, evocating both personal as well as collective memories, generating an affective field. The coding aspect allows rethinking this tradition from a contemporary point of view, creating a space that is open and not yet fully defined, inviting people to open experimental exploration.
> How this space is then explored, how the technical and the textile are combined, how machine and hand-craft are related and what kind of products -- tangible products of ones own learning and creativity -- are generated is deeply influenced by local conditions and personal preferences, providing the space of diverse articulation and, through the peer exchange on the platform, collaborative inspiration.
> In this talk, I will provide a short look back at the environment from which TurtleStitch emerged and give an overview of the current state. Voices from the TurtleStitch environment will provide their own perspectives on and use of TurtleStitch.
> Check out TurtleStitch at https://turtlestitch.org
In a nutshell or TL;DR for someone unwilling to put in the time and effort to learn or even consider evidence, and who talks about promoting curiosity but is incurious yourself, and who performatively refuses to recognize an obvious Nazi salute and feels compelled to repeatedly defend and praise Elon Musk after he does it twice in a row on international television: it's all about Constructionist Education, not promoting or showing off a product, or selling computer controlled embroidery machines, Arduinos, and robots, or even a cynical huckster perennially promising full self driving cars and trips to Mars.
https://en.wikipedia.org/wiki/Constructionism_(learning_theo...
> Constructionist learning is a theory of learning centred on mental models. Constructionism advocates student-centered, discovery learning where students use what they already know to acquire more knowledge.[1] Students learn through participation in project-based learning where they make connections between different ideas and areas of knowledge facilitated by the teacher through coaching rather than using lectures or step-by-step guidance.[1] Further, constructionism holds that learning can happen most effectively when people are active in making tangible objects in the real world. In this sense, constructionism is connected with experiential learning and builds on Jean Piaget's epistemological theory of constructivism.[2]
> Seymour Papert defined constructionism in a proposal to the National Science Foundation titled Constructionism: A New Opportunity for Elementary Science Education as follows:
Papert> The word constructionism is a mnemonic for two aspects of the theory of science education underlying this project. From constructivist theories of psychology we take a view of learning as a reconstruction rather than as a transmission of knowledge. Then we extend the idea of manipulative materials to the idea that learning is most effective when part of an activity the learner experiences as constructing a meaningful product.[3]
And that's not bullshit, just a toy, or disconnected from the real world, as you so wrongly claim. You're the one who's making unsupportable statements that are provably disconnected from the real world, my friend. And yours are knowingly false whoppers intended to offend sincere educators and defend trolling fascists, not polite white lies to spare people's feelings.
Re: λ Snap – An inviting programming language for kids and adults for CS study
#79While there, I helped develop this middle school curriculum for Snap: https://bjc.berkeley.edu/bjc-r/course/sparks.html
It was really interesting to attempt a functions-first approach that was still fun - I ended up re-making similar projects for a functions-first Python course as well.