Imagine being a high school freshman walking down the halls of your new school on the very first day. You somehow make it to first period without becoming epically lost in the unfamiliar halls. Finally, the bell rings, signaling that you've officially made it through your first high school class. Taking a look at your schedule, you see your next class is Exploring Computer Science. You think: "Wow, computers! This should be fun!"
For me, this idea and feeling of fun didn't end of that first day. It continued throughout the year as a student of Mr. Allen's Exploring Computer Science class.
I first met Mr. James Allen at an Akron Linux User Group meetup this past summer. He had learned that a future student of his (me) was presenting on Scratch and the Raspberry Pi and took the time to see my presentation (about an hour drive!). That's a dedicated teacher. That's Mr. Allen.
In this interview with him, I asked some questions about how he teaches computer science to his students at the all-girl school Hathaway Brown. He's telling kids to get to work! And, his teaching motto is that the best way to learn computer science is to do stuff with it. He encourages educators to give kids creative projects to pique their interest in computer science by using open source programming languages like Scratch. He says giving kids the tools they need to make things is the best way to teach computer science, especially to girls.
Photo by Kim Ponsky.
How did you get into computers?
My dad brought home a 'portable computer' from work when I was five or six years old. First of all, understand that portable back then means something quite different than it does now: this was a 30 lb suitcase computer. I was fascinated by it, though I never got much of a chance to play with it. When I was seven, we were fortunate enough to buy our first family desktop computer, a Packard Bell 286 with a VGA card. It was awesome!
How did you get into teaching computer science? Did you start with computer science and then got into teaching, or did you start teaching and then get into computer science?
I majored in computer science engineering. After college, I worked for a software development company, but I just wasn't passionate about our work. I taught a community education course for middle schoolers interested in making video games, and that's when I realized that teaching was something that I could be passionate about. Computer science is something that I think is hugely important to understanding and shaping our society, so it gives me great satisfaction to be involved in teaching it!
Computer science can be a dry subject if taught the wrong way. What do you do to make it interesting and keep students engaged?
The most important thing is to frequently give students opportunities to create things. Many computer programming courses focus on solving problems that only involve math or strings. While those types of projects are valuable in terms of practicing algorithm development and gaining a deeper understanding of the inner workings of a computer, they aren't great introductory material. I use tools such as Scratch and Python to give students a lot of freedom while exploring exciting new concepts.
In computer science class, we do a lot with Scratch. How do some of the basic concepts of Scratch help prepare us for more complex languages like Java for FRC?
Computer programming is ultimately about identifying the steps to solve a problem. Scratch has control structures such as loops and conditional statements (if/then/else), variables, and even the concept of objects with their own methods. In the computer science classes I teach, we first see how Python implements these concepts, and then transition to Java. This further emphasizes that it's not about the specific words used in a language as much as the larger concepts, which apply to many languages/implementations.
Is Scratch just about programming or do the social aspects help students learn about open source and team development?
Scratch can be about both. I haven't used the collaborative features of Scratch that much, but the fact that they are there means that students can explore them on their own. I love the remix functionality built in—the fact that anyone can view the code behind a published project is great from an educational standpoint.
Should educators teach concepts differently to inspire girls as opposed to inspiring boys or co-ed classrooms?
Yes. The way educators have been teaching computer science has resulted in the field being dominated by men. I think courses crafted specifically for girls have the potential to increase female participation later in life.
What do you see as the future for computer science education? What are the challenges? What can be done now to address these future challenges?
I think computer science will become a required course in middle and high schools. The concepts associated with it are applicable throughout life: breaking a problem down, identifying the optimal way to solve it. It will be challenging to figure out how that fits in with established curricula. It will also be difficult to convince parents and administrators that all students are capable of at least a surface level understanding of computer science concepts. Increasing student and parent exposure, through large scale events such as Hour of Code, will certainly go a long way toward easing these challenges.
What advice do you have to parents and educators to inspire youth to be more involved in open source and STEM?
Make sure they have the tools necessary to explore computer science. Give them the opportunity to build and create things with computers. And try coding yourself—it's never too late to start learning!
James Allen is the Upper School Technology Department Chair and Director of the Center for Technology & Invention at Hathaway Brown School. He has been committed to increasing female participation in IT ever since his college days when he was a founding member of Girls in Electrical Engineering and Computer Science (GEECS) at the University of Michigan. When he isn't teaching, he enjoys playing bass and acoustic guitar, reading post-apocalyptic fiction, and collecting classic arcade games.
See the full list of Youth in Open Source Week articles.