What’s practice for CS1 before CS1? Explaining talent for computing

December 23, 2009 at 11:36 am 17 comments

Talent is the desire to practice.

Malcolm Gladwell, via The Corsair.

I have met with a lot of CS faculty over the last four years of  “Georgia Computes!” They tell me about their high failure rates and low student performance.  When I ask them what they think explains these results, the answers are surprisingly consistent, “Some students just get it, and others just don’t.”  I don’t buy the explanation — I see it as another symptom.  Some students do just get computing, and others don’t. But why?

Michael Caspersen has done several reviews of the studies trying to predict success in CS.  There’s not much conclusive out there.  Math ability is sometimes a predictor, and sometimes not.  Access to computing is sometimes a predictor, and sometimes not.  Perhaps the best predictor of success in CS1 is a previous attempt at CS1.  Fewer people fail it the second time?

I recently found the above quote from Malcolm Gladwell, and really liked it.  Let’s assume that Gladwell is right, that the “talent” that some students have is a willingness to practice. What kind of “practice” might some students get, that other students don’t? Let’s make one other assumption, based on what the faculty are telling me.  If some students “get it” and others  “don’t,” then let’s assume that whatever is going on in the class is not making the difference.  If faculty aren’t seeing what’s making a difference, it’s reasonable to believe that the difference is practice happening before the class or outside the class.

Maybe the worked examples literature helps to explain what’s going on.  When I was first learning computing, I read a lot of programs.  I read books like David Ahl’s Basic Computer Games with a hundred interesting programs.  Every issue of Byte and Dr Dobbs (“Running light without overbyte!”) had a half dozen or more complete programs in it.  Today’s Dr Dobbs contains hardly a single complete program.

Maybe the difference between those students who “get it” and those who “don’t” has less to do with writing programs than reading programs.  How much reading do we ask students to do these days?  How much do students read programs outside of class?  Maybe some do, and maybe that makes a difference.

An interesting part of this hypothesis is that it suggests something that we might do in classes.  We could ask students to read more.  I once built a case library called STABLE filled with Smalltalk programs. We found that students who read all those additional designs learned more about design and performed better on design tasks. Asking students to read might be a kind of practice that will help, and maybe talent in CS is a willingness to do that reading.

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

NYTimes: It’s about blending computing + X Selling electricity

17 Comments Add your own

  • 1. Greg Wilson  |  December 23, 2009 at 5:17 pm

    Other than Diomidis Spinellis’s Code Reading and Code Quality, do you know of any books about how to read software? And do you know of any courses that teach students how to do this (or than in passing)?

    • 2. Mark Guzdial  |  December 24, 2009 at 1:43 pm

      I think that teachers who code live and review code live are demonstrating it in passing. The question is how much material is offered and available to students. Open source doesn’t cut it — wrong level. Maybe we need some McGuffey Readers for early CS? Lots and lots of good, right level code to read?

      • 3. Alfred Thompson  |  December 24, 2009 at 2:35 pm

        I agree! We need good code at the right level. Much of what professional developers do (open or closed source) it more complex and involved than beginners can handle. On the other hand too much of the very short simple code we show students is so forced to show specific concepts that it requires poor practice to make it managable. We need code for students that is both good and short/simple. It’s not an easy balance but I believe it would be guite helpful to many.

      • 4. Diomidis Spinellis  |  December 25, 2009 at 7:37 am

        When I was writing Code Reading and Code Quality I had in mind the anthologies we used at school. These contained short stories and excerpts written by famous authors. Through them we learned how language was used by the true masters. My reasoning was that I could follow a similar route by presenting all examples from large well-written open source projects.

        This proved to be very difficult and time consuming. Finding a single example would take anything from an hour to a couple of days, and the books contain more than a thousand of them. In retrospect, the main benefits of this approach were three. First, choosing the examples from existing code forced me to describe only cases that were occurring in practice. Second, it allowed me to create exercises that were close to tasks professional programmers will face in practice: the maintenance of existing code. Finally, the open source approach provided visibility to the project; it seems that many educators and professionals were attracted and inspired by it.

        However, if I was starting again from scratch I would spend my time more profitably by coming up and writing interesting and entertaining examples, rather than searching for a code snippet among millions of lines of code. With dose of creativity and environments like Processing we can attract the interest of our students and, hopefully, have them experiment and play with what we’re teaching them; this is the route to learning.

  • 5. Alfred Thompson  |  December 23, 2009 at 11:51 pm

    I loved Ahl’s books and aspired to writing my own. I still think about it. But back then we entered those pograms in our computers by hand. We made typos, took shortcuts (or tried to) and learned extra things in the process. These days students want it all in the system already. “Let me copy the file” I think that misses some of the value. If talent is the williness to practice then entering code as well as just reading code is going to be important.

  • 6. Alan Kay  |  December 24, 2009 at 9:09 am

    It’s hard to let the Gladwell fond hope slide here.

    “Talent” is *not* remotely the “desire to practice”.

    In fact, an abundance of it (especially in the young) can be a real psychological barrier against doing the practice that even great talent needs for getting really good at complex fields (especially those that have been highly developed over centuries).

    Having some does often help with motivation to keep doing the activities (this is not a paradox or contradiction).

    And, it is really difficult (maybe impossible) to get to the really top levels without a considerable combination of talent and practice.

    I like to define the word “ability” as a combination of “talent, skill, and will”. This trade off quite a bit with each other but not totally.

    Best wishes,


    • 7. Mark Guzdial  |  December 24, 2009 at 1:47 pm

      Hi Alan,
      What do you think of Gladwell’s argument in “Outliers”? He argues that if traditionally defined talent (defined as “innate ability,” as I interpret him) exists, it isn’t needed to explain success. He takes people from Bill Gates to the Beatles and explains their success in terms of hard work and lucky breaks. His quote that I start this piece with should probably be read as: “Talent” (in quotes) is [merely] the desire to practice.

      Best wishes and Happy Holidays!

      • 8. Alan Kay  |  December 24, 2009 at 2:27 pm

        HI Mark,

        First, “innate ability” (we can think of it as pre-existing pre-dispostions for learning and doing) really does exist. So the simplest assertion by Gladwell here is quite false.

        I was making three main points in the previous comment
        (a) that talent may not be enough to get to the highest levels — especially in highly developed areas (like music, sports, etc.)
        (b) that talent really helps in lots of ways, both in the beginning of learning an area, and that combined with lots of work in the top levels can be a differentiator
        (c) that in the pop and regular cultures, talent can be impressive enough to cause some to not be motivated to learn how to work on ability.

        So: talent, skill and will (and let’s throw in luck as a fourth factor). These multiple factors perhaps confuse Gladwell, and his ignoring how these factors play off makes for something closer to demagoguery than a real argument.

        Gladwell’s essay mistates so much — I think because of some combination of his wanting his bogus premise to be true (I think he might be an ideologue) and also of pandering to his reading public (many of whom would love to have his premise be true).

        Also, “success” is more of a marketing term than an art term. It is certainly possible to be successful via just hard work and luck in many areas. This is especially true in a relatively unsophisticated culture with buying power. Here fads and collective opinions drive value and choices.

        Besides the various studies of talent which exist, most of us have experienced “people of talent” in some of the areas that we are interested in. The differences are striking.

        In our own lives, some of us show obvious talent in some of our areas of interest but just the opposite in equally desired pursuits. What has to be done to make progress in each of these different cases is quite different, and very revealing.

        For example, to take just one of the tiniest, but crucial, aspects of talent in some area, consider what it means to be able to easily remember content or not to be able so well. And consider what it is like to contrast areas in which you can easily remember with those where you can’t. This overlaps to some extent with understanding, but is also somewhat separate.

        It’s possible not just to learn to remember better some ideas which were hard to get down, but it is also possible to learn to *get generally better at remembering* in an area via practice.

        But we can also see that having even this little part of talent can be a determiner for many people, who will judge a pursuit hard or easy depending on their first few encounters with it. It just takes a lot more motivation to be willing to slog and grind on something that seems important even though hard.

        So Gladwell could have written a much better piece on how one can get good at something by strategies that take into account what kinds of talent they have and what kinds of skills they will have to develop.

        Very best wishes,


  • 9. Alfred Thompson  |  December 24, 2009 at 2:41 pm

    I think Gladwell gets too much credit. He does write interesting books and have interesting ideas. As a society we tend to imply genius to people who make a lot of money from their books. That is not always such a great idea.
    I believe there is native talent. I believe Bill Gates has some talent in software but let us not forget that he also worked hard and had a bit of luck. Would he have been able to buy his first Altair and drop out to start Microsoft if he had not been supported by a well-to-do family? Maybe but maybe not.
    Success in any field is more complex than talent, skill, will or luck alone. Some of all is generally required with no one thing enough to overcome lack in the others.

    That being said being willing to work hard counts for quite a lot. The luck of a good teacher, which I fear is more needed for would be computer science students at the high school level than any of us would like, can go a long way towards developing any level of talent. As long as the student is willing to work at it.

    • 10. Erik Engbrecht  |  December 25, 2009 at 10:25 pm

      I think a “willingness to work hard” tends to be highly overrated. Working hard without being told to do so, or even told what to work on, is far more valuable, and knowing what to work hard can overcome massive disparities of effort.

      In other words, initiative and efficiency are more important than hard work.

    • 11. Mark Guzdial  |  December 28, 2009 at 7:09 pm

      Alfred and Alan, I don’t disagree that there’s such a thing as innate or natural talent. If it does exist, it probably is not equally distributed across all people. What I’m wondering about is how we would demonstrate the existence of talent. Maybe tests with identical twins? Does anyone here know of convincing evidence that some talent is due to nature and not nurture?

      • 12. Alan Kay  |  December 29, 2009 at 10:49 am

        Hi Mark,

        This has been a societal and politically sensitive issue for many years. For example, the old “blank slate” idea got revived and became a central tenet of Marxism. It is one of the facets of “political correctness”, etc.

        But these days, the two most fundamental parts of the idea have quite a bit of evidence and biological modeling behind them, that (a) animals including us are not remotely blank slates even though we have quite a bit of plasticity in how and where we learn, and (b) that within the areas that are predetermined by our genes (e.g. the ability to acquire language, tell stories, etc.) is considerable variation in what it takes wrt learning to fill out the genetic predispositions.

        And, yes, there are recent studies of twins separated at birth that estimate the contributions of genetics versus environment.

        However, there is also something like “physics” behind the idea — that given how morphogenesis works and the amazing amount of noise that gives rise to variations beyond the variations of genetics alone — it would be more than surprising not to find considerable variation in all human traits at birth.

        And in many cases, when and how much variation shows up can cause very different interactions with the environment, ranging from intellectual to athletic domains. As Suzuki used to say “Children like what they can do”, and this can affect very early choices. One of the hallmarks of his method (I think rightly) was to try to use careful shaping of the environment to give a wider range of children every degree of help possible so that lesser degrees of talent could be developed via practice very early on. This is what I think we should do with the whole population wrt the “modern thought” subjects.

        But back to talent. One of the simplest dimensions of it is *onset* — that is *when* development allows a particular kind of learning — and this has long been studied in cognitive science. In early childhood, this variation can be up to several years, and because most schools group by age, this can have devastating effects on the child. One of the many hallmarks of the Open Magnet School in LA where we did a lot of work, was that they grouped children by developmental level not by age (in what were called “clusters”) and children moved from cluster to cluster based on what they could do.

        Another dimension of talent is “depth”. For example, I have always been on the minus side of physical abilities and learning — and this included real difficulties with the rhythmic parts of music — that part of my musical abilities and musical memories just required a lot of work (and still does). On the other hand, from the earliest childhood I showed a very complete memory (which I made more complete starting in 3rd grade), and quite a bit of feeling for structure and mechanical kinds of things. In music this translated to “just being able to see” a lot of harmonic theory just by looking at a keyboard (it’s a lot like geometry). And on the third hand, my creative talent in music has been “medium” at best.

        So because I’ve always been drawn to music, I wound up really slogging on the physical playing and constant reinforcement of the time dimension, requiring very little practice in the vertical pitch dimension, and without much work at all being able to understand the machinery of how harmony and melody work together. Throw in medium abilities at coming up with musical ideas, and you have what can be fairly called an “average developed musician”.

        Music is not a bad field for analogies here because it is not just one thing, and musical talent is not just one thing. There are very few musicians who are blessed with large talents in all areas of music (but they do get born). This area and the similar area of sports has been studied extensively (and with a lot less ideology because neither of these impinge on basic beliefs in a democracy and both areas are celebrated for “high talents highly developed”).

        Of course, anecdotes are not the same as evidence, but if you delve into this area you will find pretty good science in most aspects of the study of talent.



  • 13. Diomidis Spinellis  |  December 25, 2009 at 5:11 am

    One explanation of why we find it difficult to pin down what makes a good programmer is that all three factors Alan mentioned (talent, skill, and will) are self-reinforcing. Richard Hamming in his inspiring 1986 talk You and Your Research described this by saying that “knowledge and productivity are like compound interest”. This property may well explain the making of super-programmers who outperform others by a factor of ten or, for that matter, Olympic athletes or top performers.

  • 14. Raymond Lister  |  December 28, 2009 at 2:34 pm

    I certainly agree that we should place more emphasis on reading programs. I have tried doing that, and it seemed to help a lot of the students. However, there was a group of students – larger than I liked – who were not helped. These were not necessarily poor students, as some of them did quite well on other parts of the course. It seemed that these students did not *actively* read the
    code. That is, they did not think about the code as they read it,
    and they certainly did not appear to develop abstractions for remembering the code. I think these students need us to provide them with more than just the code itself. What they also need from us are questions and exercises that test their comprehension of the code.

    • 15. Mark Guzdial  |  December 28, 2009 at 7:05 pm

      I agree, Ray. I’ve been thinking about providing code as worked examples, with audio commentary (to take advantage of the modality principle of instructional design), with interleaved practice where students fill in parts of code (e.g., single lines, 2-3 lines) which gets interpreted and executed in-place. The idea isn’t to replace coding with an IDE, but to provide support (even remedial, as needed) to make full cognitive load programming more successful. Hoping to get some prototypes built to trial in Fall.

  • 16. Practice and Performance « And Yet It Moves  |  January 9, 2010 at 8:15 pm

    […] points toward Mark Guzdial’s recent post about how practice leads to success in computer science. His question, and mine, then becomes, “What sort of practice is […]

  • […] there a geek gene explanation here?  Is it that the top students became top students through the practice, or were […]


Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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,030,788 hits
December 2009

CS Teaching Tips

%d bloggers like this: