This article is by Austin Gandy, one of our exciting programming mentors. He is a junior at UC Berkeley, majoring in Computer Science, and has been mentoring for one and a half years.
With a look of nervous anticipation on his face, Nico ran the program and input a sudoku game. In under a second, it spit out an output. To Nico’s delight, his program solved the entire puzzle! Nico’s feeling of accomplishment was mutual, for we both accomplished something — this was the culmination of hours of work over the past six months helping him learn to code.
In December 2013 I came across a Facebook ad for a company called Breakout Mentors. They were looking for enthusiastic mentors to conduct one-on-one tutoring sessions with young students interested in learning how to code. I have always been interested in teaching, and as a computer science major at Cal, the job seemed like a great fit for me. However, what started as a simple part-time job quickly became more meaningful.
Mentoring has been rewarding, challenging, and liberating. I am personally responsible for my three students’ progress and it has been extremely exciting to see all of them grow over the past year. Any time one of them makes a significant stride in their learning, I am as excited as they are about it.
The Challenge and Joy of Teaching
Breakout Mentors doesn’t force a curriculum that each student must follow, which frees the mentors to adjust their teaching to fit each student’s individual interests and abilities. This makes mentoring a creative process that is ever-changing and fun.
My excitement stems from the challenges that teaching presents. Each student has his or her own unique learning style and interests, so I must come up with multiple ways of explaining concepts. I am confident in these kids’ intelligence, so if they aren’t understanding something, it’s on me to find another approach that will allow them to understand.
Examples really work wonders for concepts that take a while to sink in. For instance, I might explain a list data structure as similar to a shopping list, and then a for loop as the process of getting every single item on the list until no items are left to get. Explaining concepts in terms that students can relate to their own life or experience makes a world of difference for comprehension.
However, the effectiveness of these examples can vary greatly from one student to another. Let me illustrate just how unique each student is.
Using Scratch for a 9 Year-Old Girl’s First Coding Experience
Julia didn’t have any previous experience with computer science, so my goal was to provide a fun way to learn the fundamentals. I introduced her to coding using Scratch — a drag-and-drop programming language developed at MIT for kids to learn through making exciting games and animations. Julia’s experience with the programming fundamentals from Scratch would prove to be invaluable later when we made the switch to Python.
Julia really enjoyed the creativity of Scratch. I would begin projects by showing her an example of a final product and then would encourage her own version with creative graphics and her own feature ideas. With every session, I introduced increasingly more involved projects and she had fun rising to the challenge to put her own spin on things.
Through these Scratch projects, she gained experience with the core concepts of any programming language and was able to apply them in variety of situations. After about seven months of sessions with Julia, I decided that she was ready to take on Python, a general-purpose, high-level programming language.
The transition has gone very smoothly — we’ve been exploring graphics libraries to make games like pong. It brings me great joy to see Julia continue to improve and I can’t wait to see the strides she makes in the year to come.
Searching for an Interesting Coding Focus
Cole didn’t have any computer science experience either, but at 13 years old I expected he would move fast. As a result, we started with Python from the get-go. After we went through a couple of text-based projects using Python, Cole told me he was looking to do something with a bit more tangible — he wanted to learn web development instead.
Cole really enjoyed the switch. We started with HTML and gradually built upon that foundation with CSS, JavaScript, and jQuery. Recently, we’ve been learning Django — a backend web framework written in Python. It has been great to be able to quickly pivot to something that Cole is more interested in while still reinforcing important computer science concepts.
This is what I really love about not having to stick to one curriculum for all of my students. I’m so happy I was able to keep trying new things with Cole until we found something that really matched well with his interests and learning style.
Constantly providing challenges for a 13 year old natural
Nico had a bit of programming experience before we started working together. As with Cole, I started teaching him in Python. After exposing him to the basics of the language, it became very clear that Nico enjoyed and excelled at solving algorithmic problems.
The challenge for me as his mentor lay less in explaining concepts, and more in making sure he was consistently being challenged enough. I did this by scouring the internet for increasingly difficult and interesting problems to solve, and by basing his lessons loosely on the curriculum of Cal’s introductory computer science class — CS61a.
By developing a conceptual understanding of computer science ideas while improving his problem solving skills, Nico progressed at an astounding rate. He eventually wrote the aforementioned sudoku solver, which even incorporates elements of artificial intelligence.
We also have explored object-oriented programming and made a two-player strategy board game based loosely on a project in the data structures class at Cal. I enjoy every session adjusting to challenge Nico just the right amount and there are no limits where he can go next.
Looking back on a year of mentoring
The challenges that come with teaching an extremely diverse set of students have instilled in me a great sense of fulfillment. I’m looking forward to seeing how far my students progress considering how much progress they’ve made in their first year of programming.
I love helping my students master difficult concepts and, most of all, I enjoy celebrating with them when they make large strides. It’s truly a delight to see them grow to love the subject I’m so passionate about.
In addition to watching the students progress, I’ve noticed how much I’ve grown as a teacher since joining Breakout Mentors — everything from providing concise explanations and examples to identifying engaging projects that are perfect for each student.
From witnessing my students’ growth to experiencing my own development, Breakout Mentors has provided me with an extremely positive outlet to combine my computer science major with my new-found passion of teaching.