 Welcome. So, hola, Euro-Python. Thanks for coming to my talk this morning. My name is Karianne, and I'm going to be talking about education. And this is perhaps not the most exciting keynote that you might have come to this week, but I'm hoping to give you some kind of insight into this current movement around computer science and education. So my name is Karianne, and currently I work for the Raspberry Pi Foundation. But if someone was to come up to me and say, if you could describe yourself in one word, what would it be? That word would be educator. I see myself as an educator. I was a teacher for a long time. Whether I'm teaching in a classroom or teaching through a book or I'm educating through online resources on raspberrypi.org, that is what I do, and that's what I'm about. For anyone who doesn't know about Raspberry Pi, I've had some really odd conversations this week. I've had quite a few people, when I'm talking about Raspberry Pi, go, oh, you're a charity? Yes. Raspberry Pi Foundation, we're a charitable organization. When you buy a Raspberry Pi, 100% of the profits from that go into the charitable foundation. So we are able to meet our charitable mission, which is to advance the education of adults and children in the fields of computers, computer science, and related subjects. And this part, related subjects, is really important to us. So things like science, the arts, there's lots of subjects that we're really passionate about. I guess you could describe them as kind of digital making. We're really keen in that kind of field as well. So because I work for the Raspberry Pi Foundation, I spend a lot of time thinking about how children learn with computer science. And I'm not alone in that. Today with us is Ben Luttle from the Raspberry Pi Foundation. James Robinson is here as well today. And one of our prolific volunteers, Alex Bradbury, is here from Cambridge University too. So today, at any point, if you want to talk to us about computer science education, or in particular about Raspberry Pi, do approach one of us. They're usually wearing Raspberry Pi t-shirts. I'm not today. But they're pretty easy to spot. So this is kind of where my journey started in the classroom. I was teaching a subject called ICT. You can tell I'm teaching. Here are some children, longingly and lovingly, looking up to me. That's standard, but it doesn't always happen. This is clearly a posed photograph. And one of the only photographs I can use, right, because you can't see the children's faces. But around this time, I was teaching a subject which was called ICT. And in about 2010, 2011, Google's Eric Schmidt made a speech in the UK in which he said that computer science education in the UK was really, really bad. And actually what we were doing was not teaching children how to be creative with technology, but rather consumers. And our press in the UK is not a huge fan of teachers. So they kind of mistook his words. And then there was a kind of a big push in the media about how all ICT teachers are terrible, how we had no skills, we certainly couldn't program. And so we were doing a terrible job educating the future, which was really depressing for me at the time. But I continued on. And I started to think about ways in which I could take hold of this new wave of thinking around education into my own class. So I heard about this thing called Raspberry Pi that was coming out. And that was around February 2012. And like millions of other people, I tried to get one on the day they were launched from the website, which crashed quite a few times. And eventually in about May, my Raspberry Pi arrived. And I plugged it into my TV. And I got it started. And then I kind of thought, well, it's a computer. It's a Linux computer. I've used one before. This is nothing new. Like, what am I supposed to do this? How is this going to revolutionize my teaching? I've been told this is for children. How can I do something with it? So I found out that there was some kind of user groups getting together. And they were called Raspberry Jams. So these events where lots of people would get together and talk about what it is they do with their Raspberry Pi's. So I thought, well, I'll go along to that and see if there are any projects I can take back to my classroom. So I went to one in London. And this was in about June 2012. And it was at Mozilla Space in London. I don't know if you've ever been there, but it's quite a cool space. And there were about 50 men. And there were three women, of which I was one of them. And the three women were all teachers. And so after a while of watching quite a few talks about how people would use their Raspberry Pi's to do things like turn it into a games platform like a Super Nintendo. Someone else had put it in a big track, like an 80s big track rover. So after a few of these presentations, and anyone who's been to Mozilla will know, they give you free drinks. So I started to get quite confident. Someone said, why don't you get up and tell people why you're here, and maybe the community can help you. So I got up with the other female teachers who were there. And I said, look, I'm a teacher. I'm really excited about bringing Raspberry Pi into my classroom, but I don't really know what to do. And I've been watching your projects, and I don't mean to be harsh, but they're quite geeky and retro. And I'm not really sure my students would understand that. And then I said something really stupid, which was, and also I don't think they're going to inspire any girls. At which point, someone heckled me and said, well, why don't you get the Raspberry Pi to go shopping for you, or organize sleepovers, or something like that. Which for me was a really kind of awful moment. Anyone who knows me will know I'm quite an introverted person anyway. Even standing up here and giving this presentation is a little bit scary and not typical for me. And so I kind of walked off a stage at that point with my head down. And then something really amazing happened. And about 10 people who were in the audience came up to me and said, please ignore that person who's just said that. We don't agree with anything he's just said to you. How can we help you? And that was really the start of my journey with Raspberry Pi, because off the back of that terrible experience, I was invited to PyCon UK. And that was because that terrible experience was streamed online for the world to see. So not only did I have to walk off stage like this, in a group of 50 people, but also it kind of went a little bit viral because everyone's like, oh hey, look at this man heckling this woman at a Raspberry Jam. So something good and positive came out of that. I was invited to the Python conference in the UK and they were having a teacher's track for the first day. Great. So I went along as a delegate, not really sure what to expect. And by the end of day two, I was running the education summit. Kind of just took over, sorry guys. And I gave a lightning talk about what it was I wanted and really it kind of snowballed. At the time someone was there, one of the keynotes was from University of Cambridge, which is where Raspberry Pi is kind of born out of. One of the trustees heard about me and so they sent me someone from Cambridge and we started a program called Sonic Pi, which I'll talk about later on. And now I'm on the board of directors for the Python Software Foundation. Like whoa, how did that happen? Right, I went from teaching in a classroom and now I'm on the board of the PSF. If I can do it, anyone can do it. So to give you some background about where we are in England, we have this new computer science curriculum. It's called computing, it's a computing curriculum. And this is just to kind of give you the basis of what it's about. As you can see up here from the age of five, children need to learn how to code and program. So they need to understand algorithms, sequencing, selection, and repetition, okay? From the age of 11, they need to use at least two programming languages and one of those needs to be text-based. And this curriculum, it's in existence now, it started September 2014. So we've had one full year of it. And I think it's really exciting. But it only applies to England. And this is really important that I say this now because I'll forget later on because I'll always refer to it as the UK curriculum. It's not. This only applies to England. It doesn't apply to Scotland, Wales, Northern Ireland. It just applies to us, which is sometimes a bit awkward. And government data that's been collected said that 55% of secondary school teachers lack a qualification that enables them to be able to teach this. And a recent survey by a TES, which is the Times Education Supplement, found that 60% of England's teachers were not confident delivering the new computing curriculum. So that's kind of where we are. And the government in their wisdom brought in this new curriculum and then they only invested 3.5 million pounds in upskilling of teachers. And that works out just to kind of break that down. That's about 175 pounds per school. And what that means is that a teacher cannot be released from their teaching duties even for a day, that's per school. So it's not really helpful that they've brought in this new curriculum without any support for upskilling of teachers. This is a problem. So where else in the world are people, where else are there curriculums? We're not alone in Europe, we're at EuroPython, so we should talk about Europe. Estonia have also moved towards computing curriculum. And Ben Nuttall, the Raspberry Pi Foundation, he's working with teachers in Estonia and we've had some on our teacher training course at Raspberry Pi. To try and help them with upskilling as well because we found out that they're in a very similar situation that they have this new curriculum and not 100% sure what to do with it. Australia very recently have now got a new curriculum, a new computer science curriculum. If you check out Pycon Australia last year, Dr. James Curran gave a really fantastic talk about that process in Australia and New Zealand as well. And Israel have had computer science as part of their curriculum for quite some time now. So this is it. We're like the pioneers of this around the world. And there is this real movement at the moment to bring digital making and computer science into schools. We've recently been to the States and had quite a lot of conversations with teachers about this. We're really super excited. Keep talking about coding. And I use this all the time when I say coding. This is coding curriculum. We need to teach code. It's kind of becoming a bit of a fad term. I'm really keen that that doesn't happen. Last year I went to visit Denmark and I gave a talk there. And it seems like the Scandinavian countries are very close to perhaps adding this to their curriculum too. So I think we're gonna see a kind of snowball effect. And you might be thinking, well, actually, why should we bother teaching computing at all? Like why do we need to teach computer science to children? You know, why can't they just learn how I learned with some books and some online tutorials? Well, the first reason is that children just are creative and imaginative. And they're not afraid of failure. And something that's really terrible that we do as educators is we train them out of this. Now, when students used to come to me, because I was a kind of secondary high school teacher, so I would get them around the age of 11. And by that point, they had been trained out of kind of clicking buttons and kind of just having a going and seeing what happens. It's really disappointing. Because children just are, they will press all the buttons. They will have a go at things. And that's what, they will tinker with things. And that's what's really exciting. And that's how we learn. Another reason is to do with social mobility. I think we have a real problem with developers. I think that people who access computer science education and who have jobs in computer science, generally have come from a fairly affluent background. I think computer science has the potential to move people socially, to move them from really low paid jobs into really good paid jobs. Another reason is I think computer science is empowering, right? Just being able to write a program and make it do something, even if it's like print hello world is super empowering. The first time I wrote a computer program, I was like, wow, I've made something happen with this computer. And it made me feel good about myself and it continues to do that. And I feel more confident as a person to be able to do that. This one, obviously I'm hugely passionate about, which is about diversity in technology. We've had tons of investigations into this area and lots of reports suggest that in the UK, 16% of IT specialists are women and that's in the UK. It's not much better in the United States, it's something around 20%. It's usually around that percentage. And what that means is the people who are creating technology do not represent the people who are using technology. That's not right. And again, that's to do with social mobility as well. Are we representing the people from everywhere, from every type of background, if they're not the people creating the technology? And the last one, and I think is the most important, is this idea of where we're heading towards just globally. CGP Gray, he makes these really cool videos on YouTube and he made one called Humans Need Not Apply, in which he talks about how in the future, we're not that far away, most things will become automated. We think about when you go to a supermarket now, generally you might want to use those automated machines where you kind of self-check out. There are baristas where you just make your own cups of coffee just by pressing some buttons. And of course, self-driving cars could actually put a whole bunch of people out of a job. Just think about if self-driving cars tomorrow exist, laws are passed and actually they're used every day. Bus drivers, delivery drivers, lorry drivers, all these people are gonna be out of a job. And I think he quotes something like, it's just a small shift economically, that if there's like 40% unemployment, that actually it could be devastating for the world's economy. And he's quite negative about this. And I think more positively, I think if we train children today for a workforce that will be around fixing those machines or programming those machines or making those machines better, then we're winning. Cause this is where the jobs are gonna be in this sector. But having said all of this, I feel like this argument is kind of over now. I've been making this argument for quite a few years. I feel like actually I don't need to make this argument anymore. When the focus is moving away from why we should be teaching it to how we should be teaching it. And that's why I'm here today. And so in the UK, before we had the curriculum, we knew it was coming. A lot of teachers were talking about what programming language should we use to be able to teach this. So scratch is an easy win. Everyone's gonna use scratch in the younger years. But as you saw, 11 year olds need to be able to use two programming languages. One needs to be text. So what programming are gonna use? So a lot of people went, well, okay, let's have a look at Python. Python seems like a good option. So why Python? Well, the first reason is that it's used all over the world, right? It's used in real world scenarios. It's powerful enough for real development. You're all here, you're all developers. Python conference. I assume you use Python in your jobs, right? So not only is it a good tool for training children, but you can also say, hey, this is used all the time, all over the world. It's used by NASA, it's used by CERN. So this is a good programming language. It has a really simple syntax. And so we use this example all the time. If I wanted to do hello world in C, or I wanted to do hello world in JavaScript, I'm gonna have to write quite a few lines of code, like roughly six, and it's gonna have curly braces and parentheses and so on, and that's gonna get confusing. When I was at school, in the 80s, we had a BBC Micro, and I have really vivid memories of writing print statements in basic. And that's what's really nice about Python, is you can write print hello world in one line. So it's a great syntax that we're already winning. And it has, and this is the most important one, I think for educators and for me, is it has this really strong, powerful, helpful community. Community is just so important. I've never felt so welcomed by a community. And the Raspberry Pi Foundation has a really great community, but I would say the Python community probably just about tops it. If I go back to my experience at PyCon UK, the reason why I kind of took over that teacher's track was because I was made to feel welcome. And when I was there, I met some developers, and after the conference, that didn't end, that kind of collaboration and friendship didn't end. I would continue to try and improve my Python skills and write code, and sometimes it wouldn't work, and I couldn't figure out why. And I was able just to stick it in Payspin, send it to one of these guys I'd met, and they would mark it for me. Great, developers are marking my work as a teacher. And that was really helpful for me to improve and get better. And I think not just in terms of national communities or international communities, also local communities. So I've been invited several times to the London Python dojo, and one time I went along and I stood up and said, why don't we just have a look at the curriculum? Would any of you guys kind of help me try and fix some of these things with Python? Maybe we can come up with some examples and I can share them with other teachers. And I was amazed that they all got really excited about it, they all formed groups, they wrote amazing programs, and then they shared them back with me. And they were so excited about it, they went on to run a whole education special edition of that dojo. So community is what really makes Python special, and I think we should really celebrate that. So I guess we're at a point now where we have lots of education summits as part of conferences. So PyCon UK has been having this teacher track for quite a few years now. When I first went, there was roughly around about eight to 10 teachers there, and my colleague James Robinson's gonna give a talk today about his experience as being a teacher going to PyCon UK, that's at 11.45. So kind of come to this, have your break, go to that. And I think it's really important that we try and welcome teachers into conferences like this. We've seen the Python, PyCon UK education track go from that kind of beginning stages of eight to 10 teachers to this year, they have tickets for 40 teachers and they're already sold out, almost already sold out. And that's coming in September. So if you build it, they will start to come along, right? So if you organize conferences, I really recommend that you have an education summit. PyCon this year in Montreal had a kind of education track which was some talks. Here in Bill Bell, we're very excited to be helping run the education summit. And straight after this, I'm off to Australia to help with the education track at PyCon Australia, okay? So I think really what I wanna say is if you try and help teachers by just starting these things, it may be today we don't actually meet any teachers here at the education summit, that would be sad. But if teachers see what we're doing, they're more likely to come next year and the year after and so on. So what I wanna talk about is, okay, so Python seems to be like a great language to use to teach, but currently there are some real strong barriers. And I think we as a community can fix those barriers. So I'm gonna kind of explain them to you and perhaps show you some solutions and perhaps we can come up with some ideas. So the first one is transitioning from a visual programming language to a text-based programming language. So what I was doing in my classroom was we were teaching with Scratch with the young years and then we would move on to Python. And actually a lot of the children struggled. They really, really found it hard to move from Scratch to Python for a whole bunch of reasons. And this is something we're continually trying to overcome at Cambridge University at the moment. They have some Raspberry Pi interns and they're working on a project called PiLand. I really recommend you go and have a look at it. And that's like a kind of game that you play on Raspberry Pi but you have to use Python to be able to solve a lot of the problems. The next one is everyone's favorite conversation which is Python 2 versus Python 3. Quite a lot of confused teachers out there that they'll go, oh, my code's not working, my program's not working, what's wrong with it? And I look at it and I go, oh, it's Python 3 and you're trying to run it in Python 2. It's not gonna work. And this is a real problem. But really, it shouldn't be a problem, right? In education, there's no reason why we shouldn't just be teaching Python 3. Really, everybody uses 3 in education and at the Raspberry Pi Foundation it's a decision we took early on to ensure that all our resources were written in Python 3. And I would really encourage you, if you are working with children or in schools or helping teachers, Python 3, Python 3 is the answer. Most major libraries are Python 3 compatible now. There's a few that are not, which I'll come back to later. But Python 3 is the answer. I'm just gonna keep repeating that. Python 3, Python 3, please do Python 3. So the next one is a bit complicated to explain and this is probably where you're all gonna start booing me, so please bear with me. So I feel like there's this kind of function naming problem that we have at the moment in Python and this is where sometimes people who write libraries probably aren't aware. Quite often I find that people write libraries for themselves to fix a problem that they've found but what might happen that will be surprising is they may be picked up by schools or by children and they start using them and they become really important. One of the examples for this is the RPI GPIO library. So a guy in the UK called Ben Crosston, he runs a brewery and he decides to use a Raspberry Pi to be able to regulate the temperature of his brewery. And so he wrote a Python library to be able to help him do it. It's called rpi.gpio but the surprising thing is, is now it's used in all schools who've got Raspberry Pi as with children because it's the Python library to be able to control the GPIO pins on Raspberry Pi and do some physical computing which is one of the most exciting things in schools at the moment. And it can be problematic, not specifically that library but I find a lot of libraries that are picked up by educators that are written by people who are just using them for themselves. Sometimes there are some inconsistencies, inconsistencies in the naming of functions and that can be a bit of a problem. One of the most common problems we find with beginner learners, especially with Raspberry Pi, is that quite often they'll create their program and they'll save that file as the same name as the library that they're using. So for example, we have a library called Pi Camera which allows you to use the Raspberry Pi camera with Python and that library is called Pi Camera and so everyone of course, when they do their first-ever Pi Camera program, save it as picamera.py and then they wonder why it doesn't work and this is a really common problem we find whether it's with an add-on board like Piperella, same thing with the Piperella library. It may seem fairly obvious to you and you may think, oh, God, what idiots, right? But you've got to understand, quite often these are children or educators or beginner learners who are just completely new to this, right? I did the exact same thing at the PiCon conference in England, I was running a workshop in front of a whole bunch of teachers and a whole bunch of developers and I accidentally named my file as I was using the Piperella library, I named it Piperella.py and then myself and five developers stood there looking at me, why isn't it working? Why, why is it? Five developers, not one of them figured it out until a little bit later because it's not an obvious problem, right? And then there's a lot of inconsistencies with whether you've used camel case or snake case, right? If you're gonna use those, pick one and stick with it because it can get a bit confusing whether you need to use capital letters or underscores and be really aware of that. I mean, I guess we should be using snake case, right? But think about children who are using this. We're talking about eight, nine-year-olds, right? Who want to move away from scratch and they want to be learning Python but they struggle with just motor skills sometimes and keyboard skills. So you got to think about if you're gonna use underscores, stick with underscores. If you're gonna use capital letters, stick with capital letters because they need to kind of get used to using the keyboard in that way. And try and make the kind of the functions almost guessable names. So if I'm writing something in Python, I can almost guess if I'm trying to figure something out, well, actually, I wanna set up, set this block, perhaps in Minecraft, that I might want to build a bigger kind of set of blocks. Oh, that'll be set blocks, right? That's obvious, I can guess it. And quite often we find libraries, like it's not guessable at all and it's inconsistent. So please try and make them consistent as possible. Yeah, so think more time about naming because children might use it. So I'm just gonna use this example from Minecraft Pi. So anyone who doesn't know about Minecraft Pi, it's an API that you can use to be able to program things to happen in Minecraft, yay. So obviously educators love this because it's a real hook for children because they love Minecraft and they can see something instant happening. It kind of blows their mind that instead of spending hours and hours and hours like building a house, like mining what they need to build a house, that you can just do it with a few lines of code. And so here's, this is the example that we have a really basic program you would think to get children starting. First of all, they've got to connect to the Minecraft world. Then they need to use some variables to set some coordinates. And then they need to use this line, mc.player.setposition, as you can see, there's a capital P, and that's kind of their program. And I find that they fall down on the very first line, right, just the capital in Minecraft, like they forget to do it. And children are very impatient. They're used to things happening straight away with tablet devices and so on. Everything's really instant. And sometimes we can lose children very quickly, just with things like this. And so I'm just gonna show you, so that's the same example. A friend of mine called Sam Aaron, who I'm gonna talk about a little bit more later, he's been able to get this work with his system SonicPyre, and he spends a lot of time thinking about, because he works, he quite often does a lot of outreach, about how he could improve this with his own system. So please excuse that this is Ruby, but what I want you to look at is the names that he's used here. So you can see the difference here already, right? So mc.teleport is just a much nicer kind of sounding word than setPos, right? SetPos, that could mean anything, it means setPosition, but we're old enough and wise enough to understand that. But children, teleport, it's like, oh, it's gonna move my player. So I need to set the X, Y and Z coordinates, got it. It's a really nice example. The other one is to do with block types. So with the Python API, you have to use variables, there's this really long bit here, block.glass.id. Sometimes you have to use the block numbers, 108, if you're wondering, it's melon, yep. TNT is 46. You can test me on those later. And then you need to say mc.setBlock, give the coordinates of where you wanna set it, and then of course call your variable. I want glass to be there. That's again, quite long-winded. There's a lot of capital letters in there as well that children need to deal with. And so how we thought about that with Sonic Pi is mc.setBlock, all the block names are included, right? So you just have to say glass and then set the coordinates. Again, apologies that this is Ruby, but you kinda get the idea of what I'm trying to say. So basically my point is if you are creating libraries, be aware that they may be picked up by children, please be consistent in how you name your functions. This is an example that I'm really excited to share with you all. So that's one of the PyCon UK education tracks. I believe it was one last year. There was a lot of discussion between developers and educators, and that's one of the most exciting things about having teachers at conferences like this. So Daniel Pope, who some of you may know, is very good with PyGame. Any of you might know PyGame in the library. It's a really great library again to use with children because it's really visual and you can do a whole bunch of stuff. But PyGame I found really difficult to use in the classroom. And I think Daniel got talking to some other teachers who said the same thing. And he wrote a very short program for him, which was very short. And the teacher said, I can't teach that in the kind of hour lesson that I have. It's just not gonna work. And he said, you're gonna have to explain event handlers to children. Like, that's not gonna happen. I just want them to be able to start thinking about the logic to be able to build a game. And so he went away and he came up with PyGame Zero. I believe he gave a lightning talk about this on Monday. If you catch him around and you haven't seen this, you really need to go and have a look at this. So the idea here is that it just makes PyGame much easier to use. As a teacher, I'd be able to break things into bite-sized lessons. All I need to do is change a couple of lines to be able to make meaningful progress. And that's really exciting. And it does make some of the decisions for you. And we shouldn't be afraid to do that with children to abstract away a little bit just to get them excited. Sam Aaron always uses this example when he's talking that with children, sometimes you say to him, okay, so let's do some coding. What do you wanna do? I say, well, I really wanna build a game. Okay, let's make a game. Great, this is PyGame Library. I can do that, fantastic. What do you want your game to be? Well, I really want it to be set on an alien planet and I want there to be kind of these crazy monster aliens and I have a big gun, I'll shoot those aliens and I wanna run around and there'll probably be a dungeon somewhere. And because kids are imaginative and creative and they're gonna go on about that for quite some time. And you're like, okay, so in PyGame, I can make you a kind of black screen. We'll say that's like space. I can probably make a circle. We'll call that the planet, that'll be gray, right? I've already lost them because in their minds when they think about computer gaming, they're thinking about Xbox, they're thinking about PlayStation. They're not thinking about 2D graphics. They're just not. So if they're going to do something with PyGame that is 2D, it needs to be something more like scratch where they're able to make quite a lot of progress very quickly using their imagination. And with PyGame Zero, I think they're gonna be able to do that. So please do go and have a look at that and speak to Daniel about it. So another barrier is around installing extra libraries. I see a lot of learners fall down really early on when they don't have the libraries that they need. And it's a real added hassle. If I'm gonna be teaching a class for the kids, it's very easy to install a library, right? On one computer, you've got 30 computers, 50 computers. It's not so easy. Raspberry Pi is even harder. And so this is something we need to think about. And quite a lot of teachers and a lot of schools, sometimes their devices aren't online because they have to protect the children within the school. And more often than not, they're behind a kind of firewall that stops them to be able to get these things in a proxy that stops them from being able to install libraries. And so I got talking to Daniel on Monday night. So this is an addition to my talk where he started to talk about this idea of having an education bundle that you would be able to download. So kind of on top of the standard library. And this could include, you know, commonly used dependencies. And this could include Pi Game Zero. So things like NumPi, the Python Imaging Library, those kinds of things could be in this education bundle. And I wouldn't really mind how that was delivered. If that was built on PIP, that'd be fine. All I'm trying to get across here is that we should be thinking about this for educators. And so the last barrier, and this is the one I wanna spend some time talking about, is Python IDE. Finding programming interfaces for children is really difficult. Just out of interest, how many of you use IDLE for your IDE of choice? Two people? Three, maybe? This is, IDLE is what children have first access to, right, because it comes included when you download Python, right? I was very disappointed to hear Guido's talk on Tuesday when he was asked the question, what is your favorite text editor? His answer was an IDLE, right? But this is what children have. And so there are some really good examples of online text editors. Some really great examples out there, and I've listed some of them. A lot of you will be aware of Python anywhere. I think they're doing wonderful stuff with online IDs. Comes bundled with just so many libraries, which is great. But there are problems around this idea of online IDs. And I think one of the first ones is to do with the age of children using them. So one of the reasons why I couldn't use the new version of Scratch in my school was because you had to sign up for an online account. And there are issues around privacy. And in England, children under 13, you just can't do that with children under 13, right? So if I want eight, nine, 10-year-olds, 11-year-olds using this kind of online text editor, I can't because they're not allowed to sign up for it. So that's a problem. In my school, I had this huge problem where the infrastructure, the online infrastructure, the internet, super slow, right? It wasn't built and designed for the amount of use it was getting. I couldn't use Google Docs with my children. Scratch would crash halfway through, so we couldn't reuse that. And that was a problem. If I wanted to use any of these, I just wouldn't be able to reliably use them because my internet was so slow. And again, behind a firewall, proxy settings probably wouldn't allow me to access some of these. They're most likely to be blocked because they'd be seen as an adult website or that, hey, you're gonna be breaking things so we don't want children breaking things, so we're gonna filter that. And not just at school level, but higher up at kind of borough, district level, it would be blocked and it would just be a nightmare to unblock them. And I think there's also a compatibility issue with libraries again. So these are great, and I think we're on the right track with a lot of these. Grot learning in particular is fantastic, really designed for education for children. Recommend you have a look at that one. But they're not perfect and they're not really the solution for everybody. And if we really want to move children socially and we want to include everybody in computer science, we need to think about children who do not have access to the internet. There are children in this world who do not have access to the internet. Even in England, we have children who don't have access to the internet outside of school. So we need to think about how we can include them. So an obvious example of a kind of offline educational Python ID would be PyCharm. They have an education edition. It's free and open, fantastic. That's exactly what we want. And they say on their website, PyCharm educational edition is not merely a learning system, it's a real development tool. We're getting back to this. It's a real development tool. Actually, I need to spend some time learning how to use PyCharm, because it's not really obvious. Even the education edition is not really obvious for me to get into. And so I think that's a problem. I think this is great for, oh my God, I've only got 10 minutes, quite. So this is probably not great for, this is probably really good for children who are kind of 16 plus. I think this is great. If I was teaching GCSEIA level, which is kind of between 16 and 20, I'd be using this, right, because it would be great. But for my 8, 9, 10, 11 year olds, which is the kind of key demographic you want to be hitting here, this is not going to work. And there's too many opportunities for failure with it. There's too many buttons. There's just too many things I'd have to set up first. I just want to get them on something simple and get them programming. And also, open source equals awesome source, so it's great that it's open. So we need more things like this that are open, but simpler. So, going back to my idle problem, so this is what learners have, right? Most people who are new to Python, this is the first thing they come across, which is idle. And it has some really good, positive things about it. First of all, it's free. It has syntax highlighting. It does do some auto indentation, which is good because indentation is important in Python. It's cross-platform. We're able to include it in Raspbian because it's so small and lightweight. And it's simple, and that's really important here. It's very simple to get started with. However, tons of problems that we find with it all the time when we're using it with learners. Anyone who's used it with teaching children will know there are so many problems. First one, it being in two separate windows, that needs to change, right? Because that is just a nightmare game with their motor skills and so on. If they've got Minecraft running as well, it's three windows they've got to navigate between. It's not really working too great. The error reporting is atrocious, right? It's really bad. It doesn't really tell you what the problems are in a way that children can understand. So what are the solutions? Well, something I want to show you and I keep talking about is Sonic Pi. So this guy from the University of Cambridge came into my school with a Raspberry Pi, put it in front of me and said, I've got it to make music. Do you think we can teach computer science with this? And I said, yes, let's have a go. It sounds nuts enough that it will probably work. So on a whiteboard, I drew this really simple interface where we had a coding panel and we had a panel that was an output. It was showing you what was happening and then there was an error panel. And since then, that was back at the end of 2012. It's now evolved into this, which you can see here that includes online tutorials, sorry, inbuilt tutorials. And it's now both a tool for education. So it's a tool developed for education, but it also is used by live coders to make music in a professional context, which is very exciting. So I'm gonna do the thing that I was told not to do, which is a kind of live demo. So just to prove that this is a tool for musicians, this is the kind of music that you can code with it. Apologies, this again is in Ruby. When I told people I was gonna show Sonic Quiet, a Python conference, they went, really? Sorry, but yes, but what I wanna show you is the interface, right? Just imagine for a minute, this is Python. Some really good stuff up here. There's a button right here in front of me, it says run. To run your code in idle, you have to click on run, run module, oh, right? Then you have to teach children control where five. There's a button that makes it much easier. You can stop it as well. This is really handy, like a keyboard interrupt. This is super helpful. I'm gonna blow your mind. Can you people at the back see that code? Can you see all of it? The answer is no. Oh my gosh, oh, I can make it smaller and I can make it bigger. That sounds really like why are you so excited about that? When you're teaching in a classroom, to be able to do that really quickly, especially when you have 30 children who are all working on their code and they're stuck, to be able to just press a button and make the text smaller and make it bigger. Great, we need that in idle. Numbers, down the slide, line numbers, really simple, really easy. Having windows together, this is obviously using QT, these things exist that we're able to put windows together. Let's put the interpreter window with the code, with the text window. It does have an inbuilt tutorial, which I can get rid of. And other things that are quite exciting, let me see. So I've written some code here. Obviously this Ruby doesn't need to be indented to work. We know that's what makes it a great, kind of fun starting point for children. However, again, another really cool button is this one here that says align and it automatically aligns the code, right? And you might be thinking, well, I think children should learn how to indent their code so it works with Python, that's actually really important. Yes, it is, but I think actually we can do this, we can have a function where you're able to turn this on and off, but I think it's a really good starting place. Idle does auto indent, but really badly. And children will not write linear, and quite often you'll give children parts of code and you want them to change it up and their code just gets all over the place. Auto indentation is not sophisticated enough to deal with it. This has these really cool pink lines as well, so I can see where it's indented, the way we have nested kind of loops and so on. I think that would be really helpful. So that's an example of a really good interface, but obviously that's been designed for education. So we spend a lot of time in schools. So we see where they fall down. Sam spends an awful lot of time testing his software, all demographics, and so that's why he's able to make these changes. But why can't we have a version for Python that's like that, right? I think it's possible. So you're off thinking now, how can you help educators, right? You're really pumped up by everything I've just said and you want to help fix all my problems, thanks. So I've got a whole bunch of ways in which you can do that. The first one is to meet educators, right? If you run conferences and you have education tracks, eventually teachers will come to them, go and meet them, go and talk to them, listen to their problems. So add education tracks to all of your conferences. Run special education sessions at your local user groups, right? And again, teachers will come and you'll be able to talk to them and help them. Mentor a teacher. If you do meet a teacher, help them in their journey. That's what happened to me. I was helped by developers in the UK. There's no reason why this can't happen globally. And then create and contribute some really awesome libraries, which is kind of what you do already. Please make them consistent. So this is what I'm really excited to talk about. So thank you very much. Those of you who voted for me, I'm now on the board of directors for the PSF. And so something that I want to do, I want to launch today, is this idea of a Python education work group. So I've set up a mailing list for this. And this in no way replaces education special interest group mailing list. That's really a mailing list for people who want to talk about education and pedagogy and so on. The idea of the working group is that we're actually going to make some of these things happen. We're going to make a new Python text editor. We're going to make Idle better, okay? So we want to make, it's for people who want to make practical contributions to that. We're not just going to sit around talking about it. Obviously we will talk about it, but we're actually going to make things happen. And that's really important. And I need your help to be able to do that because I can't do these things. So I need you. And so we're going to have specific goals we hope to achieve. So before I can get this group recognized by the board, I'm really hoping some of you will join it. We can determine the governance and so on and kind of talk about what it is we want to do. And then I can take it to the board who already know I'm doing this so we can get it officially recognized. So I've got homework for you all. Once a teacher, always a teacher. Number one, join the mailing list, right? That's the first one. You're all taking pictures of that, which was really good. So I'm hoping you're going to join. Number two, so at the Education Track at PyCon in Montreal, a guy called Al Swagger gave a talk called Idol Reimagined. Unfortunately, I wasn't at that conference and they didn't kind of video those talks on the education track, which was a real shame because it meant I couldn't watch this talk, but I've heard about it and I've been onto his GitHub where he has a wiki about it. I don't believe in duplicating work. I think this should be our starting point if we want to change Idol. So your second point is to go and have a look at that wiki and get involved. And then thirdly, I think everyone should read this book. It's called Python in Education by Nicholas Tolleve, who is here. It's a really small book. I believe it's free. It's no Riley book anyway, so you all got a voucher so you should just go and get this even if it's not free and you should read it because it really does help explain about Python in Education. And so this is all due for next year, so make sure you write this in your diaries and your planners. I will be checking. So lastly, I just want to talk about the future then. There is a real danger at the moment. Coding becomes an education fad, right? Code.org, Hour of Code, all those things are great, but I've met a lot of teachers like, oh, I've done coding. We did Hour of Code last year. It's like, well, you're not teaching programming, you're not teaching computational thinking. You've done an Hour of Code. Like, you know, ensure this doesn't become a fad thing. There's a real danger that visual programming will just be the tool, right, that Scratch will continue to be used all the way up to 16-year-olds. We need to make sure that doesn't happen and we introduced text-based programming earlier. And really, it should be Python. I think it's a real danger at the moment if we don't fix some of these barriers, that actually JavaScript is gonna win. I had a really awkward conversation in the States with a guy who's developed a tool for teaching programming to children using JavaScript. I said, and he also has a Blockly interface. I was like, oh, why don't you have a Python interface as well? And he was just like, well, no, because nobody uses Python and children just wanna make apps. No, they don't just want to make apps because they wanna put them online and share them with their parents. I don't think that's true, actually. I think that they could do some meaningful work with Python. And let's just think about, consider if we are successful with what we're trying to do at the moment, which is to educate children and to get them thinking computationally, we'll be able to solve problems. We could really change society for the better. I truly, truly believe that. Think about all the children. Reading, writing, arithmetic, those are the three hours, could be the four hours if we, Raspberry Pi, that's a bit of a Raspberry Pi plug. But really, computer science should be as important as reading or writing. So given all that, in 20 years' time, when the Raspberry Pi generation are older, we've taught in Python, we've taught them how to think in this way, they're gonna go into all sorts of jobs. They're not all gonna be developers. They're gonna go into medicine. They're gonna go into government. They're gonna go into the military. They're gonna go into, you know, research. They're gonna go into so many different fields. And if they are able to solve problems, I think it could be a really interesting place we live in. If we teach them about open source as well, maybe, oh, my mind is just blown. Those children could make this planet an amazing place. And so, I think we should be excited by the future. And just very one last thing, just out of the blue, I had an email from one of my ex-students yesterday. He was telling me kind of where he was after his A-levels. And it's a really bad time for kids at the moment who have just left school, who haven't had the benefit of this computing education, who have like ICT kind of qualifications. He's really struggling to find a job at the moment, like really struggling. He really wants to work in the sector, but he can't find a job because A, he has no experience. He's not been to university, and he doesn't, you know, he wasn't taught computer science at school. So he's trying to do some kind of online tutorials, teach himself, but really he needs a foot in the door. So if anyone is in London, right, and this kid is really bright, really smart, he's just brilliant, he'd pick things up really quickly. If anyone can help him get a foot in the door, even in a free internship, I'd be really grateful. So please come and speak to me about that. But really think about how we can help young people. It's not a great time right now. We're hoping to fix that with this, you know, these curriculum changes and this wave of computer science. But right now there's this kind of middle group who can't get apprenticeships, who can't get jobs. He told me he went for a job interview as a delivery driver and he didn't even get that. So yeah. So this is me. Please connect with me. I'd like to thank the organizers of this fabulous conference for having me. I'm having the most amazing time in this beautiful venue, this beautiful city in this beautiful country. Thank you so much. Thank you, Karriane. If there is any question. Stun silence. Hello, great. So thanks for doing this. We've also been teaching kids with Minecraft Pi. And it was pretty cool, but the problem was we had to download the tutorial, edit the HTML source code to translate it. So if you can do anything about these tutorials, please make them translatable. You don't need to do it yourself, but please provide these options. Yeah, we're working on that one. Just so you know, we are working on them. But thank you. Any other question? Hi, I noticed you mentioned something that I've heard a lot of times from educators, which is that laws or education boards or parent groups make lots of things with computers really hard by, for example, the rule that you can't have an account under 13, or incredibly strict firewalls that are usually also broken in school systems. I once heard a story about a school where all the computers were locked in a safe because they were so afraid that they were stolen or maybe used after hours. Yeah. What can we do about this? So the kind of only way is to get educators change their mindset, right? So having conferences like this where my educators along will start opening their eyes because it takes a teacher who is willing to break the rules to change that, right? If I had gone to my headmaster, if I had gone to my senior management team and said, well, this guy from Cambridge is coming and we're gonna make music, is that cool? They probably would have said no, right? But so I always have this kind of argument that it's always better to ask for forgiveness than to ask for permission. And actually what we need are those superstar teachers. We need to find them. We need to help them break the rules. And at the moment, I feel like that's the only way we're gonna change that. I think governments need to invest more in, you know, not just the equipment that's in schools, but the infrastructure. I think the infrastructure is more important, right? If we wanna use these online IDEs, we need to change that. And I'm not sure what the answer is to that because governments at the moment just strapped for cash. They can't improve their system. So that's a problem. But I think the only way is finding those educators. Sorry about my joke about the ID, by the way. Hi, thanks for your talk. It was wonderful. So you said there was, so you named a number of problems that you have with idle specifically. And that you're looking for alternatives. Kind of the canonical answer to making a Python interactive and accessible these days is Juniper Notebook. So what's your experience of that? And do you see any ways to make that more accessible for children specifically? So I mean, we could be talking about Atom right now, right? There's a whole bunch of things that are already out there. It's like, well, how can we just take something that exists and make it slightly better? But I think actually we need something that is completely simple, that is designed specifically for education, right? I don't think we should be taking systems and things that exist out there already, which are used for other purposes and just trying to rehash them. I think we need something, it's main purpose is delivering Python in education. So there's a whole, like I said, there's a whole bunch of tools we could use, but that's not really their sole purpose. And I think if you start from that point, that actually you wanna help an eight year old get started with Python, that there is a simple tool that they're able to use. Any other questions? I'm sorry, we only have one mic, so it's gonna take a little while to reach all of you. We're keeping you fit. I'm not going to run too. With respect to IDEs for Python in education, we all know that to grasp a full-fledged IDE is a difficult task for beginners. Then what has the educational edition of PyCharm that you may, that you said that is applicable to use in education instead or in place of idle, for example, that it is the most simple IDE that we have for Python? Yeah, I mean, it's simple to you. When I've installed it and tried to get started with it, it wasn't simple for me. I found it, there was a whole bunch of windows I had to get through. You have to create a project and open the project. That's a whole bunch of steps. Actually, if I was doing a class full of children, okay, this is the first step. You need to click here and do this. This is the next step you need to do. That's a whole bunch of time wasted when actually what I'm trying to teach to the children is computational thinking. The language is kind of second to that. I'm not specifically teaching them Python. We're using Python because it's such a great language, but the goal is not to teach them Python. It's to teach them to think computationally. So I'm losing a whole bunch of time in my lesson. I've only got 50 minutes in my lesson to setting it up and getting them started with. I also have to download it and install it, which in a school system is not as simple. I have to get the network administrator on side. They have to create a package and they have to apply that to everything. Obviously, I come from Raspberry Pi. I would like something that was lightweight enough to run a Raspberry Pi. And we've had a go with Python Education Edition, but it's not run perfectly. So I think there's just too many opportunities for failure with that for very young children who will click on everything and press everything. And as a teacher, I need to find time to learn how to use that application when I'm already trying to learn new skills to teach this curriculum. So that's where the problem is. So last question. Hi. Thanks for the talk. It's terrific. It's just amazing things. Thank you. I have a question about that curriculum. We mentioned it works in England, Australia, Australia, and New Zealand, Israel. What about other countries? So what is the problem? So if there was some experience, for example, countries from so-called iron wall or like from, I don't know, Ukraine or Africa or, I don't know, any other countries, if there are some communities or foundations we're trying to reach you and ask how to do it, what were the main problems, how do they struggle with things? So I really do think at the moment this is a global movement, just because it's not written in the curriculum, for example, in every country, don't think that it's not happening. We know countries in Africa, like Ghana, who are kind of rolling stuff out, just not officially with an official curriculum. So what's really important to note about our curriculum is that it applies to state schools, right? Publicly funded schools. But for example, we have a whole bunch of schools called academies, which are funded by private sector. They don't have to use this curriculum if they don't want to, right? So we still don't think that we've solved the problem in England. And I think, so I do think in other countries this is already starting. And I think if schools or code clubs are a really great way to start, right? So if you helped run a code club in a particular area, that's where teachers start seeing the effect it's having on their children, and then they're more likely to teach it, and then it'll kind of snowball from there. It takes governments to change curriculums, unfortunately, but I think teachers can kind of push that a little bit. Last question, and then we'll thank Keryan. Thanks. That's a great idea to get as cool as children's to train and learn with Python. As there are also a lot of other programs that have interfaces to Python, I learned Blender, for example, that you can model things, you have physics inside. You can combine a lot of lessons in school. Do you use Blender also? Yes. So we have teachers in England who are using Blender, yes, for exactly that, to teach a whole bunch of stuff. I really think computer science and computational thinking is cross-curricular. So the stuff we showed you with Minecraft, you can teach maths with it, there's coordinates and so on, you can teach physics as well. And Blender is a really great tool, again, free and open, right? So that's exactly what we want. Yes, it's great. So thank you, Keryan. Big round of applause, please, because she really deserves it. And yeah. You just go talk to her after the talk. There's a coffee break. Enjoy it. Thank you again.