#8: Teaching Python at Grok Learning and Classrooms Transcript
00:36 Hello and welcome to Talk Python To Me, a weekly podcast on Python, the language, the libraries, the ecosystem and the personalities. This is your host, Michael Kennedy, follow me on Twitter where I am at @mkennedy, and keep up with the show and listen to past episodes at talkpythontome.com. In this episode we will be talking to James Curran about Grok Learning and teaching Python. Before we get to the interview, I want to tell you that this episode is brought to you by Codeship. Codeship is a platform for powerful continuous integration and continuous delivery as a service. I'll talk more about them later in the show. Please take a moment to check them out at codeship.com or follow them on Twitter where they are @codeship. And if you love this podcast, please send Codeship a message and say "Thank you".
01:24 Next, I want to highlight something that I think is pretty cool- Abraham Smith, who is a professor at Fordham University in New York, sent us a message on Twitter. he just wrapped up his course on scientific programming by encouraging his students to listen to a few key podcasts as they continue their learning. talkpython.podcast and partially derivative, which is a fine show abut data science and this is the first time I've mentioned them on air, check them out as well.
01:53 That's awesome Abe, thank you. You can follow Abe on Twitter where he is @abrahamdsmith. Finally, remember, many of our shows now have full text searchable transcripts, look for the full transcripts button on the show page. Now, let's get on to the interview with James.
02:10 Let me introduce James. James Curran is an associate professor in computer science at the University of Sidney and co-founder of Grok Learning, which you can find at groklearning.com. James has been teaching computer science to students and teachers for over a decade. In 2010 he was named one of Sidney magazines top 100 influential people for his work in computer science education. James is an expert in high school, IT education and is currently a digital technologies writer for the Australian curriculum. Follow him on Twitter where he is at @doctorjamescurran.
02:50 James, welcome to the show.
02:52 Hi, great to be here.
02:53 I am really glad you could come and talk about teaching Python, especially teaching the younger generation Python.
02:59 Well, Python is a great language to be teaching kids, and we love using it and it is great fun to teach it to the kids as well.
03:07 That's fantastic. You have a couple of areas, one through Grok Learning and one through the university as well as working with high school and lower grades, so I think there is a lot of stuff to cover here. But before we get into the sort of teaching programming, how did you yourself get started?
03:23 So, I started using Python I guess in about 1998 myself, so Bob Kummerfeld another associate professor in the school, he was a keen Python fan himself and in fact some of the other stuff had previously been contributes to some of the Python modules so Python was kind of a thing here at the university of Sidney from quite early on, and so I just started using Python. It was great language to do, lots of day to day data manipulation in, and then we also kind of found it increasingly a good language to teach students and because it's so accessible we found that we could just teach younger and younger students to code in Python, and so much of it started from there.
04:15 That's fantastic. Yeah, I think through some of your Grok Learning stuff you could reasonably reach middle school kids, sixth, seventh, eighth graders with no problem, possibly younger than that.
04:27 Absolutely. So we have done a lot of work with teaching students in seventh and eighth grade, and I think that that is the ideal zone in fact the Australian curriculum that I was just involved in writing has mandated that the kids will learn a text based programming language as opposed to something like visual language, like Scratch. So text based programming is mandated for year seventh and eighth, and Python I think is the ideal language to be teaching there. You can go younger, and I think the interesting question is how do you do a transition from a visual language to Python and one of the things we have been doing with Grok Learning is to have a visual environment where you see the corresponding Python code and the blocks in that visual environment are as close as possible to Python construct so that that mapping from a visual language like Scratch through to a text based language like Python is as smooth as possible. So if you do something like that, than I say no reason why you are not down in the year five, six kids or potentially even earlier if kids have had more experience themselves beforehand.
05:35 Yeah, that's fantastic. So before we get too far in the details, I suspect a fair number of people have heard about Grok Learning. I learned about you guys through working with the couple of local schools here in Portland Oregon around the "Hour of Code" which we can talk about in a little bit, but before we do it let's talk about Grok Learning, what is it?
05:53 So, Grok Learning was basically started with the primary mission of getting kids in school learning programming in an authentic and engaging way. So, we found in Australia, we found that this is the problem in UK and US as well is that many teachers don't have the necessary skills themselves to teach coding in school comfortably, and we wanted to find a scalable way of actually injecting our experience and enthusiasm into the classroom to help teachers teach programming.
06:29 And of course not just programming, but kind of wider computer science and other technologies like web development, HTML, CSS and so on, eventually, but definitely starting with programming as the core thing. And we have been running an online programming competition in Australia through the University of Sidney and a thing called the National Computer Science School which I am the director of, and we had a programming comp which essentially wasn't a programming comp it was actually a five week learning activity pretending to be a competition, so there was a competitive element there, you had questions you needed to solve, but I am like pretty much like every other programming comp in the world you actually learn to program by doing the competition as opposed to it assuming that you already know how to code.
07:12 So we had the competitive element, we had a new set of notes and questions we released every Monday morning and the submissions needed to be put in by 9 pm on Sunday night and that competition started out many years ago with about a 150 kids and then got to the point where we had about 4500 students in Australia doing the competition where it was too big to do as a side activity in the university.
07:40 So, we then got to the point where our success was kind of making it hard to do as a side job and so we decided to take it out and start the company Grok Learning. And, we have done a lot of work previously with sponsors to help fund programs like NCSS and I really wanted this to be something that was a self sustaining entity so I wanted to set up a model where we could find a reasonable price point that teachers can afford to pay for this, students to do this, offer them great value for money but it actually be sustainable into the long term. And so that is kind of where it was born.
08:15 I'd looked through the "Hour of Code" stuff in the Grok Learning site when I was trying to some research for local high school, looking for something more than the visual programming, Scratch or some of the other visual programming languages seemed inappropriate for high school kids. 14,15,16 years old, that was definitely way they should be I don't think...
08:42 Yeah, well I think that pertly comes down to what existing experience they've had so, quite a lot of schools will actually teach some Scratch into the beginning of the high school, or the end of middle school, so year 7, 8 say, but that is if they haven't done programming before. If they have done some visual programming earlier, then getting stuck into Python by that age is definitely the way to go.
09:03 Right. And I think one of the problems that many students will get hung up on not the really committed ones who are going to plough through the errors until they get it to work no matter what, but the average kid will get hung up with weird compiler errors or runtime errors, or syntax errors, just that kind of stuff, and so what I really liked about what you guys do at least the part that I have been exposed to which is the "Hour of Code" stuff, is you have a really nice kind of walkthrough interactive environment in the browser that runs your Python and then verifies it and it really helps you and gives you hints and stuff.
09:40 Right, absolutely, I mean one of the- I think programming is one of the hardest things to learn entirely on your own, because getting that feedback and support when you get a mysterious syntax error or when you get a runtime error or I think the other case where you think your program is right but actually there are some errors that you haven't even noticed, if you are not pulled up in anyway by someone else who knows programming better or a system to say "Hey what about this case, or you haven't thought about this", or these various other details that aren't quite right about your program, then you are not really learning all of those skills you need to count yourself as a programmer.
10:19 So that is what I meant before about why we really wanted to inject our expertise in a scalable way by having a system that gives you lots of feedback. And the other thing we wanted to do with all of those little interactive snippets is really encourage students to mess around, and I think, possibly I actually learned to do this as a way of teaching from Python because the interactive interpreter was such a great way to experiment with and a great way to teach, I mean when I teach Python in the university context I usually just open the terminal window with the Python interpreter and just start typing stuff in, so getting kids to see that they can mess around with little snippets of code to understand how they work and modify them in interesting ways we wanted to make sure that our online platform really encourage that same kind of behavior.
11:08 Now let me take a minute and tell you about our sponsor for the show: Codeship. Codeship is a hosted continuous delivery service focused on speed, security and customizability. You can set up continuous integration in a matter of seconds and automatically deploy when your test have passed. Codeship supports your GitHub and Bitbucket projects. You can get started with Codeship's free plan today, should you decide to go to the premium plan Talk Python listeners can save 20% off any plan for the next three months by using the code: Talk Python, that's TALKPYTHON, all caps no spaces. Thanks to Codeship for sponsoring the show and I encourage you to check them out right now at codeship.com and thank them on Twitter where they are at @codeship.
12:15 So maybe we could talk about the five little what do you call them- tutorials, or programming exercises or what would you call them for the "Hour of Code" : “Is Elisa Human”, and “Space (Blockly)” and “Disease Epidemic”...
12:29 Right, well I guess we would call each one a course, but of course the "Hour of Code" version of those courses are really designed to fit in an hour, or realistically probably a couple of hours, depending on your student.
12:40 Right. Ok, I really thought these are interesting: you have some that seem like they would appeal lot to girls which I think is sometimes a hard problem with a lot of the examples, people come up with like robots that smash each other or even like- that's not appealing to young girls and so, I really thought your “Is Eliza Human” where you create kind of artificial chatbot is really interesting example.
13:06 Yeah, well, I mean Eliza is a lot of fun and my area of research in the university is computational linguistics I am very interested in language in the ways of which language can be a language skill can essentially be faked by a fairly simple bit of software and Eliza is definitely the most famous example of that. I mean, I wish in some sense it was called a Week of Code, rather than an Hour of Code because there are a lot more exciting back stories about artificial intelligence and all kinds of things she would really love to bring into, Eliza, that make it come alive a lot more than just say "Hey we are writing a program that reads some important 13:46 some output in slightly different ways, so, it is a great honor; we have got quite a diverse team and we just come up with questions and things that we would have liked to solve at school. I mean, I don't really think of Eliza as being especially targeting towards girls I just think it's great example it involves language and we try to have a range of language problems, math problems, science problems, sport, popular culture, when we run competitions we try to have a range each week as the kind of questions so that there is something in there for everyone.
14:20 Right. I think your Disease Epidemic is really nice, because it is a good tie to science and biology and-
14:26 Right, exactly-
14:27 -and I think maybe my favorite might be the “Dark Tunnel” which is a MUD, I don't know how many people remember MUD, boy, I played those a lot when I was in high school and college, and they are pretty awesome.
14:38 They are, they are a lot of fun and what I think is great about the MUD is that you can actually get quite a long way without having to use many advance programming concepts, and you can actually build of it quite a graduated fashion so the thing can just start out as a massive sequence of if statements if necessary and then you can slowly build a more general framework for your MUD as you need new features in the system, so you can start all of the way from input and print in Python just by expanding on the various bits of functionality you would like to have in your MUD. So, we have had a lot of success teaching MUD to students and to school teachers as a way of motivating programming and giving the keen students a huge amount of scope to expanded in ways that interest them. I mean, that's another thing that I think is quite critical when you are teaching programming you are showing that this is not a question where you just get the right answer, if you really want to go with something you could build almost anything you can thing of and that's pretty special about programming, it doesn't apply to many other jobs in life.
15:51 If you can dream it, it almost can be done, right?
15:54 Right, exactly, I mean, if you happen to be the kid that thinks of npay complete problem that is the thing you want to solve but you are out of luck there, but most of what you can think to do you can do, which is just amazing.
16:07 Yeah, it really is, something special, I think. And you know, you really are exposing these young people to that and I think that if they get a taste of that magic, like "wow, I really did this, I really built this" that can really spark a fire that can last a long time.
16:25 Right, absolutely, and I think another thing about programming, and this is I think the more general thing about schools around the world, is that we often do not actually push our kids hard enough to achieve things, and I don't mean push them and pressure them, I mean set them a goal that is challenging for them to give them something that they really find a bit of a challenge to do, but then give them the support to actually be able to achieve that and come out with the sense of accomplishment at the end. Some of the feedback that we have got from our "Hour of Code" activities that are even more from a much longer five week competitions is that kids really do get a strong sense of reward and achievement of having concurred these programming problems.
17:08 And, that's actually the same mentality that drives most people that I know in the IT industry is that the joy of solving a problem, and especially the problem that you don't really have a good sense of how to solve when you start, is one of the things that makes working in IT and being a programmer exciting, and we really wanted to have that sense conveyed to the kids, and also for that to be the drive of learning, I mean if you have got problem that you want to solve and you accidentally learn things in the process, I feel like there is no better way to learn.
17:42 Yeah, absolutely. You know, I think a lot of adults who are in charge of education of younger people teachers, principals and so on, they find computers harder they have found computers hard, they think of programming as something that is just no way they can do, so I think they are a little uncomfortable introducing it to their classes and I during the "Hour of Code" last year I was really lucky I got to work with my- I have a daughter who is six years old and I got to work with her principal at her school, and luckily the principal actually worked at Microsoft before coming over, so he had some experience, right which was really great, and we were talking about how do we bring "Hour of Code" to this elementary school, first grade through fifth grade, and it was like "Maybe we can do it for fifth grade possibly we can do it for fourth grade " and we ended up introducing it for first, second, third, fourth and fifth and even the first graders like blew the teachers away, it was just amazing. And at the beginning of the conversation, it was like well maybe fifth graders can do this, and at the end it was like "Wow, look what the six year olds did who can't even read", you know. So it was really nice.
18:45 Yes. And some of those "Hour of Code" activities like the frozen activity for example just bang on what younger kids are interested in and just really engaging stuff and a great place to start thinking about some of the underlying concepts of programming. So I think the code.org gang really have done an amazing job with that, and it really is as you said finding a teacher that either has the confidence or finding ways to give teachers the confidence and skills to deliver this stuff.
19:19 And to be fair to teachers, I mean, computing is one of the few disciplines where the things that you have learned can be thrown away every few years as the technology changes. If you think, think about for example being a secondary math teacher, what you learn to university or college to become a math teacher will probably set you up your entire career. But if you are a computing teacher, typically you have an actually got an undergraduate computer science degree as you are backing anyway that you usually started in some of the discipline and you need to learn a constantly changing set of technologies and skills to teach your students.
19:57 So it is actually quite a special subject in the scheme of teaching at school, that it is changing fairly frequently and teachers rarely get given enough time and support to actually continue their own professional development to keep up, I mean, even if you are in the IT industry full time as a professional, spending enough time on your own professional development is one of the challenges. So teachers have that ten times as bad..
20:25 Yeah, at least ten times. So, you know, one thing we can do is encourage everyone out there listening because almost everyone listening to this show would be fairly qualified to do this; is getting involved with your local schools and teachers and just volunteer a little bit, all right?
20:38 Absolutely. And we have actually had quite a lot of IT professionals, usually who have son or daughter at local school that want to some programming in school that do not quite know what is the right way to approach it, they may not have a good understanding of the pedagogical approaches in school, or how it would fit with the curriculum and so on, that's exactly the kind of thing that our platform helps with as well because have got activities that we know are age appropriate for certain groups and so on, and so it kind of, I mean, it helps you from either direction;
21:12 If you are a teacher looking for the more technical element then using our system in class is a great way to provide say a five week learning activity to your students, and if you are in industry professional looking to help out in your local school, then using our activities is a starting point for that engagement with the local teachers and students, is a good way to ensure that what you are doing is relevant and age appropriate.
21:35 Yeah, I think using a platform like yours makes it dramatically more approachable. So that is great. It seems like you guys are doing specific stuff to help train the teachers, as well, can you speak about that a little?
21:47 Yes, so some of that work isn't actually within Grok Learning specifically, it is more within my university role that we have done a lot of teacher training over the years, but we do have quite a lot of teachers that actually use the Grok Learning courses for themselves for their professional development for example I might do one of that competitions the year before they teach it to their students themselves; if you have got a teacher that is brave enough to actually say to the kids "Look, I don't know all of this stuff myself now but we are going to learn it together" then I think that that is an amazing situation and the teachers and students get a lot out of the fact that they are learning together. Then what you actually see is rather than a teacher just being at the front teaching what the teacher is doing is modeling ideal learner behavior, and that is a very powerful thing to do and quite a joyful thing for a teacher to be able to learn stuff alongside the student, and kind of change the classroom dynamic entirely.
22:45 But it does take a certain amount of bravery to say that I am going to change the paradigm in the students' expectations that the teacher knows everything in advance. But we have a lot of teachers for example who essentially compete with their kids in the fun way to solve the questions in our various courses and competitions. So, a lot of teachers use it in professional development, it is also a very efficient way of doing professional development because you are actually teaching at the same time.
23:13 Yeah, that's really great and I think it does model very good learning behavior because if you are going to be in the software industry you are going to be doing this forever. Right? And there will be many times you do not have the answer or you are like for first time I need to talk to a database. Or I have no idea how to do that but let's get started we will figure this out, and that's a really valuable skill to be able to approach a problem you don't know how to solve already, or you are not given a formula to.
23:38 Right, and if you think about the way much of schools is structured in most countries around the world, it's very much not that model of learning, it's very much here is up front the things that you need to know and here are the problems that you can then solve using that knowledge rather that flipping a head and saying "Well ok here is the problem, you don't know everything you need to know to solve this problem, go out and find it" and so that is where the problem driven learning and the challenges really are quite an important part of modeling, giving kids a different way of thinking, and a confidence to say "You know what, I can solve a problem that at first glance I don't know how to solve"
24:21 That's right. And I really like your platform that it really guides them in very early stages so that they do not get frustrated when they are kind of presented with the unknown which is just a natural state of this programming world; it kind of helps them get over the hump and then they might have the persistence or the interest to actually do the hard work to keep learning.
24:41 Right. And I mean another dimension that we haven't talked about yet is that the programming really requires the precision that isn't required in many other parts of a students' or teachers' life. So, when you have a specification that says that your program will produce output in exactly this format where everything from punctuation capitalization spacing and so on could be the difference between you successfully interacting with an API or not, that really isn't a natural state of thinking for most people and definitely not something that they are exposed to that often in the rest of their class work.
25:20 And if you have an automark I mean all automark is demand a level of precision, in the things that they are marking but if you don't actually educate the users into that way of thinking and how the automark works then it is an incredibly frustrating process to them you know, I have written this program, I've sweated blood to get it to work and then your system says "But the punctuation is wrong" or even worse and it is very common to actually give you no real information about how your program is wrong except for you to stare at it for ages and ages and realize that you have made a coma into a full stop or something like that when you shouldn't have.
25:59 So, having those walking people through using the marker for the first few questions as a way of learning to be precise and reading the question very carefully but at the same time how the order marker will give feedback is really an important part of the recipe.
26:17 Yeah, I think you are absolutely right there. You know that is an unnaturally to think, especially for children but even for adults and high school and college kids, the closest analogy I can think of it in my experience is it is almost like a mathematical proof with no forgiveness.
26:33 Right, absolutely.
26:35 Not only do you have to have all the steps right but they have to be exactly right, not like I know what you mean, it's got to be right.
26:41 Yes. Exactly, that analogy is perfect, the thing is with the math's proof you can kind of do the beginning and kind of do the end in kind of model your ways through the middle and get most of the marks but when you are programming the computer is incredibly unforgiving and that is one of those few things where you hand in something that you know is wrong. And you really know is wrong because the program just isn't doing what it is meant to be doing. So, I think that adds a lot of frustration. The other thing is that is a general skill about this precision is reading a question carefully and working out exactly what it requires of you, is a very general life skill and that kind of precision thinking is something that we don't really have that many other opportunities apart from maths to encourage students to acquire these skills, so I think when you do something like the Grok Learning activities you get a lot more than being able to say you can write a program at the end, you are actually developing some more generic skills that are very useful.
27:45 Right, it may even be more important to learn those skills then to learn programming.
27:48 Yeah, absolutely, because most people won't actually become programmers and that's perfectly fine, we just want them to have a genuine experience of it and learn some more useful general problem solving techniques along the way.
28:01 Right. And I think, something like this, is way more realistic or approachable to kids than "here we are going to do some geometry proofs" or "we are going to do advanced algebra work" right? That just doesn't feel real to them but if they see creatures running on the screen that is something they can connect with, but they are learning basically the same skills.
28:23 Excellent. So what are your long term goals for coding in school?
31:33 Right, absolutely. And I apologize if you just mentioned this, but you have some more advanced classes coming up, right? You are working on?
31:42 Right, so, the way that our competition is run for example at the moment is that we actually have four levels of our competition so they already go to advanced Python materials so the advance course currently has things like regular expression, object oriented programming, some recursion and some parsing and then various bits of computer science sometimes, some computational geometry or other algorithms and the things they implement. So, we have already got a bit of a range but we also want to start branching out to courses that cover specific technologies as well, so, and we use Django as the backend for our system I would love to have a Django course, we also use Tornado it would be great to have Tornado course as well and to bring that same pair of automarking that we have with the core programming courses, bring that to all these other technologies as well.
32:40 Yeah, that's really great. I think this kind of courses you go through them and putting your final exam or your final project at on some system using continuous delivery through GitHub or something- that's a really amazing place to be in, I think that's a nice idea.
32:59 Yeah, well, I think one of the things that's difficult at school for students that are really keen is getting started on a project can be difficult. So you've got some vision for a website you want to build, what are the kind of core bits of that website and how do you get those things going. I think a lot of students that have a vision for something they would like to produce do not necessarily know how to go from : Ok, I can run some Python code to how to actually build and deploy a site with uses and profiles and various other things that are the core, I'd like to be the platform or have the platform that allows to get to that first stage where then the creativity can take off, and do the thing that they actually want to by building on top of that framework.
33:45 Yeah, I think that's really great, you know, there was some article that I saw a while ago I think from a guy at Google, that basically said "computers and programming are fractals". And every time you think you see the picture you get a little closer and there is a whole bunch of more pieces and that can be really challenging, so what I am thinking is "Oh I learned to program Python now maybe I will write a game, oh wait, now I have to learn about files, and I have to learn about databases, and now my web app I am ready to put it out, oh no, I have to learn about web servers..." there is just layer after layer I do dig into it. So the more we can give people help in the beginning the better.
34:23 All right James, I think that might be a show, that sounds some really interesting stuff and I just want a second the call for everybody to go out there and, get involved, check out Grok Learning,when "Hour of Code" comes out, volunteer with some local school it's really easy with the things like the Grok Learning walkthroughs and Hour of Code's or code.org's tutorials and so on.
34:47 So James, is there anything you want to- that we haven't really spoken about call the listeners' attention to or give a shot to?
34:54 Well look, I think if there is anyone that is interested in learning Python that you think he wants the resource to send people off to, then I would like to think we are at great place to start for any age not just the school kids that we have been talking about, but I think let me just reiterate your call to Python programmers to get themselves into local school, contact the teachers say "Hi how can we help you teach some programming in schools" I think what you will find is that there is a huge amount of interest of teachers but they just don't have the skills themselves and I really believe there is no greater joy of programming than sharing that with someone else.
35:35 Absolutely. Well, this has been a great conversation, thanks for being on the show James.
35:39 Thanks very much.
35:41 You bet.
35:42 This has been another episode of Talk Python To Me. Today's guest was James Curran and this episode has been sponsored by Codeship. Please check them out at Codeship.com and thank them on Twitter where they are @codeship. Don't forget the discount code for listeners. It's easy, it's TALKPYTHON, all caps no spaces. You can find the links from today's show at talkpythontome.com/episodes/show/8. And if you are feeling generous please check out our Patreon campaign at patreon.com/mkennedy. Be sure to subscribe to the show. Visit the website and choose subscribe in iTunes, or grab the episode RSS feed and drop it into your favorite podcatcher. You will find both these in the footer of every page.
35:42 This is your host, Michael Kennedy. Thanks for listening.
35:42 [music] developers developers developers