Computational Thinking QA - SCNA 2017

Computational Thinking QA - SCNA 2017

I didn’t learn to program when I was five, but I have been developing software for the past 13 years. I am the owner of Tested Minds, where along with consulting, I built a product called Literately to teach my husband and friends to read and write Farsi. I enjoy watching my two sons apply algorithms and the basics of computer science to the real world.

Topic: Computational Thinking

Does a five-year-old know something about computer science that you don’t? Maybe, if you think you need a computer to think like a programmer! Inspired by Seymour Papert’s classic “Mindstorms” and “Turtle Math”, Sarah’s been experimenting with teaching her five and three year old sons some techniques to think like a programmer. In this talk, we’ll see the results.


Your abstract presents this interesting idea about separating computers from computer science, and using your children as kind of an example of how that can be the case. Can you expand a little on this distinction, and how you’re teaching these computer science concepts separately from computers?

My talk is going to be about computational thinking. The main thing I want to communicate with the audience is that you don’t need a computer to think computationally, because computation comes before computers. Computers just make it much faster.

People might think computational thinking starts with STEM education efforts in K-12 and might not spend time trying to teach younger kids about math. I could have been one of those people, but when we were expecting our first child, Armin, my husband and I started watching a lot of documentaries about parenting and early childhood development. We were astonished to find out that the kids start reacting to mathematical situations a few months after they’re born!

One epiphany came from a segment in National Geographic’s “The Science of Babies” about some of Karen Wynn’s work at The Infant Cognition Center at Yale. In one segment, the researchers show a doll to a six-month old in a setup similar to a puppet show. Then a curtain covers the stage where the doll is sitting, and the child could see another puppet go behind the curtain. Then the researcher sneakily removes the first puppet without the baby being able to see it. The curtain falls and only one puppet remains.

1 + 1 = 1?

The baby is astonished and starts staring and banging the table! Every time the curtain was lifted and the answer was what they expected, however, the baby looked bored and looked away after only a few seconds. Dr. Wynn and her team replicated these results with six-month olds and even four-month olds, demonstrating that babies recognize addition and subtraction if only subconsciously.

Think about that! A baby can recognize mathematical inconsistency in the real world years before they can recognize a grammatical model of the world like “2 – 1 = 1”!

That idea really clicked for me after reading Seymour Papert’s book from 1980, “Mindstorms”. Dr. Papert spent much of his professional career at the MIT AI Lab developing methods to allow children to use a programming language and visualization environment called Logo to explore mathematical ideas. Like a programming language, mathematical notation is just another language. There is a bigger idea behind the language that goes beyond the syntax. There should be no reason why kids should be afraid of math in school unless it’s been made frightening and unfamiliar, or made out to be something that only “smart kids” can do.

My theory is that the sooner you introduce mathematical concepts to kids in a way that lets them build real-world intuition, the more it just becomes a part of their normal life and will be easy for them to model in any language. So I started experimenting with Armin a little bit, mainly because he showed an interest in math. He’s growing up with two engineers as parents, so I guess he doesn’t have a choice!

One way we’re approaching teaching him is to not make the exercise “homework” or a chore, but a game or a fact about life. For example, in an attempt to teach him algorithm and merge sort, yesterday, I started writing an algorithm when I was sitting next to him with a deck of cards in my hand. Armin asked what I was doing. I told him, “I’m just playing cards, do you want to learn a game called merge sorting?” And he asked, “Sure, is that a game?” Yeah, it’s a game! So we started writing steps down, writing an algorithm basically, and he started just executing the steps. He went through a deck of 10 cards, then a deck of 20, and he was just so excited that it he was learning a cool game.

My husband also sits with him for about ten minutes before bed and encourages him to explore some mathematical ideas. He started practicing addition, subtraction, counting around age 4. He’ll be six in October and he now understands basic division and multiplication. After he started counting past 100, he asked, “Dad, what’s the biggest number?” Infinity is a difficult thing to explain, so Bobby found a video on YouTube of a Mandelbrot set fractal. A fractal is a never-ending pattern, so a five-minute zooming journey through the Mandelbrot set gives you a glimpse of the infinite! Armin then started asking about fractals, and one day surprised one of his preschool teachers when he explained the line “spiraling in frozen fractals all around” from the movie Frozen. She hadn’t known what that line meant!

So, in these ways you can teach him computation, algorithms, and mathematical ideas and it just helps them with the way they think. They start playing with the concepts, not just learning them by rote.

That’s really interesting. I’m thinking now about how many career-changers we have in the industry, and I’m wondering how much these kinds of lessons could overlap with someone trying to switch from a career in liberal arts field, for example. Do you think this could serve as kind of window into what someone can do to ramp up in software for the first time?

I think it’s definitely possible. At some point you need to realize everything the computer can do, your brain can do. The computer is just a tool to make it much faster. In order to efficiently write your programs, or write your algorithms, you have to understand the basics of computer science like time complexity, how to model systems with data structures, and which algorithms can be used to solve different kinds of problems. Anyone can go back and learn these things, and the sooner you’re exposed to this kind of thinking, the easier and more familiar these things become.

At some point, programming languages become just syntax and execution speed. Once you already understand a lot of powerful computational ideas, it’s just a matter of translating them to different syntax. I think that’s one key difference between people who are actually programmers and people who are engineers. If you’re just a programmer and you only know the syntax of one language, you might be able to write really clean code and solve certain types of problems. But is the code efficient? Is it fast enough? Can you use your tools in, say, a trading or real-time environment not bring the business down? Can you solve new types of problems that aren’t in a cookbook or StackOverflow?

One quote that I love comes from Maryam Mirzakhani, the first woman who won the Field Medal of Mathematics—and sadly she just died recently at the age of 40, this: “The most rewarding part is the “Aha” moment, the excitement of discovery and enjoyment understanding something new – the feeling of being on top of a hill and having a clear view…” You get to enjoy the math when you are patient, and when you start learning it, it’s actually beautiful because you see it everywhere.

That’s interesting too when you talk about how math is just another language, because I feel like there’s a different barrier to entry when thinking of math as a language as opposed to a new language being a new means of communication between people.

I started learning English when I was about five years old in Iran. I came to the US when I was 18, and even though I still had an accent and maybe didn’t understand every single word in a conversation, I could still get around pretty well. My brother, on the other hand, just started learning English at age 28. He lives in Canada now, and is having a much harder time having fluent conversations because he wasn’t exposed to the language early on.

It’s very similar with math. As a parent, you can start applying mathematical ideas into everyday situations with young children. It could be a situation like, “I have two apples, and there are four of us; how are we going to divide the apples so we all can eat some?” Once they realize each person can get half an apple, you could show them the syntax that 2 / 4 simplifies to 1 / 2. Mathematical thinking then just becomes a part of life. And then as kids grow up, they don’t have to think, “Oh my, I have to learn math now,” or wonder, “What am I going to do if I fail?”

The audience for this talk will be mostly developers who are maybe ready to adopt these practices as a parent, but I’m curious how someone without this strong base of math knowledge go about creating this same environment for their kids?

You can! Just look for mathematics that you already do every day. For example, my dad was an accountant and we had rented two floors of our house, so we used to collect rent from tenants. I remember at one point when I was about ten asking my dad to buy me a toy, and he told me we didn’t have enough money. So I asked him, “Where does the rent money go? Why are we getting so much money and then at the end of the month we don’t have that much anymore?” So my dad said, “Alright, this month when we get the rent, you’re in charge of it. You keep track of all the rent money, pay all the bills with it, and at the end of the month let’s see how much we have left.” I was suddenly put in charge and I was excited, especially because he said I would get a portion of the money that was left over! So I had to figure out how to maximize our savings - the more I saved, the more I would get for myself.

You can use simple things like that from your everyday life. If you want to pay a cashier, for example, have your kids pay for it. Have them count – “OK, I have $10, and I’m buying a $2 drink. How much should I get back as change?”

Something you can also do for your kids, as we did with Armin, is take advantage of free resources like Khan Academy. There is a very nice progression in the program that can take children from basic arithmetic all the way up through advanced university-level material. Armin got really excited because he thought he was working on the computer, like Mommy and Daddy. He would sometimes wake up in the morning and say, “I really have to get to work!” At every level Khan Academy awards points, so Armin really felt like he was earning money by putting effort into solving his problems.

How much do you see these lessons overlap with your daily work?

As a consultant, the topic might not overlap much. But another thing I was going to talk about during my presentation is how I managed my time and stayed technical after having two children. I was lucky to be able to quit my job in 2010 and start my own company, Tested Minds, when I was ready to start my family. I had my first child a year into founding the company, and my second two years later.

It was hard…there’s no way I would say it was easy. I really wanted to stay technical and keep working, but I didn’t want to be away from my kids during their early years. I was taking care of the kids for several hours during the day, and waking up with them several times each night. When I had some slack, I worked from home on consulting projects, built a website to teach Farsi called, and built a haptic feedback reminder device with Arduino.

By age 1.5 and 3.5 my parents were able to come to the US and help us with the kids for a few months and that allowed me to went back to work full-time. When they left, we hired a nanny and also started part time preschool when Aidin turned two years old - It’s heartbreaking seeing your kids going to daycare or left at home with a nanny, and I certainly had to get used to that after going back to work outside of the home full-time. But because I’d kept up my technical skills with the projects I’d done, I didn’t need to take any time off to prepare for interviews and “become employable” again.

One thing I want to communicate to new parents is that if you really enjoy your job, you don’t have to quit because you become a parent. It’s going to be a tough couple of years, but if you just push it a little hard and stay technical, most employers respect that. I never had anybody criticize me for taking time off.

That’s awesome to hear.

I was honestly really worried, because when I was ready to go back to my first full-time job at Morningstar, I was telling Bobby, “they’re going to pick on me for not working for four years!”. And Bobby told me, “You had kids, and you still did consulting, and you built projects…you’ve been working!” I wasn’t sure if they would value that. But they were so respectful as soon as they heard I was consulting and raised two kids. They appreciated it.

To anybody who’s afraid of falling behind in their job, of having to quit their dreams or careers just because they have kids—you don’t have to do that. Even if you choose to take some time off from full-time work to be with your kids as I did, you can find ways to keep your technical skills sharp and be ready when you decide to go back to work full-time.