 So I'm Chris Bosch. I teach at NUS, and I help run an institute for the application of learning science and educational technology. We sort of just study how do we help people learn better? The ed tech is getting faster. All this technology is coming. And so we do a lot of that research. And another thing that I've been doing for five or six years now is I hold these national coding competitions. And the main idea around the coding competitions is to talk the government or sponsor into giving us cool merchandise and then a very meritocratic way, give it away to young students, right? Just to motivate them and spread the word and we sneak in some learning along the way. So if you ever have prizes you want to give away, you want to buy a couple of MacBooks or some phones and give it to some secondary school students. Please contact me. I'll help you do that. One of the platforms we're using a lot these days is Code Combat. So Code Combat is a game you can play for free. It comes out of a Y Combinator company a couple of years back. I've used a lot of different platforms, but this one just seems to get better every year and meets all of our needs and it's scalable. So we send students here, they log in and they pick a username, password or login with Facebook or Google. And once they have a username, they get to something that looks very gamified and they start moving through these campaigns. And like a lot of us in here, we might have started off by moving some type of a turtle through a box. This is very gamified. They'll start off over here on level one. And they get to pick a character, which is different than when I was coming up, you get to pick who you want to be. Lots of different genders, lots of different races. I like that. I'm a father of a 16-year-old girl and I like the fact that she can come in and pick a girl who has brown hair. And I'm always surprised that the kids spend a lot more time dressing up their avatars and making them look like them or look very different from them than I ever would have expected. Me, I'm always like hurry up and get to the code, but you have to sit back and let them take their time. And so then we'll have like about 2,000 students over the next four or five weeks start through this adventure. And what we're going to do in level one is we'll teach them some very basic stuff like print something to the screen, move your character to the right, but along the way they'll be able to get this additional merchandise. And each time you get equipped with something, it gives you like a new skill, a new power. So in the beginning they can just do if statements and then they unlock the else statement. Do you remember your first else statement? I remember my first else statement. I remember that day I realized you could do else if. Wow, that was eye-opening. So you'll unlock your else statement and then they'll find out that there's these other methods that you actually pass properties to. Sometimes you can pass two properties to them, right? And then this magic spell will just do a whole lot of work for you and you don't have to write as much code. So eventually they're moving through and they start to actually, the problems get harder and harder, but for the students they don't even realize they're programming. They're just applying more and more of these spells, these skills. And it turns out as long as you let people practice the skill again and again, you know, every couple of minutes, they don't forget it. They don't forget the if if they use it three times before you teach them else. And so eventually they're doing some if, else, they're iterating through some arrays. And I don't know about you, but sometimes I have all those days. It seems all I do is fetch data, iterate through it, do a lot of if, thens, create some object and send it back. So those are pretty powerful constructs if you can get the hang of them. And then eventually this is what it looks like. They work through a level and they'll write more and more lines of code. Next thing you know, they're writing 25, 50 lines of code in the same day that they started. I've been surprised that the kids who go through it the fastest, I think they've programmed before, but a lot of times no, it's the people, they're good at math and they're good at thinking through problems, but no one ever asked them to code. They were asked to go get A's on their A levels and so that's what they've been doing. The ones who already know how to code, for them it's like sort of a game and it's not necessarily the best use of their time. But kids will fly through it and then eventually we select some students to come to our live finals. So if we have 2,000 kids play online, we ask the top schools that qualify to send four students, two boys and two girls, to come represent their school. We do it a junior category which is like sec one, sec two and secondary three. And then we do a senior category which is sec four, JC one, JC two, Polly's, pretty much anybody else. ITE, whoever wants to come. And when they come to the live competition, it's only about 200 people, they all get in these big rooms and they get to be in a full room with other people who like coding as much as they do. Or at least someone who is willing to do 40 or 50 levels of this game and get nominated by their school. And then for many of them, this is the first time they get to pair program. Everybody brings a notebook but we put them up in pairs. They sit on a laptop together and they say, how do two people program at once? We say, well, we're going to give you a very complex API. One of you is going to be coming up with ideas, maybe taking notes and the other one's going to be typing. Maybe you have the fastest type of writing the code, but you're going to be talking and working as a team. And one of my favorite things about the finals is all the talking. You see these two people sitting there talking back and forth and for many of them, it's the first time they've ever spoken code. Using words like scope and you know, you have to define the variable, right? And sometimes they ask questions and they don't even know how to use the right words to ask questions and I love answering questions because I feel like I'm giving them these new words to use. And then you walk away and they're using those words with each other. No, you have to iterate through the array. So it's pretty exciting. So they get two hours, they do that. And what they're doing in this live competition is they're not doing these single levels anymore. They're actually writing an agent to compete against all the other students in the room in their category. And this problem is cool because at the bottom of the ladder, it's easy. You're picking on the other 13 and 14 year olds who just learned to code two weeks ago because their school told them about it at the last minute. But as you move up this ladder, it gets exponentially harder and harder. And when you're up at the very top, you're trying to beat the top two or three teams in all of Singapore. And I'm humble enough to tell you today, I can't do it in the amount of time they do it. I give them two hours. From the time I give them a level, they crank out some code. I go home, I start coding and I do not get to the top of that ladder in two hours even with my PhD. So this is what a head-to-head match might look like when we pick two teams and we say go. And this is the spectator mode. So even though their parents don't know how to code, their teachers might not know exactly what the students are doing because it was a math teacher who was assigned to help out with the Infocom club that happens at some schools. But everybody can watch that. Everybody knows that the blue team is about to get their butt kicked and that the red team has got a sorcerer of some kind instead of a guardian of some kind and there's some kind of spell going on and everybody in the crowd cheers. And so for many students, it would be the first time in their life and maybe the last time that someone cheers for their code, right? And people clap. Thank you. No one claps for my code anymore. But anyway, so that's a lot of fun. In the middle, there are a lot of decisions you have to make. And essentially, this is what we want. It's problem-solving. We give them clear goals. They don't have real business problems yet. They don't have a boss like you telling them what to do, right? We give them that problem. Go save the peasants. Go kill the ogres. Beat the other team. And that's just enough motivation for them to practice their coding skills. So this is my code. I went in and tried to beat this guy WC3ZE and I started off with the given lines of code about 20 lines of code. 200 lines of code later. I'm writing methods. I'm extracting. I'm refactoring. I'm looping. I'm optimizing. More than about four hours later, 200 lines of code in. I still can't beat this JC1 student somewhere. I think I could if I put another four or five hours into it. But I decided to stop at that point and admit he was a little faster than I was. After they do this ladder and they sort of know how good they are, then we say everybody stop. We close our laptops. We go eat some food sometimes, depending on what the program is. And then what happens is everybody comes in and we have a knockout round. One person is on the top of the bracket. One's on the bottom of the bracket. And winner advances, loser. Well, it doesn't go home, but loser gets to watch the rest of the match. If you're a sponsor and you give me prizes, I usually give away prizes for first place, second place, and third place. This is what the junior bracket looks like. The top school sometimes we let them send an A team and a B team because if your school signs up the entire cohort, like you get 300 kids to spend five minutes and put three lines of code in a box, I will absolutely let you send extra students. And we do have some schools that do that. They sign up the whole cohort. And then the senior bracket has been smaller in the past a year ago, which is what this is from. We only let the polys and JCs sign up and didn't get as many participating at the level we wanted. So we've added secondary four students to the senior category. So this year it'll probably bounce out a little bit. Okay, so we do that. Give away prizes. Have a lot of fun. Let everybody network with their fellow Uber geeks in Singapore. Maybe meet those future startup founders for their startup when they get to university. Lots of female representation. This was pretty good last year. But this year we're going even more aggressive. The school gets to send two girls and two guys. So the only way you get to send four guys anymore is if you're an all-guys school. But that's okay. We have more all-girls schools than we have all-guys schools in Singapore. So if we can just get the girls schools to participate, it should all even out. Now after that, some of these students go on and they do like 100 levels. And they play all the head-to-head levels from the last five, you know, head-to-head matches we've had. So now there's this editor where you can make your own multiplayer levels. So now the trick is how do you take those skills that they built up, all those JavaScript skills, and teach them how to come in here and build their own level. And that's what it looks like when I got to it first. Turns out that's weird looking JavaScript. It's not JavaScript. It's CoffeeScript. Do you know what CoffeeScript is? I'm not going to tell you because I'm running short on time today. But CoffeeScript is pretty much, you know, what they did to simplify JavaScript before they figured out how to do ES6. That's sort of like my shorthand. You can ask me afterwards. Now that there's ES6, I don't know that it makes as much sense, but the game's been around a while. So I'll skip through that. This is what it looked like before I put together my final slides. Before I came here, we had about 78 people in the junior, about 46 people in the senior. Hopefully we'll get 16 to 20 schools in each category. And with that, my time is up. That's me. You can DM me on Twitter. If you just want to hear more, if you'd like to make games, if you'd like to figure out how do you get your cousin, your nephew, your niece, your son, your daughter to participate. How do we put pressure on their teacher? All you got to do is get four kids to spend five minutes to put three lines of code in a box. And with that, I'm done. Thank you. Anybody want to try out? Yes, sir. So would they practice loop sense? Like, would they practice something equivalent of a sorting algorithm in this as well? Really they're going to be trying to get things done. And what ends up happening is, in the beginning, when you've got that one unit to move around, it's okay. But once you start having to manage five, 10, 20 units, it starts to be a little bit more like those concurrent and parallel programs that we might deal with in the real world. You've got irritate through all your resources. Who's busy? Who's not busy? Who can I send to go do something? Where is everybody at? So it does go through loops and iteration. We do even get to, like in JavaScript, at least you get to where you're doing events and learning how to launch things in separate threads. But it depends on how far along they get to where the skills stop. Any other questions? All right. Thank you very much.