I'm using snap! in my high school computer science class (11th grade, ~16 years old) and I'd like to reduce the features (~blocks) that snap! provides by default. Reasons:

  1. Simplify the interface
  2. Many blocks are not needed (not "allowed") according to the curriculum
  3. I'd like to have the students see/develop the need for some blocks that simplify tasks ("index of ... in list" would be a good example), and have them implement them on their own.

I started digging through the code, but there has to be an easier way?

  • 1
    $\begingroup$ I'm not super familiar with Snap! but it seems to me like it might be possible simply by removing elements from some of the files in the libraries directory? It appears that this file is a list of what functionality is in which XML file in the library folder. $\endgroup$ – thesecretmaster Mar 17 at 20:00
  • 3
    $\begingroup$ One of the creators is Brian Harvey of UCBerkeley. He has an active web page there with a visible email address. Maybe he would be willing to help. He is retired but spent his career catering to beginners. $\endgroup$ – Buffy Mar 17 at 20:42

This is a bit of a frame-challenge, but what I'm understanding from your question is that your goals here are to: 1) Not overwhelm your students and avoid them getting lost in a plethora of blocks they won't need, 2) Force students to understand how to implement more complex blocks themselves.

Have you considered instead of providing a restricted version of the language (which, could be complex to install and update and ensure every student is using the same version of), simply providing a list of "recommended" blocks? This could help to achieve your first goal, to act to guide students as to what they'll need for an assignment and avoid them being overwhelmed. And, this still allows students who want to explore a larger set of the languages features to do so if they want, something which I think should be encouraged.

As for your second goal, this depends on your class but it may be effective to simply create an assignment around implementing more complex built-in blocks and enforce the restriction specifically for that assignment.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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