 That was to turn the volume up. So this is Martin and Eloise talking about Python in the classroom, awesome. Cool. Yep, hello. So my name is Martin Henchke. This is Eloise. You probably know her better than you know me. And today we're going to be talking about, I'll just have to be there, yep. So yep, I'm a PhD student at ANU in Australia. And yourself? Hi, I'm from Tasmania. I'm a web developer and a student. So I work part-time as a web developer and, yeah, still studying my computing degree. Yep. So yep, we're just here today to talk to you a bit about a couple of trials that we've been doing and some experiments that we've run through that's been looking at using Python as a teaching resource in primary and high school classrooms mostly. So kind of starting off this whole idea, sort of looking at literacy and numeracy rates, which is the heart of Tasmanians in Australia. So literacy and numeracy are both, I think, we can all agree, extremely important skills, particularly for the 21st century, as we move further away from like more sort of mechanical-based jobs and that sort of thing. We're moving towards much more intelligence-based jobs, where requirements be able to process information and have good numerous skills are becoming increasingly important as those other jobs become automated and things. So having really high levels of education is extremely important in schools today. So the literacy rates when you look at it on, say, Wikipedia, which is where those numbers came from, are fantastic. New Zealand has a wonderful 99% literacy rate, which is very, very high. Australia has 96%, which is still very good. And that number sounds really fantastic until you dig a bit more into it. So this graph comes from the ABS, and it demonstrates the level of literacy that all Australians have. And if you classify yourself as being literate, then you're level one or above. Level one is the ability to understand brief bits of information or text that is on a familiar subject. So for example, being able to go shopping or something is something that you can do if you have that basic level literacy. But if you're looking at jobs that require like a sort of a more high level of reading ability, then things like being able to process large amounts of information, possibly in web pages where you might have conflicting information going as well, that's closer to level three or four, and that's getting closer to sort of 15% of the population that has that skill. What lower than it looks like on the surface? Yeah, and so in Tasmania in particular, where I'm from, a few years ago it was reported that we had about 68% functional illiteracy. Literacy, sorry. Numbers certainly can probably have room for improvement particularly sort of as we move on to this sort of topic in the future, there we go. So I'm not sure, yeah, certainly in Australia and indeed many other parts in the world, there's a big push at the moment to try to get programming much deeper into the education system, being much more common. At the moment it's like a very, very small margin of schools will teach programming as part of their sort of broad curriculum. It's becoming more prevalent, particularly in the UK where programs have been put through as well. It's being debated in Parliament in Australia at this very moment, but yeah, it still has a little bit of a way to go. Yeah, as you guys saw the keynote this morning from GoFleaning, they're awesome. I highly recommend a lot of their stuff. So yeah, there's a big push for it and in the UK they've adopted it where there's a lot of code clubs and things in Australia right now, but it hasn't quite got there yet. But why the teach programming? I'm pretty sure that was semi-covered in the keynote this morning. It's not about telling them that it's the new literacy. We tried to approach it from the angle if maybe it will inspire them to want to be more literate. So in Tasmania there's, and possibly other places, there's a bit of a culture of devaluing education. So there are actually people out there I've had friends making fun of me because I went to university because they just think education is a waste of time and I was luckily not brought up in that sort of environment and I think it's a bit sad that they weren't either. I think education is great and I start strongly encourage everyone to be as educated as they possibly can. But yeah, so there's a culture of devaluing education and so people who might otherwise have wanted to go off and do those things are kind of told, no, don't do that. And that makes me sad and I can understand some of the reasons behind it and so I thought maybe if we made a workshop to kind of teach them how to make a game because a lot of kids really like games that maybe they'll see that there's some uses for being literate other than just to go to school. So yeah, so that's how the idea kind of came about. I also wanted to help some other things so I wanted to kind of push diversity as well. I wanted to go out to a lot of rural areas to help the less well-funded primary schools and kind of get some coding workshops out there because I really want coding to be open to anyone and everyone. I was really sad. I came from a rural area and I didn't really get to do anything with coding until first year university so I still feel very new and I'm playing catch up a lot of the time. But yeah, so we wanted to try and get these students and see if they actually wanted to learn about programming. Hopefully you'll find out that we did that and if we did it okay. So we developed a set of exercises. We'll find out about the tools we used to that in a bit and we kind of, we gave those to the kids to do. We basically just taught them very basic kind of things. Control structures and Boolean logic and just started from the basics to work their way out. So yeah, and then we wanted to give them something that they could then put all those skills and use. So Martin created a game. Yes, so the tools we used, we used Python 2.7 and Pygame. In the situation where I had done this I had up until that point never actually used Python so I got to spend 36 hours learning to do so to make a game for kids, which was an enlightening experience just in time for it to not matter, which is nice. Anyway, so yeah, so that was the tool that we used. I think that's been updated now to three, which is why I say it's no longer quite as helpful as perhaps it once was. That was the, yeah, so we used that particular thing as well for our teaching materials. We provided them using like a gift book format. Yeah, so last year I went to a Django Girls workshop. They're really great workshops and they used gift book to deliver all their content and it's a really cool tool. I'm not sure if we can show it to you or not. I'm afraid not. Maybe not if you want to see it or you can just Google gift book now. Most of you have laptops. And so yeah, it's basically like an online book. It's got chapters on the side. It has tick marks so that when students progress through the thing it has a tick and says, hey, you've already done that chapter. Yeah, it's basically just a book and you can format things nicely. The workshops may not be formatted as nicely as they could be. So we tried to cover just very basic simplistic programming concepts, just enough to be able to get a feel for not only how programming languages work but also to give our students enough flexibility to be able to play around with these sorts of things as well. So things like just basic variable declarations, manipulations, stuff like that, a bit of looping, a bit of conditionals and taskings they can make little decision trees that they can use for making small games in their free time or just for sort of getting a vague idea for the general concept of those things. So really just a very broad, just adult approach to sort of these basic things with much more focus on the application of what they were doing as opposed to the actual theory, which I think is perhaps otherwise would have made the experience a little bit less interesting for the students. That was sort of the focus we went from. Where's the mouse gone? There we go. OK, so the game that I made, I had designed it in a way that it was supposed to be like a very basic ability to be able to interact with the world in like a casual way, but it also had to be extendable. So we wanted the students to be able to look at the code and say, when I walk left, I want the character's face to turn right, or if I want them to look like a blob, as I want them to look like a person. If I read that sign, I want a little bit of text to pop up, and I want to have simplistic sort of structures and macros. They could just modify the code very simplistically so they could put in those features as easily as possible. That was the sort of the idea behind this game. Yeah, so having this sort of very flexible infrastructure that would sort of inspire kids to be creative and to sort of build things the way they want to. So they have their own sort of thing they can go from. We also tried to build it to be as, I guess, self-documented as clear as possible so that if they wanted to, after the workshops were complete, they could go home and they could say, right, that was a lot of fun. Let's see if I can make him go in this direction now. See if I can make him shoot bullets or something like that. Just as a feature they could possibly do in their own time. That was sort of the goal of that game, I think. That was one of the other reasons we used Gitbook. A lot of the workshops we did were split over like a few sessions once a week. And so if they had Gitbook, they're allowed to work ahead or catch up as much as they wanted to. We didn't want to control their pace too much because some people already knew a lot of stuff and some people didn't. So Gitbook was a really good tool for them to be able to still be at the back of the class doing stuff and we had mentors going around. So it didn't matter if they were lagging behind or just steaming ahead. We were still able to help them out. Ah, so, with the first workshop, we approached some schools. We ended up going back to my old school, which was exciting. I was really lucky. I went to a private school. And so it had all the resources for us because unfortunately when we started this, we didn't have an army of laptops to take out to some of the less well-resourced schools. So yeah, they all had laptops. They all had Macs, so we didn't have to worry about installing Python initially. It did mean that we were working with 2.7, which at the time wasn't a problem since then the workshop is being updated to Python 3. So yeah, and we had about 20 to 25 students which was a lot it turned out. So we were expecting maybe 10 to 15, but so many students apparently really wanted to learn to code that the teachers just couldn't say no. And yeah, so they each had their own MacBook and we just kind of rocked up one day and ran the workshop. We had two sessions of three hours, so in total it was a six hour thing, but we've worked out since then that a whole six hour day is not quite as effective and nowhere near as easy. Yeah, the first thing we noticed when we did these trials is that a lot of these kids are already coding with almost no understanding of the fact that that was there beforehand. So a lot of them had been doing, or almost all of them I think had actually had some exposure to Scratch and some of them had some pretty impressive stuff in that particular program. Scratch, if you're unfamiliar with it, kind of like an IDE, but it doesn't require to actually physically write code, you kind of just drop blocks into place and it will sort of do the work for you. So you just sort of fill in the variables and the values and things and it'll work from there. So it just removes the danger of syntax errors and things and sort of has this structure sort of built out for you as well as some previous things. So they all had some exposure to that. They also, a lot of them had some exposure to Minecraft and so they had been doing some sort of very basic redstone stuff in that as well, which is sort of relevant, perhaps not quite so much. But yeah, they were surprisingly computer literate and quite competent. Some of them knew how to play Tetris in Emacs. I don't know how to do that. We were like, oh yeah, this is awesome Tetris game. And I was like, you're using Emacs. Do you even know what this is? It was kind of impressive. They've had the laptops for a while and they use them every day. So I guess you find out stuff like that. So yeah, they knew more than I did about Macintosh, this was certain. Unfortunately, we discovered a lot of these skills did not translate well into Python directly. So even those who had like a lot of exposure to Scratch, apparently that drag drop structure just does not translate that clearly through concepts. And so when we actually gave them effectively the same code just without those little blocks, it was much harder for them to understand. So I think there's a bit of a disconnect in terms of knowledge there that was quite important to acknowledge at the time in how that works. We found Scratch worked really well to introduce programming before they can read and write. So maybe like year two is probably nearing the end of that. I've used, since then I've showed off Blockly a few times from Goff Learning and that works a lot better because they've got really nicely formatted code. I think you might have seen it earlier today in the keynote. But yeah, I'm a big fan of Blockly, sorry. But yeah, Scratch just is a bit too much of a sideways step. I taught some kids two weeks ago and they literally had Scratch up and they were doing the exact same thing as like we were showing them in Python. And it was just amazing the disconnect between that just cause like they weren't connected enough. But I showed them Blockly and they seem to just get it as soon as that happens. So that's one thing that Scratch I think could improve upon there. So yeah, lots of kids kind of already know a lot. Like I think they're called natives, IT natives now or something. And that's great. But they're not really understanding what they're doing. So that's always fun to deal with. We had some really fun questions in our first workshop where one kid actually knew a bit of Python which was really exciting. But he really liked Scratch as well. And so one kid asked him if Python was more powerful than Scratch. And this kid was like, well, Python's really cool but Scratch is more powerful. So that led to some really interesting discussions. And I can understand where they're coming from. It's instant gratification for them in Scratch. We had to do a bit of explaining on the Python side of things. But yeah, so we figured out that we don't really want to use Scratch anymore. But yeah, so the teachers really loved the workshop. They instantly drew parallels between kind of grammar and syntax and programming languages. Also when you teach Hello World programs to make sure that they put proper grammar and capital letters and teachers really, really love that. But yeah, we found our game wasn't as successful as it could have been. Yeah, I blame that mostly on Pygame. The big problem with those libraries is because they use object orientation which is a difficult thing to get through in two, three hour workshops to people who are still trying to understand what a variable is in programming is the fact that as a consequence a lot of the Pygame codes that I wrote looks rather complex, perhaps a bit too much for after six hours of Python teaching, do you have to do that much with it? So as a consequence, it was difficult for students to comprehend it. So instead of making that like a take home task or like a play around thing, we did a thing where we just sort of had the code on the screen and then I would show changes that the kids wanted to make and I just sort of performed, like it sort of see how making modifications to the program would impact the way that it played or the way that it was interacting stuff. So yeah, and so the kids would ask, okay, let's make the person a blob and then say, okay, let's give the blob a wife or something, and it would just be these sorts of little things that sort of go back and forth and be able to sort of show them just by adding little lines of code. So although I didn't give them the chance to really do that much themselves, which is really unfortunate, that's kind of why we did it. It still gave them a good appreciation of just, you know, these small little changes that can make sort of a very powerful impact on the program. And then gee, that just that general like agency that you have as a programmer when you're interacting, I think, which I think was still quite beneficial, which is really nice. It also really demonstrates, I think, because things like Scratch and Minecraft are so popular with children and they're being used these vectors for teaching these concepts, that those really interactive, engaging ways, particularly like those sort of, you know, almost game-like environments, are a really excellent way of connecting with these students. If we just sort of try to sit them down and say, all right, we're gonna cover some C code all this week, they will be asleep by Tuesday. So again, I just began to present it in such an interactive way and sort of that very fun sort of way. I think had a really good impact on helping the people that we were talking to really sort of get their head around these concepts in a way that they found really engaging. So that was one of the big benefits, I think, that it had. And yeah, I think in the future, it will be able to, if we can find some way, be able to refine that down a bit. That would be a fantastic concept to move on with. Yeah, we're working on rewriting the entire Pi game to make it more much, the game we made in Pi game anyway, which make it more modular just so there is more understandable bits. Because they've done some amazing things with it, like some kids have just taken it and run with it. And it's always really interesting going to look at their code afterwards because they just put things in, they sort of make sense, but they're in really odd places. Like one of the slides we had before had an example of a student's work and they'd made a second player, a blob, as a pet and it follows them around and then it also can be controlled by the WASD keys, while the first player controls the arrow keys. But the way they'd done that was they hadn't actually altered any of the other code, they'd just gone straight to main.Pi and put it all into there, which is good. I was so proud of them for figuring out how to do it. But it was interesting listening to them explain why they put it there. And it was basically that's how they got it to work, rather than any other reason. But yeah, so we've also found since we've taught Python, some students have decided that they don't like Python, which is sad, but understandable that if you don't like it, don't like it. I don't think their reasoning was great, but they'll work on that. They decided they didn't like Python so much that they would use Python to write their own programming language, which was really impressive. It was basically they just made shapes effectively. I think they just made a turtle kind of thing. And they use Python, but it's like to make their own language. It was, they entered it for a competition. I think they did pretty well, but it was extremely satisfying to see them do that, even if they did say they hated Python. Yeah, so we've seen a lot of really good things come from this. So some students actually don't really like playing with the game. They just haven't been that into it. From that, they've decided instead to make text adventures. So I think one of the slides a little while ago also showed one of those and they've just made like ridiculously long text adventures, which is really good because it really worked into the whole literacy thing. I feel like those students may have been quite literate before anyway, but it was really good to see them explore kind of other avenues and that creativity just using programming. And they always get so excited as soon as they get anything to print as well. Yeah, absolutely. The outcomes, I think world speaking, were really, really positive. So yeah, one of the big questions we were, so I guess we are sort of near the top here is like say, can we use Python as a good tool engagement in schools? It turns out, yes, it's a fantastic language to use in schools. I think the thing- It's not exactly revolutionary, we know. Yeah, no, no, this is not news to anyone, I understand. But it was to me when we did this. But yeah, it was really fortunately very easy to pick up most of the syntax in Python one or two things, particularly the white spacing was challenging for a few kids. But broadly speaking, that combined with just having a little bit less structures in the way and boilerplate and stuff in the way just made this a really, I guess for a dynamic and easy environment to work with that made this a fantastic option for schools. It's like say, I guess it's early days to talk about, I guess, more disadvantage of schools and seeing if there's gonna have much benefits there as I did here. But yeah, I would say this on the whole looks like a very positive step in that sort of direction. So, many more of these to come in the future. All goes well. Anything to add? We're still getting lots of requests from schools in Tasmania to do more of these workshops, which is really exciting, because Tasmania recently got Code Club. It's some sort of international club to get students coding. I don't actually know a lot about it, but Tasmania, the Tasmanian government made a deal and they now have 25% of Australia's Code Clubs, which is pretty impressive, because Tasmania is very small. They only have like 500,000 people or something. And they just taught their 1,000 students. So, I thought with Code Club, we wouldn't really need to do these workshops anymore, but apparently people still really like learning about Python as well, because Code Club seems to mostly do scratch. So, it's really nice seeing teachers want to take that next step. And the students as well, they seem to really like it. Yeah, all very fantastic. I think that's our talk. Thank you very much for listening. Anyone have any questions? Oh, yes, of course. Hello. Okay, so in teaching Pygame in the past, one of the things that the kids found really confusing was having to write your own event loop to handle each event that Pygame throws at you. And I'm assuming you handled that by just giving them the code for the event loop because you started off with that. I was not teaching them the event loops, yeah. No, it was good. So, when I've taught Pygame in the past, it's been kind of, okay, this is the event loop and then you sort of build up the game from scratch rather than starting with a complete game and then modifying, which is interesting. But there is a new thing out now called Pygame Zero. Someone is writing a wrapper around Pygame to greatly simplify it, make it easier to use. So I would highly recommend that. Yes, thank you very much. Sorry, I was not a person. I haven't told you about that yet. I was not aware of that, no, that's good to know. Yeah, so the way that we handled the event thing, just in case, we tried to abstract that out as much as possible. So we didn't really mention that there was a loop running around the program. We just kind of said, look, when you press the W key, this section of code executes and we just sort of went from there, I think. We enjoy, so when you kind of get to the end of the workshop and there's not as many questions coming in all the time, that you do get the chance to just sit with some kids and just explain all the different kind of files and all the different code. And yeah, so sometimes it's exciting, and it's really fun. But by that stage, when they're getting that curious, I don't really seem to pick it up easier or at least they pretend that it's not a lot easier. And it's always interesting to see them implement themselves. In a very similar vein, this is on, hello. Yes. There's a thing called Piglet, or Pi, Pi, Glit, oh, is it, I don't know. Might have been a couple of years ago, but I was using it and it's quite good. Sorry, microphone. When Piglet first came out, I was like, this is amazing. This is like Pi game, really much easier to use and cleaner and better. But it seemed to stop development. It would then became impossible to use with newer versions of Python. And I haven't seen it get picked up again, but if it is picked up again, that would be a good alternative. I haven't heard a lot about Pi, Glit, Piglet, Piglet. We've decided everybody, it's Piglet. Yeah, no, I don't think I've heard a lot about Piglet. It'd be great if it's still in development, but yeah, but from what I've seen of Pi game zero, it is really good. Maybe it is still. Just wondering if you mentioned that some of the really, or you alluded to the fact that some of the really meaty discussion that you had with people was after the kind of majority of the questions died down, you were able to start explaining stuff to people. Have you looked at maybe the order in which things are introduced, maybe, to try to kind of address some of those things, or maybe have it write down some of your explanations that you don't have so people can learn after the fact? Yeah, so one of the reasons we used Gitbook was, so because the way Django Girls hosted, they can submit pull requests and so they can change it. So when we do workshops, we update things as we go. That's not completely working at the moment, because we're moving things over to change, make some major changes at the moment. But yeah, that is something we address, like every workshop, there's always a new question. So we're developing kind of a frequently asked question and like building it into the workshop as we go along, because I mean, me and Martin, we're kind of first time teachers, like I've coached sports and things before, but that's just no idea. Same as trying to teach programming. First time primary school teacher, certainly. Yeah, that was one of the things we found with the workshop as well, having mentors, like when you teach primary school to children, it's really good to have a ton of other helpers. Because the way we run it, which I think I was supposed to say earlier, was we'd have one person at the front kind of working through at a reasonably steady pace, just going through the things, and then children could yell, scream, shout, or preferably just raise their hand nicely. That doesn't always happen. And then somebody else would go and help them, so that you kind of had a lot of things going on at any one time. And that was one of the problems with our first workshop. There was only two of us and we had 25 children. I think we actually started with 30, but thankfully some had like, some sports carnival to go through, so we didn't have them for very long. So yeah, can never recommend enough having a million volunteers? Any further questions? Awesome. Every minute after doing tea. Thank you very much. Thank you.