Belief in the Geek Gene may be driven by Economics and Educational Inefficiency, plus using blocks to cross language boundaries

June 5, 2017 at 7:00 am 10 comments

I visited China in the first part of May. I was at Peking University (PKU) in Beijing for a couple days, and then the ACM Celebration of the Turing Award in China (TURC) in Shanghai. I mentioned the trip in this earlier blog post. I wrote a blog post for CACM on a great panel at TURC. The panelists discussed the future of AI, and I asked about the implications for computing education. Are we moving to a future where we can’t explain to students the computing in their daily lives?

A highlight of my trip was spending a day with students and teachers at PKU. I taught a seminar with 30+ advanced undergraduates with Media Computation (essentially doing my TEDxGeorgiaTech talk live). It was great fun. I was surprised to learn that several of them had learned programming first in high school in Pascal. Pascal lives as a pedagogical programming language in China!

Perhaps the most striking part of my seminar with the undergraduates was how well the livecoding examples worked (e.g., I wrote and manipulated code as part of the talk).  All the PKU students knew Java, most knew C++, some knew Python — though I knew none of that when I was planning my talk. I wanted to use a tool that would cross programming language boundaries and be immediately understandable if you knew any programming languages. I used a blocks-based language.  I did my livecoding demonstration entirely in GP. I tested their knowledge, too, asking for predictions (as I do regularly, having read Eric Mazur’s work on predictions before demos) and explanations for those predictions.  They understood the code and what was going on. The funky sound and image effects cross language barriers.  Students laughed and oohed at the results.  Isn’t that remarkable that it worked, that I could give a livecoding demonstration in China and get evidence that the students understood it?

The most interesting session at PKU was talking with faculty interested in education about their classes and issues. I’ve always wondered what it’s like for students to learn programming when English is not their native language, and particularly, when the characters are very different. I asked, “Is it harder for your students to learn programming when the characters and words are all English?” The first faculty to speak up insisted that it really wasn’t an issue. “Our students start learning English at age 6!” said one. But then some of the other faculty spoke up, saying that it really was a problem, especially for younger students. In some middle schools, they are using Squeak with Chinese characters. They told me that there was at least one programming language designed to use Chinese characters, but the other faculty scoffed. “Yi is not a real programming language.” There was clearly some disagreement, and I didn’t follow all the nuances of the argument.

Then the Geek Gene came up in the conversation. One of the most senior faculty in the room talked about her challenges in teaching computer science. “Some students are just not suited to learning CS,” she told me. I countered with the evidence of researchers like Elizabeth Patitsas that there is no “Geek Gene.” I said, “We have no evidence that there are students who can’t learn programming.” She had an effective counter-argument.

“We do not have all the time in the world. We cannot learn everything in our lifetime. How much of a lifetime should a student spend learning programming? There are some students who cannot learn programming in the time available. It’s not worth it for them.”

I had not thought of the Geek Gene as being an economic issue. Her argument for the Geek Gene is not necessarily that students cannot learn programming. They may not be able to learn programming in the time available and using the methods we have available. This is not Geek Gene as only some students can learn to program. This is Geek Gene as economic limitation — we can’t teach everyone in the resources available.

I have an answer to that one. Want to reach more students? Either expand the time it will take to teach them, or use more effective methods!  This is the same response that I had offered to my colleague, as I described in an earlier blog post.

That insight gave me a whole new reason for doing our work in efficient CS education, like the greater efficiency in using subgoal-based instruction. The work of Paul Kirschner and Mike Lee & Amy Ko also emphasizes more CS learning in less time. If we can teach the same amount of CS in less time, then we can expand the number of students who can learn enough CS with a given amount of resource (typically, time). If we can’t convince teachers that there is no Geek Gene, maybe we can give them more effective and efficient teaching methods so that they see fewer students who don’t seem have the Geek Gene, i.e., who can learn enough CS in a single semester.

Below, evidence I was really at TURC

Entry filed under: Uncategorized. Tags: , , , , , .

We need a greater variety of CS teaching methods: The Way We Teach Math Is Holding Women Back Congratulations to Owen, Valerie, and Chris — ACM Award Winners!

10 Comments Add your own

  • 1. lenandlar  |  June 5, 2017 at 8:03 am

    Interesting to see Pascal there. We in the Caribbean still very much have Pascal. Not going anywhere soon from what I’m interpreting.

  • 2. Alfred Thompson  |  June 5, 2017 at 8:20 am

    It does seem to take some students longer to learn CS than others. I often wonder about that. Is it really how it is being taught or do somethings just come harder for others? And I don’t mean just in CS but other subjects as well. I can teach anyone basketball but is the difference between me and LeBron James just a matter of practice? I doubt it. If we can credit talent in sports why not academic pursuits?

    • 3. Mark Guzdial  |  June 5, 2017 at 8:23 am

      Let’s presume that students have differences when they enter our CS classes, whether due to previous classes (in mathematics and science, as well as CS), their upbringing (e.g., parents reading to children, going to museums and science centers), and perhaps due to good genes. Our only possible response is to change how we teach, to teach different students differently.

      • 4. William Doane  |  June 5, 2017 at 11:25 am

        I’m just begging for quantification misinterpretation here, but… do you believe it is the case that all teachers can teach all students? Or, alternatively, given that there are a limited number (possibly zero) of (let’s say intro level) CS teachers available to a given student in a given learning context at a given time, then might there be a fundamental mismatch of resources (teacher to student mapping) that makes CS *effectively* unlearnable for some?

        • 5. Mark Guzdial  |  June 5, 2017 at 11:57 am

          It’s a great question! I interpret the question as the same as the original intro-CS/Geek Gene question at the next level of abstraction. Yes, I believe there are CS teachers who are not effective at teaching a broad range of students. But I don’t believe that they are innately ineffective. I believe that they can be taught to be more effective at teaching CS. Do they want to? Can we motivate/incentivize them? How much time will it take to teach them to be effective teachers? There are likely a diverse range of methods to prepare CS teachers, and some will be more effective than others.

          We can use the layers of abstraction perspective to consider the next level, too. We might ask if we have enough providers of professional development to reach the teachers, and are all providers sufficiently prepared, incentivized, and informed to help all potential CS teachers?

          The bottom line is that no teacher should assume that his or her students are un-teachable. There may not be enough time or resources to effectively learn, though. So, developing greater efficiency is an important goal.

  • 6. Steve Tate  |  June 5, 2017 at 9:45 am

    I think the issue of “time to learn” is critical in the following sense: we faculty (at least university faculty who computer scientists and are completely steeped in the field) have a bad habit of overloading courses because we think things are cool. I have to constantly remind myself that my class isn’t the only class that students are taking, and just because the younger-me spent huge amounts of my spare time programming and learning about computing, most people simply aren’t going to do that. When I’m teaching CS Principles (which I will be in the Fall, after a bit of a break), I try to focus on careful thinking about more basic (and fewer) ideas. The “Big Ideas” in CSP really help with that focus.

    All students will prioritize their time for learning, and we (CS) aren’t always – or even often – the number one priority for non-CS-majors. Sure, I could make them better programmers by demanding more time – with ENOUGH time I could probably teach anyone (almost anyone? anyone who can get into college?) to do simple programming. But I don’t need to demand that kind of time, and it’s not really the point of a CS4All approach.

    • 7. Mike Zamansky (@zamansky)  |  June 5, 2017 at 3:42 pm

      And the fact that students are expected to have mastered certain things before their classes next semester (or for standardized exams at the end of this semester ) place teachers – particularly K12 teachers under tremendous pressure.

      When you have to teach 5 classes 34 kids per class every day with the kids getting homework in all 5-8 of their subjects and your classes are around 40 minutes it’s not so easy to work all those so called best practices*

      * – some of which I do believe are good practice, some bunk,

  • 8. Briana Morrison  |  July 12, 2017 at 12:33 pm

    Why does it take some students longer to learn? Because they haven’t automatized the core pieces of programming! Just as it takes some students longer to learn to read – they may still be sounding out words rather than recognizing them by sight – some students are still parsing out assignment statements in week 4 or 5 of the intro course. Hopefully (?!?) with additional research we can put quantitative numbers behind how long it takes to automatize programming concepts and then introduce standardized assessments for determining exactly when a student is ready to progress to the next concept. Currently we just push everyone along at the same pace…

  • […] so that in the same amount of time that students were writing code, they actually learn more? Efficiency matters, as Elizabeth Patitsas’s work suggests — more efficient learning may mean less belief […]

  • […] Gene is off the table. The Geek Gene is the belief that some people can’t learn to program (see blog post for more). Any Turing machine can simulate any other Turing machine. Our HTM’s are capable of tracing a […]


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 9,052 other followers


Recent Posts

Blog Stats

  • 2,031,471 hits
June 2017

CS Teaching Tips

%d bloggers like this: