Active Learning for Students and Educators: Computational Adventures

Rory Fulger describes Computational Adventures, a six-month online program where students aged 11-18 learn Wolfram Language through biweekly projects like facial recognition, cryptography, and Shakespeare analysis. The program emphasizes early skills, frequent low-stakes failure, and a Discord community for support.
Chapters
Hi there. My name is Rory, Rory Fulger and I am the pre programs, sorry, the pre college education programs manager at Wolfram Research. My general background is that I bachelor's in computer science and a master's in education technology. And I've been running the education programs at wolfram since about 2019. So I am generally in charge of all the programs that are for college or pre college students. So the middle school summer camp, the high school summer research program, the Wolfram Emerging leaders program, the student ambassador program, all of this kind of stuff. And we are starting in the next few months, so starting in January, a brand new program called Computational Adventures which is going to be a lot of fun and will be focused on students aged around 11 to 18 and students with an interest in, in STEM and computer science. And that'll include kind of individual students, but also families, schools, after school clubs, libraries, or this kind of stuff where the kind of overarching goal is to learn Wolfram language coding skills, but also learn computational thinking, learn to learn some kind of independent thinking, some project stuff, and to really explore the kind of the outer limits of the kind of computational space. So what is a computational adventure? Computational Adventures are a six month journey for kids and teens to learn computational thinking, to learn Wolfram language. It's kind of a subscription type vibe, you know, kind of like those, you know, the, the kind of STEM subscription boxes that you might get in the mail with lots of interesting stuff inside them. These are obviously all online in Wolfram notebooks. So students are sent a new adventure every two weeks and they work through it with the support of our super active Discord community. So we have people hanging out on Discord and, and helping students with questions and all of this kind of stuff. And we get lots of students who are coming in with no computer science experience at all, all the way to, you know, being pretty competent in any other language, to being pretty competent in Wolfram language. So we're kind of working with, working with the whole group. I wanted to just give you some examples of some, some computational ventures that we have. Some, some examples would include composing computational music, building facial recognition classifiers, solving math problems, creating cryptography ciphers, computationally analyzing Shakespeare plays, exploring real world data, working with maps, building random layouts for board games like Catan image processing, generative graphics, writing computational poetry, building meme generators, creating active content, creating interactive content, building websites, all this kind of stuff. So each adventure includes a tutorial on the relevant Wolfram language function and an explanation of that content area. So, you know, Maybe a some background in cryptography stuff and then multiple levels of problems to solve. So maybe some entry level and some more advanced problems and then some self contained kind of mini projects and extension ideas to complete over a much longer period of time. Alongside this, adventurers kind of gradually learn to code in Wolfram language and they develop their skills and their confidence in programming and in computational thinking all at the same time. So what the general adventure format is. And let me just pull one up so that we can have a little look at it. Oops. So this is an example of a computational adventure. So we go through. So there's. For this one the adventure is to, is to build, is to write some computational poetry. So we, we look at the kind of ways that Wolfram language gets words. We look at different functions that we, that we might use to get random words. Then we look at some string manipulation stuff. We talk about how strings work, how string splitting and joining and demonstrate some other functions. And we talk about string templates which is a slightly unusual thing to get into this early in somebody's Wolfram language journey. Then we talk about select and selecting based on patterns. We even talk about resource functions and stuff like that. Then for this one there are two different, two different kind of mini projects. There's one that's kind of Mad Libs poem where you're generating a random word to put in each little hole. There are hints associated with each thing, steps and functions that you might use. And then the next one is making haikus. So for a haiku, obviously that's a five syllable, seven syllable, five syllable poem where you would want to kind of generate and test and get your poems to be the right number of syllables. And then we have an extension where maybe you do a similar thing to that but using some machine learning thing if you are a little more advanced, which is pretty cool. So there's a kind of large variety of things that these students learn, as I said earlier, kind of ranging from composing computational music to solving math problems, to creating cryptography ciphers, to exploring real world data to working with maps, to image processing generated graphics, writing poetry, making art, all kinds of really, really exciting stuff. And you know, the kind of mini projects that are associated with, with these kind of range from things like writing the chorus of, you know, let it go from, from frozen using Wolfram sound to building calculators with manipulate, to generating randomized catan board game layouts, to riding haikus, all kinds of stuff. The kind of subscription service model is a, is this six month program that kids aged kind of 11 to 11 to 18 roughly get to get a brand new adventure every two weeks. And then after that two weeks, they're sent a solution to the last adventure and, and they get to engage with our Discord community where they get to ask questions to us and to other students and make some. Make some new friends. So what we're going to do for kind of the. The majority of this session is if you go to the. The handouts section up top, then you'll see there are two, Two adventures that we can. That we can look at. If you're pretty confident in your Wolfram language skills and you want a more advanced adventure, have a look at the computational poetry one. If you're just getting started, then I recommend the computationally random art adventure, which is the. The kind of. The third one in the series. And what we're going to do is we're going to kind of. We're gonna. You guys are gonna work through these. Work through one of these and kind of, as you're going through it, feel free to put any questions in the chat or come, you know, come on, Mike and, and talk. And we're gonna kind of check in every. Every five or ten minutes, probably every five minutes. And we're just going to see how we're doing. And then in, in about 20 minutes time, we're gonna kind of call that to a close and we're going to talk about what, what we liked, what we didn't like, and how useful we think this stuff is and how we might be able to use it in different types of environments. So does that kind of sound like a good plan to everyone? The alternative plan that I have is I have a little poll here. If we would rather I just go through one, then that's totally fine, and we can do that. But I'll just give everybody a couple of seconds to just pick what option they would prefer. So if you want to fill out that poll real quick, that would be great. Give another five seconds to fill that out. Okay, so we had a 50, 50 split. So what I'm gonna do, I think, is let's. If you want to mute me for the next kind of 15 minutes, then feel free to do so. That's totally fine. And you can work through it by yourself. If you would rather work through it kind of with. With the group, then that's great, and we can, we can do that. So. Looks like competition poetry is also art. You see, if I can just share this poetry again. Okay. Hopefully computational poetry too will be. Will Be poetry now. Let me know if it's not. But. Okay, so let's just go through this one. For those of you who would prefer to. To do it with me, that's totally fine. So in this computationally random art adventure, we're gonna learn how to do graphics and randomness, and we're gonna learn how to create a kind of random night sky. I don't know how easy this is to actually see on the. On the screen, but this random night sky has lots of little random white dots for stars, which is. Which is pretty fun. So let's. Let's do that. Okay. So in this computational venture, we talk about how graphics get built with different components so we can use graphics to display named shapes. So we know that there are. A variety of kind of named shapes in Wolfram. So we could do rectangle, triangle, disk, circle, all kinds of different shapes that we can make in Wolfram, and then we can give them colors. There are loads of colors built into Wolfram. We can change the color. And all we need to do for that is put it into a little list at the beginning. So we go list, color, comma, the shape, end of list. And if we want to give it multiple colors and shapes, then we have to give it, in the list the color that we want, our first thing, and then the location that we want, our next shape. So we know that triangles have three points. Point one is in this point in space, point two is in this coordinate, and point three is at this coordinate. And then if we want to change the color for the next thing, we just put the next color and our disk. If we don't want to change the color, then we just don't have to specify a new color. And we can have whatever color we want, and we can change the location however we want to do it. We can also make unnamed shapes. We can make a shape with any. Any side or whatever that we want. And so we just put in polygon the list of the coordinates that we want to do. And most importantly for our little mini project is we can display points. So we get a point on each thing, and then those appear in our graphic. Or we can do exactly the same thing, but with a line set backgrounds to be whatever code we want. Easy peasy. We love it. The next kind of thing that we teach in this adventure is kind of randomness and generating multiple things. So our first function that we demonstrate is random choice. So every time we run this, it randomly chooses a color from blue, yellow, and green. Obviously, those could be any colors or Anything at all. We create random numbers by giving random integer a little range. And we can use random real to get random numbers that aren't whole numbers, which is pretty cool. Making lots of copies of things we can do using a function called table, which if we're familiar with general Wolfram language structures, we're probably pretty familiar with table. We can also use table to kind of iterate through ranges or to iterate through lists. So Satiris asks, are concepts like what list or what iteration does introducing previous adventures or do the students learn them implicitly by seeing their use and doing them themselves? Other. So that's a really good question. So we do teach kind of right at the beginning we have so show you a couple of our really earliest ones. So in our kind of super basics we teach them so in our super basics intro, we teach them kind of terminology like lists and inputs. We teach them a function structure, so how to do function and syntax coloring and documentation. So that's our kind of super basic intro Intro. And then we also teach them things like set and lists and kind of table we introduced very very early on. So yeah, we do kind of. We. These things have been kind of introduced already. I didn't want to give you guys the very, the very easiest one, assuming that most of you are not, are not actually the target audience for, for doing these. So but yeah, thanks tars. Yeah, we teach those nice and early. But yeah, so then we tell them you can do any functions inside tables and we teach them how to display lists in rows, columns, or grids. So let's kind of make a night sky thing. So those of you who are, who are doing this one with me, if you want to open up a warframe notebook and try and figure out using the things that we learned up here, how you might randomly get lots of points into this, into this box, into this graphic. Set the background to be black, set the color of the points to be white so that you get your random night sky. So let's take, let's give you a couple of minutes. We'll do, let's do just, just like five, let's do five minutes where you guys can, can take some time to, to do that yourselves and then we will do it together in five minutes. And while everyone's doing that, you know, feel free anybody to come off Mike and ask any questions or put questions in the chat, whatever works best for you. Questions about this or questions about the program as a whole or, or anything else you want to Talk about. Take 5 minutes to try and make our night sky before I tell you how to do it. Yes, Tyrus. I love that idea of having reads out readouts of these instructions. Even using voice synthesis or mascots. We are working on videos for, of us kind of teaching, teaching these things so they can watch along as, as they read as a, as a really good alternative. Okay, so let's, let's figure out how to, how to create this. So in my, my computational thinking brain, I know that I'm going to need. If I go and look up at points, I know that in order to have multiple points here, what I'm going to need is two random numbers in a little list. Inside points, inside graphics. I'm going to need this, but I want all of this, these to be random and I want way more of them. So let's try. If I want random numbers, I want a random integer. And let's, let's just make my thing really big. Let's say, you know, I want it between 1 and 200, then now I have this. That's great. But I want two of those, right? So I want, I want a list of random integer, integer, random integer. I love it. I'm going to want that to be inside point. I know that already. Great. Tells me where my point is going to be. Now I want 100 of them. I know that if I want 100 copies of something, I use the function table. So we're building it out step by step. Great. Now I have 100 points that are all in random spots. And if I do a graphics of that, I'm going to get this little guy. I love it. But what I really, really, really, really, really like is I want all of them to be white, right. And I want my background to be black. So let's, let's just see if I can set background to black. I'm going to set it to yellow right now so that I can still see my things. And I know that I want this to be, to be white, but I know I've got some weird list things going on now, so I'm not quite sure if I'm gonna be able to do that. Well, it does look like that worked. We love it. Fine, then we can let that do. We can set this to white and we can set this to black. Fantastic. Beautiful. If I was a particularly enterprising kid, I might be like, well, I would like these points to be a different size. And so I might, you know, I might type in point. I might see. Wow, okay, it's right there. I wonder what point size Does If I bring up documentation. What does this do? Okay, it looks like if I have my point here, I can put point size into graphics and set them to be little. So why don't I try that? I'll just do point size of. Let's do point one and set them here. Now I have little ones, not really as small as I want. Let's make them really small. Hey, now I have a beautiful night sky. I figured it out all by myself. Fantastic. So my all kind of thought for this is that kids are going to be able to kind of work through based on the information that we give them and based on the skills that we teach right at the beginning for looking at documentation and for kind of thinking computationally, they're going to be able to kind of figure out how to do these little mini projects. And then there's a variety of mini projects inside each one that get kind of increasingly complex like this one is. It's not inconsequential the code for this. And then we give them three things that get increasingly complicated. And then we say do something. Do whatever you want. And we give them some examples of other art that's in this case being created by people their age. People from the high school summer research program this year who made some cool art in one of our computational art workshops. And. And we say, you know, go for it. And we had loads of really great responses in. In our. In our discord from. From this where people. Kids came up with some really cute stuff, made some really good executions of these. Of these projects. Did anybody come up with a solution for any of the other art ones or for any of the computational poetry ones that they want to. They want to share? Yeah, we've got a different solution here. Nice. Nice. We can see how this is very similar but slightly different using map instead of table. This isn't a skill that they have yet. We haven't taught them this yet. The pure anonymous functions and map. But yeah, beautiful solution. We love it. Did anyone else come up with anything different or any. Anything for any of the other projects across either either adventure? I'm told that you are able to share screens if you want to. Oh, and question was asked, how about animating them to appear and disappear for different times to sparkle? And that's a really great idea. I love that. I bet that would be a pretty straightforward thing to do with a function like listanimate and I'm sure that would be a really great extension to one of these projects. I think that would be fantastic. We can try Something like very simple, now let's do this 10 times so that we get 10 random things and then we'll do a list animate of that. So we'll get 10 random iterations of our night sky, which isn't quite what you asked for, but you could change a different thing like their color or their size in your, in your table. Very cool idea. I love that. Anyone else come up with, with anything for any of these, any of these adventures? You can speak up and ask to share your screen or whatever you would, whatever you would like. Okay, cool. So my kind of next, next thing is I want to, I want to take you through a couple of other mini projects that we, that we do. So one of the ones that I like is this one on machine learning. So first off, we teach how rules and associations work and about editing data structures. And then we teach cool functions like Classify, which is our kind of basic, basic machine learning function that creates a little classifier of the, of the things. And we also teach predict and sequence Predict. So making, making educated guesses on the, on the kind of next output in a sequence. We teach them how to analyze their machine learning classifiers and then we ask them to do some fun activities like predicting the next word in a piece of text and picking three characters from a TV show or movie and making a little classifier that figures out, you know, which Harry Potter character you look most like or whatever. And they, they always, always enjoy that one. Another kind of different, different type is this kind of real world data stuff. So we teach them how to use our entity data sets and geographic data. And we also teach them some basic kind of if and which structures and tests. And then we have. I really enjoy this kind of scavenger hunt type vibe. Kids often have a good time doing that. So using entities to find different things and then using the documentation to find out how to do, you know, how to find out various, various different types of types of information, which is a lot of fun. And then we have them do things like, you know, make a, make a road plan a road trip. So they have to look up some geography stuff and some. Sorry, some geography stuff, some entities, some shortest, shortest road algorithms and it's, it's a pretty fun time. They have a good time doing, doing all of this stuff. Yeah, just addressing comments, Phil. Getting the right effect for the lines takes some. There's some math involved in that and that's often a challenge for them. That's a regular question that we get satirist when using points directly with graphics you didn't put the points in list brackets and so it didn't render and background, you know, black versus versus black in quotes and that kind of stuff. You know, the children, we don't teach explicitly this kind of the, the idea of a listable versus a non listable function because that like getting, getting into the detail of that is, is actually more complicated than just kind of seeing it work and not work. So what we really encourage them to do is run their code as soon as they've written something and then see if it works. And if it doesn't work, look it up in the documentation, change something, experiment, see what patterns you can find in how something works and doesn't work and try and figure out what it is that you're, that you're missing. I, My personal philosophy is that kids should be made to fail really frequently in low stakes environments so that they, A, they can, they can learn a lot from failing in a way that they can't learn from us telling them the answer. And B, I think it's a really good, you know, self confidence thing to fail really frequently at stuff that is, that is fun. So they, they have a pretty good time failing which is pretty great. It's, it's not always a thing that they're allowed to do in other environments. So we create a nice place for them to fail without consequences or without negative consequences. There are lots of positive consequences to them failing. Yeah, Great. Well there. Now I am going to just open us up to questions to other thoughts that we might have about, about these adventures, about the kind of philosophies that you're seeing kind of behind what we're doing. Any questions that you might have about, you know, running these, these activities with, with kids. You know, feel free to, to ask anything either in the chat or in, in the Q A if, if you want. Like the chat lets everyone see and the Q A only lets me see. So yeah, feel free to, to answer your questions. Yeah, yeah, I really, I really love failure. Yeah. Yeah. I think it's a really, really valuable thing for the kids to be able to fail in this kind of environment. And they, the kind of exploration is really great. So they get to. You know, we often get kids at the beginning of this type of program who will ask us so many questions. You know, they'll be like, I ran or even, you know, I wrote this, this line of code and I don't know if it works. And we're like have you run the line of code to see if it works. They're like, no, I need you to tell me if it works or not. I'm like, I'm not going to tell you if it works. You need to run it and see what it does. And they're like, okay. And then they run it and it doesn't work. And they're like, it didn't work. I said, great, fantastic. Have you looked up any of the functions that you've used in the documentation to see what the syntax should be? No, I haven't looked anything up. Great, go away and look it up. We'll do a back and forth for what seems like a long time of them trying to get me to tell them what to do, to tell them the answer. And I am kind of mean about it and I just refuse, I just refuse to do that. So they learn really quickly that they need to try and fail and be creative in their solutions and to look things up and to figure out what they need to do without just being told. And usually by the end of, of one of these programs that, that we run, they are much freer in their, in their, their experimentation and their creativity. And I, I often get the feedback that they, it's really the first environment that they've ever had that ability to, to just not be like as Phil says in the chat, not be penalized for, for failing. And they, they really develop some, some amazing, amazing creative font. Yeah. So yeah, I'm, I'm really, I'm really excited about these kind of things. More childlike font and style sheets. I, I love that. Actually, you know what? I haven't really put any thought into that. I think that's a really great idea. Maybe. Yeah, maybe we'll do a little bit of, of design thinking and try and figure out some, some, some, some maybe slightly more friendly style sheet than the, the standard standard ones. Yeah yeah, I think that's a lovely idea. Yeah. So as you were working through what whichever one you worked through, what what did you think? What was, what was good, what was bad? What what did you like or not like? What what thoughts did you have on, on kind of these as, as kind of introductory materials? What what did, what did we think? Feel free to put put in the chat. Any. Yes. A grown up version of this is something that we're working on in a slightly different way. So we're currently making actually a Wolfram you course that'll be focused on computational thinking and will go go through. It'll be kind of almost like a very applied version of elementary Introduction to Wolfram Language where you work through some, you know, how to do, how to do this thing. And then there'll be five projects that you'll do. And so one of them will be a computational art project. One will be a computational sound, one will be a computational poetry, and then there'll be two video game design projects, one for a text based game and one for a graphics based game. So we, we are about halfway through making that, that course and that'll be our equivalent of this for, for the grown ups, which will be, which will be really fun. I think we're working real hard on those right now. Yeah, so, so when, when that comes out, you'll, you guys should, you guys should all do it. It'll be a lot of fun. Yeah, yeah, yeah. And more on the, the fear of failure thing. We really want to encourage that growth mindset, you know, feeling that every time you fail you have learn something, learn something good, which is really valuable. Okay, fantastic. If no one has any other questions or thoughts, then I will let you go early to enjoy the rest of the conference. We'll be talking Tomorrow morning at 9:30 CT on designing engaging programs for, for kids and teenagers where I'll get much more into the kind of pedagogy and research and stuff behind the programs that I run, including the, the high school summer program, which is our kind of big program. That's very, very cool. And we'll be talking in a lot more detail about the method behind everything and its pedagogies, behind the choices that we've made in designing those. So please do come to that. We would love to see you. If you're interested in running computational ventures in a school or a library or anything like that, then shoot me an email. So my, my email is. Dot com. It won't let me type that into the chat. So warriorframe.com is my, my email and you can send, send me an email asking about that. If you're interested in having your kids sign up, then you can go to the Computational Adventures website which is right here and you can sign up. Okay. Well I hope that you have a wonderful rest of your day and we will talk to you real soon. Thank you guys. Yes, Tyrus, how do you handle going to an LLM or searching, stacking, Stack Exchange for figuring out solutions? My thing with, with that kind of thing is, is, is double ended. My first thought is that if they want to do that, then that's totally fine. This is an available resource. You know, it's no different to me than, you know, looking up how word is spelled in a dictionary or going to a library would have been in 1950. You know, these are resources that are available to students to solve problems. And as an educator, that just means that we have to design problems that require thought above just looking something up to get the correct answer so that we can continue to teach real skills instead of just teaching how to, how to look something up, which although a valuable skill, is not the be all and end all. I really encourage kids to search, stack, exchange and figure stuff out and to use other people's code. You know, this is how real coders code is, looking it up. You know, I don't know anybody who just sits there and just writes new code with no input from the Internet. It's a pretty unusual way of, of doing computer science these days. So we don't, we definitely don't penalize them looking things up on the general Internet. As far as the, the LLM stuff goes, I do warn kids usually that if they get an LLM to do it, then that's fine. But A, that often means that they won't have solved the problem in its entirety because the LLMs are good, but they're not, you know, they're not a human having thoughts and B, they haven't learned how to do it if they just submit something that an LLM has done. So you know, for these kids who are kind of paying to take part in this program so, so that they can learn something interesting, they, they haven't met their own goals by, by running it through an LLM and then saying that they've done it. And I'm not particularly interested in teaching kids who aren't interested in learning. So I, if they, if that's what they want to do, then that's okay. But I generally say up front that you're not going to learn as much getting ChatGPT to do it as you are doing it yourself. Yeah, but yeah usually helps a lot with function discovery and there's nothing wrong with putting these things through LLMs. They may well give you hints that you didn't have so that you can figure stuff out for yourself, which is great. Never opposed to that. Any other questions anybody might have? Okay, fantastic, then I will, I'll let you all go. I'll, I'll hang here for a minute in case anybody wants to stay behind and ask any questions. And everybody else, I hope to see people tomorrow to talk about some pedagogy about the other program programs that we run.
Can you hear me?
Yes. Hello?
Oh, hi. Did you say your email was rory fworldfrom.com.
Yes, that's correct. Yeah. R O R Y F. I sent.
You an email then. Thank you.
Perfect.
I wanted the stars to sparkle. I. I wanted a time and animated with time so that they could only go on at different times for a certain amount of time. I wanted to see you do that.
Amazing. I can. Yeah. If you shoot me an email, I will, I will code that for you. And you can, you can.
Oh, you can't give me the answer.
Yeah, well, yeah, write, write, write some code and send it to me and, and we can talk about it. I think that's a.
You'll get my email. It's actually about running an after school program, but.
Oh, fantastic.
I think this is just a genius idea. Like, like all Wolfram ideas we try.
We.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






