NOTE: the main tutorial notebook is attached at the end of this post.
I wanted to share the attached Mathematica notebook that I created for teaching kids (ages 9-14) about the Wolfram Language on the Raspberry Pi. It has a simplified (and colored) interface for students and easy editing tools for authors (even those with little or no experience using Mathematica). It includes a self-paced tutorial designed for beginning programmers who are young or young-at-heart. It also includes instructions for authoring your own tutorials. The interface is minimally dynamic so the tutorial will run as smooth as possible on the Raspberry Pi model B; if there is interest, then we could build a prettier dynamic interface for more powerful hardware. Please comment below with any improvements/changes that you would like to see and of course please comment or upvote if you find this useful or interesting :)
Nicely done - thanks for sharing! It probably is worth cross-posting at the related Wolfram forums at RPi site:
If they do not have file attachments it makes sense to link to this post.
How long did it take for you to develop this?
The short answer - I'm not sure how long I have spent on this project thus far, but it is probably around 100 hours.
The long answer - This is a meandering skill-building personal project that is driven by an interest to help kids learn about technology and to help teachers develop cool curriculum. This project began in June when I led a workshop for 5th graders. I put together some code and text in a standard notebook for the first workshop. I guess it took me about 40 hours to put together the content, which included a few rewrites based on feedback from teachers (it could use another edit, review, proofing, and update).
During the workshop, I noticed that kids were struggling with the notebook interface, so I decided to build something that kids could use with less frustration while learning to code. It took me about 20 hours to put together my first attempt at a kid-friendly styled notebook. The styled notebook from that first attempt was completely redesigned after I got some awesome feedback about improving the interface from someone whom I respect greatly. The result of that feedback can be seen in the current version and took about 40 hours to incorporate.
This is amazing! I'm a director of an after school program which teaches video game design, stop motion animation, robotics and basic coding. This notebook is perfect for children who are ready to move beyond drag and drop coding like Scratch and move into something a little more sophisticated. The interface is elegant and the content is easy to understand. I have already helped run a workshop for 4th and 5th graders using this notebook and it was a real success. Thank you so much for putting the time and energy into making this. I can't wait to play around with the tutorial and add my own content. I can already tell that this is going to be a helpful tool for future educational activities.
Nice work, Kyle. I might suggest that the next step is to integrate Next Generation Science Standards into the notebook, which would help science teachers identify where and how this activity fits into their instructional delivery. Another big burden on instructors is developing concrete learning objectives and assessment tools to measure whether or not the learning objectives are met. Having a "full package" for teachers to use or modify makes adoption much more feasible.
Sorry for the delayed reply Bob. I agree that a tagging system would be a very good next feature so each page or section could be explicitly associated with discrete educational standards. I also agree that having a clearer system for including learning objectives would be a benefit. Right now this information can be placed within the TEACH cells, which are shown in the TEACHER display mode, but not in the STUDENT display mode. There are some explicit and some implicit learning objectives associated with the group activities in the current notebook's TEACH cells, but I agree they should be more explicit since they are very standard components of lesson plans.
Just want to reinforce your implied observation - the best way to start Mathematica instruction is with Notebook basics and emphasizing that the students should not just blow this step off because they think they are beyond it.
Thanks Mark! I totally agree that this should be made more explicit. It is important to remember that there is a whole bunch of information being thrown at a student who is learning to program for the first time: how the interface works, how interpreted languages work, how computers work, the syntax of the language, the vocabulary of the language, the result of evaluating the language, .... Yikes, it even overwhelms me! Make sure there is a solid foundation in something, I think the interface is the simplest domain over which a student can gain mastery, this builds on the positive psychology concept of the Zorro Circle from the Happiness Advantage.
Beyond having the kids read the first section, it is really great if you can find a way to enact the group activities described in the TEACH cells (switch to TEACHER display mode to see them). These activities are designed to engage children's preexisting knowledge about relationships. Scaffolding programming concepts on top of this type of social knowledge through analogy with human relationships can be far more effective than simply exposing kids to technical descriptions and definitions. A big shout out to Anna Musser who helped me develop the activities and taught me all about scaffolding STEM concepts on top of children's preexisting social knowledge.
I am also very proud of the fact that kids can simply click on the CODE tab of any CODE cell to evaluate the Wolfram Language within it. There is a surprising amount of cognitive load required for kids to remember to simultaneously hold SHIFT and press ENTER. Removing this cognitive load by providing a simple button seems to increase the ease of use substantially. With the current style of the notebook the only way for kids to learn this trick is by doing the first section of the tutorial.
There is a proliferation of complex and diverse software interfaces, and I always start teaching any software with the basics of how to interact with the interface. I even do this for introductory Mathematica seminars at advanced institutions like MIT. It seems to relieve a lot of stress when people understand the different functions of the frontend and the kernel. People seem to be more comfortable with well-defined roles and responsibilities.
Interesting about the "cognitive load" re the shift-return execution requirement. No question it's contrarian to everything else the kids know.
I'm reminded of teaching programming using Fortran in a previous life. I wanted to ignore format statements as lacking in any redeeming value; but, of course, this is what the students wanted to know about and rightly so to get their homework done.
I've never resolved how I would teach Fortran differently now. But, per above, I think your initial focus on Notebooks when teaching Mathematica is the right thing, absolutely.
Not for nothing is the first thing in the C programming book the "Hello World" program.
I really like this. Even if it is not related to Raspberry Pi!
First, your attention to the pedagogical issues like the following is very important.
Next I think the way it builds complexity and exposes the power of the language gradually is impressive.
Thanks for making this and I will try to use an approach like this in my efforts.
Hi Aeyoss, I'm so happy you like it! You made me chuckle, it's totally true that the content I put in this tutorial doesn't include anything specific about the Raspberry Pi. This was for a class on the absolute basics of programming. I did put some effort into making sure it would run smoothly with the cpu limitations and building the author mode (top left view menu) to let others create new content.
On that note, if you switch the notebook to author mode, then you can add pictures by pasting them into READ cells. I know some folks have used this method to create step by step guides (with images of the circuits) about wiring up the raspberry pi (with the pi cobbler) to collect sensor data using the gpio pins and DeviceRead. I will actually be using this method to create curriculum for a "maker" seminar this Fall. If you're .interested, I can share an example here when I get a chance to put some materials together (probably late August).
Stay in touch and keep us updated about your efforts!
- Congratulations! This post is now a Staff Pick as distinguished by a badge on your profile! Thank you, keep it coming!