CORALINE: Are we ready? SAM: Hello and welcome to this week’s episode of PC Principle Shit! MANDY: As the editor, I felt like I really had to come on today because you just keep getting the name of the show wrong. It is Greater Than Code! CORALINE: If you say so. MANDY: I guess I’m going to go ahead and kick it over to Coraline. CORALINE: Hi everybody. We have a special guest today, David Bock. He’s a seasoned software engineer with over 25 years of experience working with federal and commercial spaces. He’s currently Director of Engineering at Living Social, a frequent speaker at software engineering conferences, and an organizer of several technical user groups in the Northern Virginia area. Several years ago, Dave discovered a new passion teaching computer science and software engineering skills to the next generation. He’s funded the foundation of the Loudoun Computer Science Initiative. You can find more information about that at LoudounCodes.org, teaching K-12 students computer science concepts [inaudible] school system. Dave lives in Loudoun County, Virginia with his wife, children and an ever increasing menagerie of pets. SAM: And on a personal note, I would like to add that last month at Ruby DCamp, Dave made the best smoked pork I have ever had in my life. It was amazing. He was very insistent, though, that we not call it barbecue. So David, what do you have against barbecue? Why do you hate freedom? DAVID: [Laughs] Thanks everyone for having me here today. It’s not that I have anything against barbecue. It’s just the word is very imprecise. This isn’t a ludus thing; it’s an engineering specificity thing. If somebody were to come up to me and say, “You made great barbecue,” I’d be like, “Oh, thanks for the compliment.” But when we’re actually talking about it and so many people want to know what I’m up to when they see all the machinery and smoke happening in DCamp, the term ‘barbecue’ refers to the event. I’m holding a barbecue can refer to the machinery. I’m using a barbecue, the sauce, the food is just too imprecise, it means too many different things. I’d rather say I’m cooking meat in a smoker or I’m grilling something or I’m making a North Carolina sauce or a Texas-style sauce or tomato-based or vinegar-based sauce. It’s just from an engineering perspective. I like the specificity of describing what I’m doing and the term ‘barbecue’ just blurs it all together way too much. CORALINE: I’d like to say that whenever I travel, I like to sample the smoked pork at every little city that I go to. So far the best I’ve ever had was in Atlanta, Georgia and that feels weird like being a person who lives in Texas for 7 years to say that [inaudible] barbecue — I’m sorry, smoked pork — but it’s true. [Laughter] DAVID: A friend of mine says that in North Carolina, barbecue is a dish. In Texas, it’s a cuisine which is true. There’s so much more variety in Texas in terms of the meat, the style, the wood, everything. In North Carolina, it typically means pulled pork. MANDY: I’ll be in Austin next week and I will be really excited to try some smoked pork. DAVID: In Austin, you could also get great brisket, sausage length. A few years ago, I was there at a No Fluff Just Stuff conference and we ate at this place downtown that looked like a shack that had been accidentally left there by the foremen of construction after they built all these 80-story buildings and it was the best barbecue stuff I’ve ever had. CORALINE: I think my best was this place in Dallas, I don’t remember the name of it. But they had the restaurant in the middle and there are a bunch of tents set up in sort of a spiral outside the restaurant. So, while you’re waiting in line and there’s always a huge line, you get to smell all the smoking that was going on and you get so hungry while you’re waiting. And at every station in every tent, there’s someone there just with two knives and they were flipping the meat and serving the meat and everything worked out just with their knives. We bought like a quarter pounder or half pounder at a time then you finally get to the inside and they’re like, “Oh, how about a vegetable.” And you’re like, “Well, there’s no room in my plate.” [Laughter] CORALINE: It was really, really good but still nothing [inaudible] at Atlanta. MANDY: I have a listener call to action. I want to know, I want you to tweet me the best place in downtown Austin to grab some barbecue next week. Thank you. SAM: Brandon Hays, this is your moment to shine. [Laughter] DAVID: As much as I’d love to talk about barbecue for an hour, let’s segue back to the topic I’m here for. SAM: You mean we’re done alienating all the vegans now? DAVID: You know what? That’s not quite true either. In fact, every day I find [inaudible] back on the topic. Thanks, Sam. SAM: Success! DAVID: I found a balsamic vinegar that is hickory smoked and I had been making great sauces with them, that a little bit of soy sauce make a great pan sauce with vegetables you can do some amazing stuff with that. Just that hickory smoked-infused balsamic vinegar is amazing. SAM: Wow. DAVID: I can make a vegetarian happy. CORALINE: Nice. We mentioned in the intro, Dave, that you’ve been teaching kids K-12 computer science concepts. Can you talk about how you got started doing that? DAVID: Sure. That’s quite a long origin story. I have triplet boys which are now 9 years old, they’re in 4th grade. And when they started elementary school in Kindergarten, I started volunteering at this program called WatchDog Dads which is a nationwide effort to get fathers to volunteer at elementary schools. And it’s kind of cool, every few months I spend a day at the school where I wander around from classroom to classroom, sometimes I’m giving a class a spelling test, sometimes I’m out in the hallway helping 4th grader with word problems, sometimes I’m keeping score in the gym while Dodgeball is taking place. Moving up, they’ll play Dodgeball again. Just stuff like that in the elementary school. And I was really excited when I saw that they had a computer lab. When I saw what was actually being taught there, it was actually disappointing in that there was no official curriculum for computer science. They would use the computer lab for occasional test taking, maybe making birthday cards for kids or parents or a Father’s Day card. And just in general, what I would call 20th century office worker skills. And there were some extracurricular activities after school that would generally a for-pay event to teach computer science stuff like Scratch or have them play with a little robotic toy. But I wanted to do something else. The first year I mentioned it to the Technology Resource teacher and there was a little bit of resistance. I was some new guy at the school. Am I going to be around? Am I going to bail on them? Is there going to be anything installed in the machines because it’s hard to install stuff on the school’s computers county-wide and get their permission and all that kind of stuff. So I just left it alone the first year. Meanwhile, the school got to know me a little bit more. I helped the Technology Resource teacher set up some Chromebooks so they got to know me technically. The next year was the first year that code.org ran the Hour of Code during the Computer Science Education Week and had a bunch of great material up on their website. I mentioned it to the TRT, showed it to her and there was a little bit of enthusiasm. But a couple of months went by and I didn’t hear anything. Then I got an email saying, “We’d love to do this at our school.” It’s all online; it’s all in the web browser with a language called Blockly that looks a little bit like Scratch. There’s no syntax, there’s no commands to memorize. They’re just blocks and you connect them together like pieces of Lego. And you basically learn Karel the Robot style curriculum. Stuff that’s been around since the 50’s and 60’s except they did it the first year with characters from Angry Birds and characters from Plants vs. Zombies. So, there was all this great material. SAM: You said Karel the Robot and I’m actually not familiar with that. Would you mind unpacking that for a moment? DAVID: Oh sure. I first learned about Karel the Robot sometime in the 1980’s. It was a curriculum that was based on the Logo programming language which actually had a physical little robot with pens that could wander around a desk and teach kids a sequence of commands to be able to go forward, turn left, mark paper with pen, turn right, move forward, turn 30° and even do more complex paragraph-type commands by turning and repeating and repeating and repeating the same commands over and over. SAM: Oh, cool. DAVID: And of course now, we don’t need a physical robot for it. We have computer graphics that can do far better and not have to have physical devices. So the curriculum that the Hour of Code has put together was basically on a sheet of graph paper with Angry Birds and Plants vs. Zombies. You had to learn a little program like ‘move your character 3 spaces forward, turn left with 2 spaces forward, turn right with 3 spaces forward’, and now you just had the zombie get the flower or just had the pig get to the bird kind of thing. All of that was online, nothing to install and it was a series of 20 exercises that showed first how you use the commands, how you connect them together, then how you can batch them together to do operations, then how you can do loops with those, how you can do little comparisons like ‘if there’s no path in front of me, turn left’. And at the conclusion of these 20 exercises, you actually write a little algorithm that will traverse a maze just by ‘if I can move forward, move forward’, ‘if the path in front of me is blocked, turn left’, ‘if the path to the left is blocked, turn right’. And just with that little bit of instruction, you can wander the whole maze and find all of the flowers or all Angry Birds that are around to collect. The first year we ran that, originally the plan was to run it with all the 4th and 5th graders. I actually took a week off of work and we scheduled hour and a half blocks with everybody where each class would come in then they get a brief introduction. We walk some of videos that are on the code.org website. We’d run through the RF code material then we’ll conclude with a little bit of [inaudible] in some real world examples of stuff that was not unlike what they just did where I would show them real code that did stuff and they could see that the code they just wrote was like that and give them an idea, “Wow, this is how computers really work.” It was really encouraging real time after doing it with several 4th and 5th grade classes, we decided to also do it with the 3rd grade classes. So I took the whole week off work, we did it with most of the school that my children are in. My children were in Kindergarten at that time. And so I didn’t get to see them much that week. But it was fun running it with all these children. And of course, the Hour of Code continued to get a bunch of publicity. The county was excited. We were the first school to do it. My principal got a little bit of credit for that and she told me another program at the high school called TEALS and I can’t remember what TEALS stands for – something like Technology Educational Leadership in Schools. But it’s a program to get computer science professionals paired with Math teachers to teach computer science. So the idea is to train the trainer kind of program in most of the country. It’s nationwide. And they offer curriculum — in Loudoun County that doesn’t quite fit because we already have computer science curriculum in all of the high schools and decent capable teachers. In Loudoun, it’s more of teacher-assisted model. But basically after we ran it that year at the elementary school level, I started volunteering at the high school level. And it was a really odd experience in that I have taught professionals my whole life. I have been involved in user groups, I do a lot of conference speaking, I do a lot of one-on-one training with people, and my high school students were just as eager and interested as any adult students I’ve ever had. And there wasn’t a lot of ego or weird age dynamics. In fact, it was really awkward that sometimes I’d be working with a student after school on an assignment, something extracurricular, a little bit more than what was in the classroom material and they’d be like, “Oh, I have to go. My mom’s here.” I’m like, “What? Oh, right. You’re 16.” This is bizarre. SAM: [Laughs] DAVID: It was a really weird thing to think that in just a few years, my own kids are going to be the age of these students. And in many ways that matter, they are just young adults, and it was really eye opening for me. And I realized my original desire to get involved with the high school level was completely selfish, wanting to know more about the school system in which my kids are a part. Like what was going to be the peer pressure dynamic and stuff that they were willing to face in high school. When I got there and started teaching these high school students, I just realized how much I loved it. How at some point, I don’t know where I went wrong but I think I missed my calling. I really enjoy it. SAM: Yeah, I would love to be able to teach some day. I just wish that our society valued those skills more and I mean, literally valued. I cannot afford to teach at this point. DAVID: Right. It’s a privilege that I’m able to work at home as much as I do and live so close to my high school. And also because schools start so early, I can schedule a meeting and be at school Tuesday morning and still be home by the time — my first [inaudible] of the day happens mid-morning — that I can really volunteer at the high school level mornings, sometimes two a week and really not have it impact my work schedule at all because I spend less time teaching than I do commuting for any of the job I’ve ever had. [Chuckles] SAM: One thing that I think a lot of engineers think of when they hear about these programs to teach kids computer science is a lot of us get up in arms about how everybody should learn to code because everybody should grow up and become a software engineer. Is that sort of where you’re coming at this from? DAVID: No, not at all. In fact, I’ve seen a great YouTube video of Neil deGrasse Tyson talking about his own children and how he’s not teaching them to be scientists but he’s teaching them to be scientifically literate. In that by being scientifically literate, they make better citizens, they can make better voting decisions, they can avoid scams, they can understand all aspects of society a little bit better. And I feel the same way about what I’m doing here, in that our high school students that are learning to code. Some of them are going to grow up to be software engineers. I mean, some of them already are. I have students that have apps in the AppStore, for instance. SAM: Nice. DAVID: But at the same time, I have students that are learning that coding is not their thing at all. And I think that’s valuable to learn as well. I have students that might end up in a career of product management or marketing or any of those kinds of things where they are going to maybe be the end users that are giving requirements to software engineers. And I think just having an understanding of what that job is about is a useful thing. Not everyone grows up to speak Spanish or German, but we teach that in high schools as well because in some way, it helps us expand our level of thinking, expand our skill set in the real world. CORALINE: My daughter is 20 years old, but when she was high school age, we had a lot of concerns about what happens to a lot of girls in a school setting where they’re discouraged from demonstrating proficiency with Science and Math, and discouraged from being interested in those sorts of topics. My daughter did not end up going to public school. She didn’t really face that kind of societal peer pressure to conform but I know that a lot of people are not as lucky as we were to be able to put their kids in a position where they can kind of follow their interest without repercussions. Tell me you’re not seeing that at the elementary school or high school level already where girls are being discouraged from programming. DAVID: That is a great question. This is something I’m trying to put my finger on and I have little bits of evidence that point to stuff. We’ve always talked about this pipeline problem. It’s not so much a pipeline problem to me as the same problem just iteratively applied after year after year after year starting at very early ages. And I have to say when I do the Hour of Code and that kind of material at the elementary school level, of course we bring in the entire class, so it’s all the boys and all the girls. The Hour of Code material has gotten better in that over the years they’ve gotten more and more gender diverse material like the first year, it was Plants vs. Zombies and Angry Birds. All the kids like to play those games, so it wasn’t too bad. But one thing I noticed that first year is that predictably, every class, it would be the girls that were doing as well as the boys, if not a little bit better. Whenever we would have a student that would finish first, it would be a girl. And the girls would finish first and then go on help other people. It just wasn’t quite on par with the boys’ behavior with the code. They were always proud of themselves and encouraging themselves to do it. But I didn’t see quite the sharing and I didn’t see quite the level of proficiency. We know that at that age, girls are better in Math and boys are generally at like the 2nd, 3rd, 4th, 5th grade levels. And I really saw that first hand. Some of my best experiences at that level have come from female students. The first year, I was showing my students this little program I had written to play Connect Four. We played Connect Four and of course, the computer beat the class and then I showed them the source code and showed them how it was exactly the same kind of stuff that they were writing now, but it was just a lot more complex. And this girl says, “Oh, so computers aren’t smart. They’re just dump, really, really fast.” [Laughter] SAM: That is perfect! DAVID: That is a quote that I’ve used in teaching a million times. Just last year, I had a girl who came in 5th grade. We’ve done this now several years and she was like, “I do not want to do the drag and drop stuff. I want to type my code like the big kids do.” So we found one of the RF code examples where they actually had to write JavaScript. And she wrote JavaScript and she figured it out on her own that in the drag and drop line which we have to drag out the turn left and turn left again so we can turn around. When we typed it out, we can just type ‘turn left’ and then in the prompt cc’s, put the number ‘2’. And she figured that out and she gave a little presentation at the end of class about what she did and why she was doing it that way. And I was really encouraged to see students that age figuring out real typing the semi-colon kind of code rather than just the drag and drop stuff. I’m just now getting involved in some activities at the middle school. At the high school level, I’ve seen there is definitely that peer pressure. We do not have as many girls in the class as we do boys. And for what I see at the elementary school level, I can’t explain that. Not yet. One thing I’ve noticed is that there was an incident in my first year that a male student said to a female student, “Oh, I think it’s cute that a girl’s learning how to code.” CORALINE: No. DAVID: She actually took that as a compliment and was beaming a little bit. And knowing a little bit more about the high school dynamics, it probably took him every scrap of courage to say something to that girl and probably wanted to give her a compliment because that kind of dynamic going on as well, [inaudible] I see this as a bit of belittling like, “Wow, that expectation wasn’t really on a girl,” and, “Yey!” I actually took that opportunity to say originally, this career was about women and I talk about the pictures of the women programming in the act and just all that kind of background. And that I showed them the NPR article that talks about how through the 80’s and 90’s with the [inaudible] and computers really being seen as a boys’ toy that the gender dynamics changed. Those gender dynamics are kind of a personal thing to me in that I started my career and grew up doing government contract with the State Department. And I worked on teams where there were just as many women as men, plenty of times through the early 90’s/mid 90’s. And when I entered the commercial space and I actually started the company with two women, I noticed that in the commercial space, people would think that I brought a secretary to the meeting. And I was like, “No, she’s actually just as competent of an engineer as I am,” and that there was this big problem of diversity in tech that I didn’t notice. It was not as badly when I was in the federal government space. In the commercial space, it was a big deal and that was just around the time that the software engineering community especially the Ruby community, which I was a part of that time, really started to take notice and struggle with that internal change. Another thing I noticed at the high school level was that — we had a number of girls in the first year taking the Intro to Computer Science class. But that summer, a number of girls were approached as females that were doing well in science and technology classes and asked to take part in a nursing curriculum. So when they came back for the next year in high school, they were going to our kind of vocational tech center to learn nursing skills. And I have mixed [inaudible] about that. That can be a great career too, it’s definitely needed but why are you pulling women out of this other very viable career path when we need women in that career path. So there are weird peer pressure dynamics there, some institutional dynamics. I’m just now getting involved in some activities at the intermediate school by which I hope to learn a little bit more about the situation at that level. In fact, this is a situation I’m really proud of. I have two high school students that are members of a CyberPatriot team at my high school. This is a national competition that Northrop Grumman is a sponsor of. You can download these virtual machines several times a year, you have to secure them and send them back and you get judged on how well you secured the virtual machine. So it’s a nationwide competition where high school teams compete about DevOps-y kind of securing boxes for deployment. I think it’s great, it’s really educational, it’s outside the normal high school curriculum. Two of my students have started an intermediate school team where every Tuesday afternoon, I have 15 intermediate school students that are bused over to our high school where our two high school students teach them. So they’re participating now as a CyberPatriot team. There are a few girls as a part of that, so that’s encouraging. What was really awesome was that two of the intermediate school students recognized me from being a WatchDog Dad at their elementary school. So, it warms my heart a bit to see my high school students teaching intermediate school students that were my elementary school students. It’s like circle of life right in front of me. It’s pretty awesome. MANDY: It’s time to thank another of our $10 level patrons, Dan Sherson. He is from Melbourne, Australia and @dansherson on Twitter. Thank you, Dan, and thank you to all of our awesome contributors. If you’d like to support us, please visit Patreon.com/GreaterThanCode and that link will be in the show notes. As soon as you pledge even just a dollar, you will be invited to our Patreon-supported Slack community. So, if you want to get in on that and be able to ask questions in there prior to the shows, then please sign up. SAM: Thank you, Dan. MANDY: I’m curious about curriculum. You have your elementary students, you have your intermediate students, you have your high school students. What kind of curriculum do you start with at, say, the elementary level and then what kind of things are the high school students going into later as they’re learning to code and stuff like that? DAVID: Let me start with the high school level and then I’ll go back and talk about some stuff that’s happening at the elementary school and intermediate school level. At the high school level across my entire county, we have two classes. One is kind of an Intro to Computer Science; the other is Computer Science AP geared towards taking the Advanced Placement exam. Both courses are in Java for historical reasons – the AP exam is designed in Java. While I don’t think Java is a great teaching language, I think it’s a capable language for them to be able to learn something that’s going to apply in the real world for them. The material is really great. Again, it starts with some Karel the Robot type material where they have to build software robots that traverse graph paper and perform certain tasks. They then get into learning various kinds of algorithms and doing things with arrays and we get into graphics and drawing and that kind of stuff at the high school level. For the past few years, we’ve organized high school students to volunteer to go back to their elementary schools and teach the Hour of Code. So, during Computer Science Education Week, now it’s not just me at one high school, it’s 20 or 30 students going back to six to eight elementary schools. And that is helping a lot. The teachers at the elementary school level don’t necessarily feel comfortable teaching the stuff. The students quickly outpace their level of knowledge and they don’t want to look like they don’t know something in front of their students. CORALINE: You touched on the fact that they’re learning Java and you don’t think that’s a great first language. What do you think would be a great first language for high school students to learn? DAVID: Let me explain why I don’t think it’s a good teaching language. On Day 1, we give them a template for what they need to write. And they open it up and they write some code and they want to understand what they just wrote. “So what does public mean?” “Don’t worry about that yet, we’ll cover that later.” “What does static mean?” “Don’t worry about that, we’ll cover that later.” “What does void mean? What does this R string bracket thing do?” And it’s like 90% of what’s on their screen, we’re telling them to ignore. They write a few lines of code that they understand but I think that that sets off that ‘this is complex and it’s going to take a long time to learn’ and there’s a lot of stuff that you just have to take for granted. In a language like Ruby or Python where I can type something like puts “Hello, world!” and save it as a file and run it, there’s less mystery there. And I think that is a better teaching language in that I get it to remove several steps of complexity, the amount of stuff that you need to understand anything. And I think there are many times in class where I will illustrate a concept in Ruby and then they write it in Java. SAM: Speaking of illustrating concepts in Ruby and having them write it Java, that actually reminds me of one of the ways that I actually got through my computer science education which was like especially for data structures classes where I was supposed to hand in homework in C++. I would actually write the thing first in Python because that’s the fastest language that I knew at the time. I would write it in Python and it would take three or four hours and then I would re-implement the solution that I had discovered in Python in C++ and it would take 5 to 9 times as long to re-implement something I already had. That’s really interesting that you used that approach to teach as well. DAVID: A great example is when dealing with collections in Ruby. I can have an array of values and I can say .each or I can say .filter and trying to do the equivalent thing in Java, you could do it now in Java 8 but we don’t teach that syntax. We don’t teach that stuff. We teach you have to have a ‘variable i’, you have to have a ‘for loop’, you have to have another data structure that’s going to collect up whatever you’re testing and there’s just more moving parts in the Java world. I don’t want to turn this into a bash on Java because I think the fact that we’re teaching. Some of my students are planning on joining the workforce right out of school. In which case, especially in the Northern Virginia area, Java is a valuable market skill. So, I think it’s valuable that they’re learning that. I just think that we have better things that are more capable of teaching languages now. And Java in its day was a big revolution as well in terms of the simplicity and creativity and I think we can do the same thing now with Ruby or Python. CORALINE: I’m kind of curious. I know a lot of people who got to start in software development by having their own WordPress site, maybe through their blog. And they found some functionality that they wanted that they can find a plug-in for, so they got their [inaudible] with PHP. I think PHP in general is a good language and a lot of people make a great living programming in PHP. I think it’s a language that a lot of people begin with. I’m curious if you have students, maybe at the high school level, who have already dabbled in programming and what languages they’ve been exposed to and how that translates into the work that you do with them on the Java curriculum. DAVID: The most dabbling I’ve seen is things like HTML CSS, maybe a little bit of Python. And then students that have felt inspired to try to write an app. In which case, they’ve played around with something like Objective C or the stuff for Android which is very Java-like. The [inaudible] is very Java-like. So, there’s a smattering of different skill sets that people are coming to in high school. Every now and then, I’ll find a student that has just an unbelievable level of knowledge on stuff. I ran into a student recently that I was demoing some stuff to and we were playing a card game called SET. Actually, you might have seen it at Ruby DCamp, Sam. I use that now to teach some concepts about game board evaluation and some great stuff like that. I have a student who looked at that and said, “Actually, I wouldn’t do that in an object-oriented language at all. That seems more functional to me.” And I was blown away that there was any kind of understanding of those concepts at that level. MANDY: That pretty much covers the high school. Can you go back to the intermediate school, elementary school level curriculum? DAVID: Sure. At the intermediate school, most of the kinds of things that are happening in my county are extracurricular classes that are run after school. There’s one high school that’s teaching class that they call C.A.M.S. (Coding at Middle School) and that’s mostly Scratch stuff. In fact, I am going to be at an event in just a couple of weeks at the middle school to actually see presentations with my students on what they’re learning. There’s a hope that that material can spread across all of the intermediate schools because I mentioned a little bit we’re teaching at the elementary school level. They get through the intermediate school, so I hope for that kind of exposure. The students that are learning that are going to get to the material we have at high school and be like, “That’s it? Really, you’re teaching this material again?” So I think teaching the CAMS material across all of Loudoun will raise the bar for the educational material at the high school level quite a bit. CORALINE: Can you talk about what Scratch is, for those who aren’t familiar with that? DAVID: Sure. Scratch is the language that looks like any other common language these days. But instead of actually typing it out, they are colored blocks that you drag on to a workspace and they click together like little Lego brick. So, there’s actually a little physical click sound. It is impossible to make a syntax error because of the way the blocks connect and the shapes that they have together. And you basically use these scripts to automate actors on a stage. For instance, one of my sons wrote a game where he controls a little cat with the keyboard. So you can move the cat left and right and watermelons fall from the top of the screen. SAM: [Chuckles] DAVID: When the watermelon hits the ground, the game is over. CORALINE: It happened to me in real life. DAVID: [Chuckles] Yes, exactly. You have to move the cat over to make the watermelon bounce off your head. And he keeps increasing the difficulty of the game by having more and more watermelons that you have to juggle back and forth and bounce off your head. And it’s really neat because each one of these little scripts is just a little bit of code attached to that graphic. And each little bit of code is understandable but then the whole thing animates together onto the stage and generates complexity, that you don’t necessarily see from the little bits of code. But it’s great because instantly, the students can learn enough to write a game and then they have to learn about keeping score and all that kind of stuff. And I think that is a barrier to CS education at that level. It’s not like it was when I was a kid where you could go down to the bookstore and buy a book with 20 pages of code in it and sit there for an afternoon, typing the code in just to be able to play Hunt the Wumpus or a guessing number game. They want something with a richer graphical experience and Scratch really gets to that quickly. It’s a really great tool to get students engaged. CORALINE: Do you find that games are a great entry point for programming? DAVID: I think children want to play with what they know. Even with my own kids, I started with this cynical view of educational games, but I’ve seen some great gamification that teaches children all kinds of concepts. And I think that starting with some kind of expectation that they can write their own game is a great way to introduce kids to the idea. MANDY: My daughter got into playing Minecraft. I look at her and I watch it. She is 7 1/2, I have no idea what she’s doing and I have no idea — does that even really do programming? I heard it does. DAVID: It can. Minecraft is a great entryway. Minecraft has taken the educational world by storm in many ways beyond programming. Of course, it’s just another first perspective run-around-the-world game. It’s also kind of an immersive Lego game. It can stimulate a lot of the same kinds of learning that playing with Lego does except you’re immersed in the environment and when it turns nighttime, the environment tries to kill you. SAM: [Laughs] DAVID: So, there’s some great concepts just from the physicality of the Lego-ness of the game. Outside of computer science, it’s used to replicate just some Math concepts like geometry or I’ve seen things like the Parthenon recreated to get you to wander around that and it’s some neat experiences like that in a blocky style game. What really impressed me with Minecraft, though, was the notion of the redstone in the game which is basically computer circuitry. SAM: Yeah. [Chuckles] DAVID: You can find YouTube videos where people have written complete simulations of microprocessors from the 1980’s in Minecraft redstone. My own son made a little thing with redstone where he — well, imagine I have three boys. They set traps for each other all the time. He’ll do things with redstone where he’ll start a Minecraft, create a situation in his world where the redstone is going to cause explosions and you step on this pressure plate and it triggers something falling on you or something will shoot at you or whatever. And then he’ll leave the person set in the trap and turn off the game. So when their brothers come back to play, they turn it on and then they’re in the middle of the trap. So, there’s some really neat things you can do there and you can build really, really complex with redstone and levers and pistons. CORALINE: I’ve seen calculators built in Minecraft. It’s pretty cool. DAVID: Right. And just to sit there and watch how it works, it’s pretty amazing stuff. And then of course, once students want to start modifying Minecraft itself, you have to learn a language like Java to be able to write plug-ins for the game. There are a couple of books out on that as well. CORALINE: So Dave, we just want you to know if you contribute to the Greater Than Code podcast at Patreon.com/GreaterThanCode, you get access to a community Slack channel. And one of the channels that we have in that Slack community is guest questions. So, we actually have some questions for you, if you’re ready to answer those. DAVID: I’m ready. I’m also proud to be a contributor. CORALINE: Great! Thank you so much. SAM: Thank you. CORALINE: Darin Wilson asked: “K-12 is pretty broad age range. How do you tailor the curriculum for different ages? Do you find that there are things you can teach to older kids that definitely don’t work with younger kids?” You touched on some of these in the curriculum but — DAVID: I can give some really good examples of that. Of course, the first thing is that because I’m working so much through the school system, the students are already grouped into ages by class. I’m dealing with a group of students that are pretty well set in that age. That’s not true with some of the extracurricular stuff I do at libraries, which I can talk about as well. But I’m generally working with a group of 3rd graders or a group of 4th graders, that kind of thing. Or a group of high school students which tend to be 10th or 12th, not many freshmen take the course. One thing we’ve noticed is that especially with the Hour of Code material, the way they’ve adapted that over the years to approach the different levels of interests, there is even curriculum now down to the Kindergarten level where they use arrows to be able to drag and drop and connect arrows together into these little scripts to be able to program stuff. At the next level once students can read, we found that they often could not put themselves in the perspective of the character. So, I couldn’t say turn left and move forward. If I were facing north and turn left and move forward, they didn’t always get why an arrow was not moving west. So, the scripting language at that level tends to say move up, move down, move left, move right. At the 3rd grade level, they get the idea of I can imagine myself that character and have that character turn left. And about the 4th grade level, they understand not just turning left and turning right but the notion of 30° and 60°. And when you can do degrees like that and looping, you can start to do Spirograph-type graphics. And it’s really neat to see their little minds bootstrapped through all of these levels. Now I’m seeing intermediate school students struggling with the concept of a virtual machine. When they really get that, they’re just blown away. Like, “Wow! It’s like a computer but it’s like a fake computer. And I can download and I can copy and I can give it to my friends.” It’s just really neat to see the mental acuity and steps as they bootstrap. Although I’ve taught concepts like recursion using the Towers of Hanoi game down to kids as young as 4th grade. I think that when children are ready to accept abstract thought, we don’t give them enough credit for what they’re able to understand at young ages like that. MANDY: How can you tell when children are ready to understand abstract thought? DAVID: That’s a great question. Even before I was involved in this, I read this book called ‘What’s Going on in There?’ It was basically the mental development of children up until about 5th grade. I got some expectations of what to expect from my own children. No two children are alike and I see that maybe more than most parents because I have three children that are exactly the same age. And I can see that the one is a little better at sports, the one is a little better at spelling. Every kid is unique. Again, I’m going to plug the materials available at code.org, they have really tuned that well to different age ranges where children can self-select where they’re comfortable learning, what they want more of. Some students are going to be ready to dive into typing their own code, some students might have trouble reading arrow-based language and some of the word-based language. There’s enough material there based on age range to be able to select what your kids learn and how concepts are represented. CORALINE: That kind of ties into a question by Jabob Stoebel who asked: “How do you handle multiple skill levels? And how can you set a culture where kids who know a little more won’t intimidate those who are relatively or completely new?” DAVID: The biggest place where I see that is at the high school level where we get 20 to 25 kids in a classroom. Some of them, it’s their first time ever working outside of a word processor program. Some are well-versed in the inner workings of Linux. So, very wide discrepancy. In general, they all start out with the same curriculum. Some breeze through it, some struggle. We generally either have extra material for the students that are breezing through it or we’ll send them to something like Project Euler or a website called CodingBat and have them do extra stuff. Some students, we have them pair or walk around or help like you’re a TA in the class and that tends to work really well. I don’t know if it’s just the fact that they’re self-selecting into this class or if it’s true in high school in general, but my high school does not seem as clicky as the world did when I was in high school back in the 80’s. It’s really encouraging to see. CORALINE: It’s interesting you mentioned students being TAs. I had a great experience. I went to a pretty crappy school. Honestly, my school was in the middle of nowhere. We didn’t have a lot of tax revenue from property taxes because it was kind of a depressed economy there. But we did get a lot of funding from a state for computers and this was in the 80’s, so that was pretty rare. We actually had computers in every classroom and a full computer lab in the 80’s. SAM: Oh, wow! CORALINE: When I took first computer literacy class, I remember the first assignment, we had to simulate a coin toss. It was just simple to do with a number generator and that was too easy for me, so I made it graphical. I actually made a picture of my hand on screen and the sun flew up and the coin flipped in the air and the [inaudible] will tell you what the coin toss was. DAVID: Very cool. CORALINE: My teacher saw that and immediately it was like, “This curriculum is not going to be a good fit for you. I’m going to come up with something for you individually and I would like you to help teach the class.” And I can really say that that individual attention is probably why I continued programming and probably why I’m a software engineer today. SAM: Wow, that’s great. DAVID: Along the same lines, when I had the high school students go back to their elementary school students — and to teach is to learn your skill from a different perspective. When I see my high school students teaching and what they see that these kids are capable of, I can see the confidence build. I can see their pride as now they’re sibling the adults in the room with these elementary school kids and it’s a great feeling for them. So, I can see exactly what you’re talking about there. CORALINE: It’s really great. DAVID: Back to kind of the difference in skill set. I don’t find that — there are certainly concepts that children don’t get until they’ve had some equivalent concept in an Algebra class or a Math class. But I think that the larger barrier to teaching kids is when I rely on some kind of knowledge that requires just more knowledge of the world. Like with the younger kids, I can’t use a deck of cards as an example. If I would ask, “What are the four suits in a deck of cards,” the elementary school students don’t know. The intermediate school students might have a chance. Most high school students know that. And so, it’s useful to be able to have the kinds of concepts. If I ask them for the names of the Pokemon characters, everyone in the elementary school is going to know that. That reminds me it was also very useful with the problems that the Pokemon Go game has. I was able to use that as metaphors for scaling and computational complexity and all that kind of stuff with those classes as well. SAM: Going back to what you said about your experience, Coraline. Another thing that jumps out at me is that you had access to computers at all or fairly early on which seems like another factor in what you’re saying at the high school level, Dave, which is that I’m guessing some of those kids who are coming in with intimate knowledge of Linux have got a Linux machine probably in their bedrooms, or as other students might not have had as much screen time. And over the years, it seems like that really piles up [inaudible]. Is that factor in what you’re seeing or is there other stuff going on as well? DAVID: That is a little bit of a factor. In fact, I should mention that one of the reasons why is started my non-profit was because I had a company that was wanting to donate to me a bunch of computer equipment. I got about 20 2012-era Macbook Pros that were previously developer machines. So they have 16G of RAM on them. SAM: Nice. DAVID: And I got about 70 Dell Inspirons for about 2012 as well. And those were not nearly in as good a shape. Many of them were broken. But I was able to fix and patch and turn the machines and had a couple of high school students volunteer and some other helped clean them up and put stickers and stuff and managed to get two classrooms with the computers out of those, then about 10 loaners that I’ve given out to some students as well. The county I live in, I have to admit, is a bit privileged. Loudoun County is one of the richest counties in the country. But it is kind of in this weird place where we’re right next door to Fairfax County which has a fantastic school program. There are students learning things in high school there that I don’t think people learn in college in terms of Computer Science degrees. There’s literally an [inaudible] school there that offers a college curriculum in Computer Science. And then being in Virginia, there are plenty of counties that don’t have anything. They’re boostrapping trying to find blackboards for the schools. So, there are companies that want to bet on a winner, they bet on Fairfax County. There are companies that want to do the most good and they give resources to some of the more disadvantaged counties. Loudoun County is kind of in the middle in being fine in second place but what it means is that the disadvantaged students in our county are more at the disadvantage because they’re not getting a lot of the [inaudible] systems that they might get if they were in a county that was getting better corporate support, donation support. CORALINE: I have to interject that it’s really fucked up that the quality of education you get is based on the property tax value. That’s ridiculous. That just angers me so much. DAVID: Yeah. And there’s another non-profit in Virginia called Code Virginia that is trying to raise the bar for Computer Science education across the state which I think is fantastic. I decided rather than try to bit off more than I can chew, to try to just focus right on my county. I’ve been able to make a big difference with some disadvantaged students in my county as well, give them computer equipment that they otherwise wouldn’t have access to. CORALINE: Speaking of the equipment, our last question comes from Ben Hamill. He asked: how do you deal with equipment? Not every kid rolls up with Arch Linux installed on their Macbook Air, presumably, at least for as long as developers are struggling to use the Macbook Airs and until they escape to another system. SAM: [Laughs] DAVID: The first thing is that by working within the school system, the schools often have equipment already. And while much of the equipment the students have access to, we can’t install stuff on. Plenty of them do have computer labs for software or for computer science where we can install stuff or where appropriate tools were installed. So, that’s a great leveling platform in that there are resources available at school. We have great resources through our county as well. In fact, the Loudoun County Public Library actually has a subscription to O’Reilly Safari. So, I can point my kids towards O’Reilly technical books and they can look stuff at the [inaudible] which is fantastic. So, that settles some of the differences. Through the computer donation that I got, I’ve been able to give several students computers that they otherwise wouldn’t have access to. There’s always going to be the wealthier student that has access to every electronic device imaginable. But I think once they have some base level of access, that’s enough to learn the skills of software engineering. I mean, available for free to use in our library is more computing power than the [inaudible]. There’s plenty of resources there for people to learn this. MANDY: Do you feel like the kids can use tablets just as well as a computer? Or do they need specifically a computer with a keyboard or would something like a tablet suffice? DAVID: That gets into kind of a division between what’s computer science and what’s computational thinking. I think that on things like the iPad and other tablets, there are some great applications for computational thinking and learning some basics of computer science. In fact, I could get out my iPad and look at a few. I think that for the kinds of things that we often think of when we talk about real software engineering skills where I want to write some code, compile it, and end up with an executable that I might want to put on, something I’d give to somebody else, the tablet space just isn’t there for that part of the skill set. But absolutely, in the computational thinking realm and the basics of software engineering, a lot of the kinds of things I’m talking about Scratch, Blockly, Hour of Code, that is all possible on an iPad. Some of the apps I use with my own kids for developing on my iPad is one called Robozzle which is kind of a functional language that has to do with moving shapes around the screen. There’s one called ROBLOX which I learned about from a high school student who had written his own Minecraft game. It looks a little bit like Minecraft but you actually have more control over the physics of the universe with ROBLOX. There’s Move The Turtle which is a lot like the turtle graphics stuff I was talking about before and the stuff with Karel the Robot. And then there’s a game that is not necessarily about coding, it’s about computational thinking and specifically algebraic concepts called DragonBox which teaches kids the basics of Algebra like balancing and cancelling and refactoring equations by talking about dragons and different kinds of animals and eating each other. It’s really a powerful metaphor for using those concepts. MANDY: That sounds really cool. I can’t wait to check some of those apps because my daughter is just one of the kids that [inaudible] where I can just hand her my computer that I use for work and be confident that it’s going to come back in one piece. So, I do have her play around on a tablet. So, I’m really excited to take a look at those resources. Thank you. DAVID: Another thing I’m a big fan of are games and particular kinds of board and card games where it’s a game of perfect information. It’s not like Poker where you hide cards and you don’t know what the other person is holding, but a game like checkers. Connect Four is a great one where all the pieces are out there to be seen, turn based game where there’s very little randomness. There can be a deck of cards that are shuffled and people draw cards, that kind of thing but not something so random like Chutes and Ladders that sits entirely and roll the dice that make the point of the game. Something where you actually have to evaluate the state of the board and what the other person’s move would be. Any game like that is fantastic in terms of just expanding your computational thinking skills. MANDY: Very cool. SAM: Hey, listener. Yes, you. I’m talking to you. If you like this show, it would really help us a lot if you would take a few moments to go over to iTunes and leave us a review. We’ve set ourselves a possibly [inaudible] goal to get ourselves in the new and noteworthy list and your review would really help us out with that. Thanks. CORALINE: Before we wrap up, Dave, I think it’s really great that you are so involved in your local community, in your county with these programs and these curricula and your own non-profit. I find it really inspiring. So, how can other people, how can our listeners get more involved in their communities to make a difference in their space. DAVID: If you’re listening and you’re in Loudoun County, you can always contact me and I can help align you with some stuff. I have some volunteer opportunities for people who are asking me for help right now. But wherever you are, reach out to your schools and look for programs like the WatchDog Dad program that I mentioned earlier, look for your local parent-teacher association. If you volunteer with them, they may have opportunities for you. Look for that website that tealsk12.org that I mentioned, the TEALS volunteer opportunity at the high school level. But even if there’s not any formal program like that to get involved with, reach out to your local school. Talk to the principal or talk to a Math teacher and say, “Hey, I have some software engineering skills. Is there a way I can help?” Your local boy scouts or girl scouts, in particular we were talking about gender disparity earlier, I think that where the boy scouts have three different merit badges that have to deal with technology in one way or the other. The girl scouts don’t have anything quite equivalent, but yet they have merit badges on things like Huge for Beauty. MANDY: We have one and as you said before in the beginning of the show that it’s the Make Your Mama birthday card with Microsoft Paint. It’s very, very disappointing. DAVID: I was talking with a mother who was a Girl Scout troop about there is a Build Your Own Merit Badge program in the Girl Scout curriculum. And we were talking about literally using the books from the boy scouts to do some of the electronics and coding and do something equivalent in the Girl Scout curriculum that way. A local Girl Scout or Boy Scout troop might be looking for volunteers. There’s your local library if you would just want to say, “Hey, let’s have a computer teardown event.” Your local makerspace might have something. There are a lot of different community activities that you could find. And if there aren’t any that you can find, then just get up a little bit of gumption and start one because people will rally around you quickly to make stuff happen for their children. CORALINE: How do you prevent burnout? You talked about it at the beginning like the school being really hesitant to work with you because they didn’t know like what kind of commitment you’re going to make, if you going to disappear. As a volunteer, how do you demonstrate that commitment and how do you keep going and how do you avoid burning out from over-volunteering? DAVID: That’s one of the great things about the way I’ve been doing this was by being an assistant to teachers in that there are times that are just completely impossible for me to make school one day. In fact just last week, I was not able to be at school for an event with a number of students who are actually building a computer like chips and soldering irons and building a 1980’s era Z80 computer. I was unable to be there on short notice because of events that happened at my work. So, I actually dropped my toolkit off the day before, recorded a 5-minute YouTube video and posted that up and the teacher showed that to the students and they ran with it. But the fact that I’m there as the assistant means that there are times where I just can’t be there. So, try to take a secondary role is one way of dealing with burnout. For me, my feeling of burnout is not when I’m working hard but when I feel like I’m working hard without making progress. In fact, one of the reasons I love Rails was that I was able to work so much harder because the amount that I could do for my client with a given effort was so much greater. I will burnout if I’m in a team of five people and we’re arguing over build tools all day long. I will burn out in less than 8 hours if that’s what I’m doing. My volunteer work, for me, is exactly the opposite of burnout. I feel like it’s recharging to me. There are times where I haven’t been able to get to school for a week or haven’t met with some of my students extracurricularly for a while. And I just feel like I need to do that, I need that recharge. So, maybe I’m not the person to ask about that. CORALINE: At the end of every show, we’d like to reflect on what we’ve talked about and maybe think about changes that we want to make in our own lives or activities we want to start or provide a call to action to ourselves as well as our listeners. Mandy, did you have any thoughts on today’s episode? MANDY: I’m really excited. This is something that I’ve wanted to get my daughter into for a while because she’s shown interest. She’ll tell me her favorite subjects are Math and Science. And I’m not a programmer, I’m working on basic client stuff and skills and stuff like that, but I’ve got some really great resources out of today from Dave and I can’t wait to sit down and look at them. I also kind of wanted to see if there’s anybody in the Central or Southern PA region that is listening to this show, please reach out to me because I plan to do something with getting kids into technology encoding but like I said, I don’t have the programming skill sets. So, if you need help, I’d be more than happy to get involved. CORALINE: How about you, Sam? SAM: I’ve had this idea in the back of my head for years and years that it would be nice to go out and teach. Since becoming a parent myself, it’s become a little bit more in front of mind that I’d like to go and help teach perhaps in the school that she will wind up in. But I hadn’t really given it much thought beyond that. It was really great, like you said Mandy, to just be made aware of the resources that are out there because there’s a lot more that I hadn’t really known about or even thought might be there. So when I do decide that I want to contribute and get into that, I now have some much better ideas about where to go and how to get started. Usually getting started is the hardest part for me. So, having that thing that I can at least chew on and go, “Okay, maybe I can take hold of the high school principal,” is going to be a good way to start it. So, thank you. CORALINE: I appreciated the opportunity to be reminded of and reflect on my own privilege growing up with access to computers in the home and access to computers in my school, and I can definitely see how that led to the very lucrative career that I have today. And I would love to find ways to get more kids from disadvantaged areas the equipment and the education and curricula that they need to also pursue this career path, if that’s something they’re interested in. But you touched, Dave, on code as literacy. I don’t think you quite [inaudible] that way but that’s how I kind of boiled it down. And I think it’s important to remember that not every kid who goes to a program like this is going to turn out to be a software engineer. But it’s good for everyone to understand how the world works and how computers work because they are such a dominant force in our lives. I also want to give a shout out to my company, GitHub, that has been participating in a wonderful program that’s put up by the Department of Housing and Urban Development called ConnectHome which actually puts technology in the hands of kids from underprivileged neighborhoods, inner cities and so on. We’ve spent millions of dollars in that program and I think that’s really great and I would like to see more companies do that. Dave, do you have any reflections? DAVID: Yeah, I do. First of all, I should say we didn’t mention about GitHub today at all. I actually have some students using GitHub and that was quite a challenge to get students who are doing personal projects independently for turn-in that then they never really touched again to get them to see why they would get something like GitHub. But now that I have some student that are doing year-long Science research projects, they’re using GitHub and they’re understanding it. So, it’s great to have that breakthrough. CORALINE: We’re going to have something for kids in the near future. I can’t really talk about it but that’s definitely on the minds of people like GitHub. DAVID: You have the student developer path already and that’s phenomenal for my students. So, my takeaway is that I’ve always thought that one of the best ways to learn is to teach. It’s why I started the Northern Virginia Java user group in the 90’s and then the Ruby user group in the early 2000’s. And teaching at the high school teaches me so much about my own career path. And then sitting here talking to you about it today is teaching me about my own teaching in ways that is causing me to think about and reflect on what I’m doing. So, I appreciate that opportunity to do this with you today. CORALINE: It’s been really great having you on the show. I really appreciate you taking the time to talk to us and really appreciate the effort that you’re putting in to expose kids to programming at a very, very early level. That’s really great. We’re going to wrap up now. I want to say one more time, we are 100% listener funded at this point in time. If you would like to pledge to support the show: Patreon.com/GreaterThanCode. We’re currently at $741 per month out of our $950 goal. We are also open to corporate sponsorships. So if you value this podcast and you’d like to see us continue, you might want to talk to your company about supporting us as well, you get a 30-second spot to talk about your company, whether or not you’re hiring, and the air time to get your message out there. So, thank you Dave, thank you Mandy, thank you Sam. And that is it for this week’s episode. Thank you all so much.