Snap! target audience

i see you use forum to chat about collab, but that looks uncomfortable, is it allowed here to post our socials to chat more easy?

No. People have been known to violate this rule, but it makes us very uncomfortable and people have been banned for it.

We're not really happy about this rule. Child molestation by strangers, which is what we're talking about here, is really quite rare, but once is once too many, both intrinsically and because we'd get shut down. I'd much prefer a world in which we could all get together and hang out, and go out for Chinese food, which I could do as a high school teacher back in the 20th Century when people were less crazy.

What do other web sites for children do about this?

Some warn the user they are leaving the site and that they should be careful about giving away pii and other details

Huh. I can't imagine that that's enough to satisfy COPPA, but I'll look it up again.

is snap oriented on kids?

i mean, its advanced, but complicated enough

I think the simpler blocks like wait or repeat loops might be directed towards beginners. Plus, each block has its own help section.
But I don't know really how to explain it.

Well, first of all, from my perspective 30-year-olds are kids. :~) So, yeah, that really just means "not for professional programmers," but not because it has any weaknesses as a programming language, apart from a little slowness from being interpreted rather than compiled. It's just that after some programming experience it becomes faster to type than to drag blocks around.

Second, from a legal perspective, which is how we got into this question, a kid, a/k/a a minor, is anyone under 18, in the US. (For certain purposes, under 13 in some other parts of the world. In some places, such as France, the distinction comes at different ages for different purposes; in particular, there are like half a dozen thresholds having to do with alcohol, e.g., at age X you can drink wine if accompanied by a parent, etc.)

Finally, with respect to Snap! 's goals, bear in mind that Scratch already existed, with an official target audience that started at 8−12 but has since grown somewhat at both ends, and our main design goal was to raise the high end. On the other hand, for our first few years we were hoping to talk the Scratch Team into incorporating our ideas into Scratch, so we didn't want to increase the low end.

More on low end

Although lists were implemented for Scratch earlier (by Jens, among others), it wasn't until 1.4 that they were actually installed for users, partly because the ST were worried that they'd intimidate 8-year-olds. As it turned out, lists did intimidate 8-year-olds, at least some of them, but didn't scare them away from Scratch altogether. They just didn't use lists until they felt ready for them. This encouraged us to think that young kids could similarly just ignore first class procedures and lists until they felt ready, so we didn't particularly have to worry about 8-year-olds in our design. As it turned out, there are 8-year-olds who are perfectly happy with lambdas, other 8-year-olds who can use HOFs although iffy on the general principle of procedures as first class data, and a few 8-year-olds who avoid the whole topic. I have to admit that we've had a few young kids scared away from Snap!, but Jens argues that that's just because of how the forum is almost all about advanced topics, for which I blame myself because that's what's fun for me to talk about.

But our initial target audience was quite narrow: students ages 15−19 who were taking a beginning computer science course for absolute novices. The 18−19 year olds were college freshmen, initially just at Berkeley; the 15−18 year olds were high school students taking the College Board Advanced Placement Computer Science Principles course, for which we developed a Snap!-based version called The Beauty and Joy of Computing, one of the initial pilot versions. (The lower limit of 15 reflects a College Board rule disallowing high school freshmen from taking AP courses, although the rule is not always strictly followed, sadly. If I ruled the world, only seniors would be allowed to take AP courses, and no more than two at a time. But we've always argued that 14-year-olds could handle BJC.)

Since then our target audience has expanded both downward (there's the beginning of a "BJC Sparks" course for 12−15, among other initiatives) and outward, meaning non-BJC contexts. We've been astonished and delighted at the extent to which people other than our students and the teachers for whom we've offered professional development have adopted Snap!. This includes teachers who've developed and taught other curricula, developers who've built specialized languages on top of Snap!, such as TurtleStitch and NetsBlox, and kids who've discovered Snap! independently, often but not always by way of Scratch.

So, it's complicated. In the beginning we had a very simple story about our target audience, but honestly, we don't talk so much about that these days; we take on specific challenges without worrying about how they might fit into a unified story.

Also, some developments in Snap! are technology-driven rather than pedagogy-driven. Continuations, hyperblocks, and metaprogramming all came into Snap! because we knew that they existed in adult programming languages and we were convinced that block languages could do anything text languages could do, hopefully in a more accessible way. Hyperblocks, in particular, then turned out to be pedagogically quite useful.

PS Sorry for hijacking the thread.

Wow, thanks for a big answer! Its always interesting to know more about snap! :slight_smile: