Beth Simon on why everyone should take computing

January 13, 2011 at 9:09 am 13 comments

As you might recall, Beth Simon has been teaching one of the new AP CS pilot courses.  She decided to update her course materials for the second offering, and to explicitly make an argument for why students should take this course.  She makes a really interesting case (backed up with quotes from students from the first offering) for why a general introduction to computer science is useful to all majors. I am quoting from her materials, with her permission.

What does this course offer to you?
In this course, you will gain the basic level of understanding of computers and computation that we think ALL college graduates should have – to be prepared to create the future.  Last century, competence was defined by the three Rs: reading, writing and arithmetic.  They are required to pursue a professional career in any discipline.  This is the 21st century, and it’s clear that computing is poised to permeate not only our professional work, but also our society. So think of understanding and skills of computing as a fourth ‘R’, necessary for any discipline.  After this class, you will stand out from other college graduates in your preparation to work with new technologies of the future.

Students who previously took the course described some of the following things they got out of it:

  • Confidence: “It has given me confidence that I’m able to figure things out on a computer that I never would have thought that I could do.”
  • View of Technology: “Now, every time I find myself playing a video game, I actually understand what makes it work.  That these games are not magically produced, that it takes time, skill, and sufficient funds to create these games.  I appreciate these games more than before taking this class.”
  • Analysis Skills: “Programming allows a person to think more logically, thinking in order and debugging allows the user to gain valuable problem solving skills.  Aspiring to go to law school, thinking logically is extremely important and I think this has helped.”
  • Communication Skills: “In today’s technologically-centered world, using a program like Alice gives us valuable exposure to discussing things technically with other people and explaining clearly what we are trying to do.”
  • Organizational Skills: “Through Alice, I learned to stay organized and structured in anything I do, including studying for other classes.  Although at first, thinking with several concepts at a time was very difficult, now I am more confident.”

How, exactly, are you going to accomplish this?
By learning to control the computer through a basic programming language, you will get the opportunity to develop skills that will enable you to deal with general issues on the computer – in any area.  Why do you have to “learn to program”, when you may never program again in your life?  Programming is actually the simplest manner in which to deal with a computer.  Comparably, other applications you use (Photoshop, Word, Facebook, Picasa, etc.) are much more complex.  We want you to start with a simpler model, one more in your control, to gain the basic understanding of how computers work. At the end of the term, you’ll then explore one application – Excel –  to practice applying your new knowledge in a specific context. Then, in the future, no matter what new application you use, you can apply that knowledge to figuring it out and making it work for you.

Entry filed under: Uncategorized. Tags: , , .

A Joint Call for Research on Why Computer Science Education is Important for K-12 Using the iPad for something new

13 Comments Add your own

  • 1. Alan Kay  |  January 13, 2011 at 10:48 am

    Hi Mark,

    I want to be very careful about how I try to say that, taken at face value above and in my opinion, this is below the needed thresholds for an introduction to computing.

    Most people at most ages (above 9 years old anyway), in a good context and authoring environment, can deal with important ideas from many domains and can understand them better by making models of them via programming in integrated languages designed for this purpose.

    I’m not against the idea of having one payoff for a course like this be a spreadsheet, but given a suitable environment (as alluded to above), it is very easy for the learners to make a spreadsheet itself, and then use that to make “spreadsheet models”.

    In the larger context, what needs to be the center of focus is *systems* of processes in many domains, not simple algorithms and “structuring”.

    Enough of this ground has been explored over the last 40 years to provide experience and evidence that children and adults can readily learn how to do this.

    So I believe what is needed by those who want to advance computing is a lot more thought about its range, and a wider consideration of goals, tools and methods.

    Best wishes,


    • 2. Mark Guzdial  |  January 13, 2011 at 11:59 am

      Hi Alan,

      I completely agree that what Beth describes is not above threshold. But it’s someplace to start. I really believe that what we’re describing in the new APCS course/exam is the background that everyone should have in K-12 computing, but is necessary-but-not-sufficient. I don’t think we can get from zero to threshold in a single course.

      I do agree that evidence from the last 40 years shows that we can get children and adults to do this — but not at scale. What would it take to get a whole school system, with a wide variety of students and SES, and a wide range of teachers, to teach what you’re describing? That’s an open question, and a worthwhile one.

      What Beth is trying to answer is why students should take her course. She’s in the same position that most of us are in CS. Computer science is rarely required for anyone, so we have to coax students in. We are in the position of student-as-customer.


      • 3. Alan Kay  |  January 13, 2011 at 12:18 pm

        Hi Mark,

        The big problem with “places to start that are not above threshold” is that they form a legacy context of their own: materials and training are devoted to them, money is spent, and all of a sudden there are lots of apparent reasons to keep going and “improving”. None of these I’ve studied have transcended asymptotes.

        I agree that you can’t do everything in a single course, but a really good aiming point is to see if you can get above threshold for 90% of all students in a single course (which may very well be the only one they ever take).

        The big change over the 40s of gaining experience has been in the percentage of children in a given classroom who can learn to do above threshold stuff. This mostly a process of getting to understand different varieties of learners and to build better environments and approaches for them. It’s good that this part of it finally scaled.

        What hasn’t scaled are the general teachers (and the rest of the formal school apparatus, including the food chain of principals on up, parents, school boards, etc.)

        I don’t know how much of this can be transcended by having next generation “mentoring UIs”, but I believe that significant and important parts can be taken over by more cognizant computer media.

        I think this media (as did the UIs originally invented for children at PARC) will also greatly help the adults start to learn this so they can help the children much more than now.

        I don’t have great (or even good or even) answers for the social and human motivational questions you raised in your next to last paragraph. These are endemic problems and much larger than STEM or CS concerns.

        And much of what I was disagreeing with are the reasons given for why students should take the course. I don’t think they are good reasons, nor do II think they are good enough to support the goals.

        I don’t mind the idea of coaxing. But let’s coax with both real nutrition and great taste. It’s there. It’s more difficult to learn to farm and cook that way. But isn’t it up to us to make this possible?



        • 4. Mark Guzdial  |  January 13, 2011 at 8:16 pm

          Hi Alan,

          I agree with your goals, and I *strongly* agree that we should be building media that can provide mentoring support. Could the issue of whether it’s one class or several be an implementation issue? We should agree on the goals, and we create implementations that achieve those goals, and then look to make it more efficient. Do we have examples of learning interventions that get us above threshold? Then, can we figure out how to do that in fewer steps?

          What I see Beth trying to answer is how to get people started at all, and how to argue to administration that a CS class is important. She’s not solving the problem of how to achieve threshold, agreed. She’s aiming to solve a different problem, and it’s one of the better solutions I know of.

          I do agree that it would be great to draw students in “with real nutrition and great taste.” And I agree that it’s our job to do that. We should identify our best examples of real CS that draw students into CS, and identify how they work and replicate that.


          • 5. Alan Kay  |  January 13, 2011 at 9:01 pm

            Hi Mark,

            I think that if you can persuade for more than one class, this is good; things can be more spread out and more topics treated. But I think it is interesting to try to figure out what to do if there is just one class (as is often the case for fringe or forbidding subjects).

            There are lots of ways to get people started that are known to work, so I don’t think this is an issue (and I think there are better ways than Alice, Scratch or Etoys).

            As for arguing with an administration, I would think that the good arguments would work quite well with a stronger curriculum (and partly because the administration doesn’t understand the subject — if they did, we would be far past these issues).

            My belief is that a better point of view of computing and how to learn it can be taken in both high school and university. I don’t think we should let ourselves be influenced too much by the weak ideas in academia either.



  • 6. gasstationwithoutpumps  |  January 15, 2011 at 2:38 pm

    “(and I think there are better ways than Alice, Scratch or Etoys).”

    Alan, could you be more specific here? I have not found a better way to get kids started in programming than Scratch. What better way have you found (and what goal is it better at)?

    • 7. Alan Kay  |  January 16, 2011 at 12:29 pm

      The question to me is not what is best right now (a relative measure) but what is actually needed for these goals.

      Etoys and Scratch were overlapping projects by Viewpoints (when it was a research group at Disney in the late 90s) and the Lifelong Kindergarten Group at MIT (with a shared designer builder John Maloney).

      Both projects were aimed at fairly narrow targets (Etoys for “lapware” with 7 and 8 year olds on a parents lap via the Disney website — and the later Scratch for afternoon computer drop in centers where teenagers could make small multi-media projects).

      Etoys introduced “tile programming” (adapted from earlier work by grad student Mike Travers at MIT). Both Alice and Scratch adapted their versions from Etoys.

      Both of the initial designs aimed at “greeting card” sized media results, and the initial UI of Etoys was similar to the later Scratch (with most of the screen being used to show visible tools).

      Etoys had a hypercard facet to it from the beginning and this made the entire screen available for making projects and presentations. The visible UI got tucked into folders and tabs because there was a teacher to help get the kids started.

      Both these systems are similar in being too limited in range for serious use in high school and college. Etoys has more features and more range (it has an entire media system, a massively parallel particle system inspired by StarLogo, etc.)

      Scratch has a better UI for getting started. Both systems lack good UIs for large projects.

      Scratch did a brilliant job on the web involvement and social networking.

      There are other interesting tradeoffs in conveniences and inconveniences many areas e.g. in how parallel processing is presented and controlled, etc.

      But I think an interesting way to think about these systems and the real problems at hand is that they are both built on top of Squeak Smalltalk, and neither takes much advantage of this.

      For example, one could derive something as simple to use and learn initially as Scratch and Etoys, but with qualitatively more power in many directions.

      Squeak Smalltalk is not only built in itself, but contains many tools for building languages — so a language custom made for the introduction of computing to teenage and older kids could be readily designed and put forth.

      For example, a language much much stronger in systems building, in simulations, in metaprogramming could be made that would still have a very low threshold to get started, but would exhibit much more range for the purposes at hand.



      • 8. gasstationwithoutpumps  |  January 16, 2011 at 1:51 pm

        While I agree that more powerful languages than Scratch could be created on top of Smalltalk, I think that you may be over-estimating the cognitive load of too flexible a system.

        I like the design of BYOB better than Scratch (almost the same, but allowing creating new blocks, which even 5th graders wanted to do in Scratch), but I would not want to go much further than that in a first language for kids.

        I believe that people have been trying for years to come up with programming environments that are easy to learn and powerful, and that it is not easy. Smalltalk was not a great success here (it was very powerful, but few people found it easy to learn).

        People are also looking for high transferability of learning to other programming languages. For example, Alice is very obviously transferable to Java—I would argue that too much emphasis was put on that in the design of Alice, limiting the ease and fun of learning the language.

        Getting a good tradeoff of all the conflicting goals of first-language design is hard. I believe that Scratch concentrated much more on the easy-to-learn, easy-to-use goals and less on the ability to make big projects than you would like, but that tradeoff turned out to find a sweet spot in the design space for which there was a need. Their distribution mechanism and clever use of social media helped them fill that niche very quickly.

        • 9. Alan Kay  |  January 16, 2011 at 5:56 pm

          Only the first Smalltalk was designed especially for both children and adults, and it was quite a bit easier to learn than Smalltlalk-80, which did not have this dual aim (wrongly in my opinion).

          But in any case, that was not the point I was making, which was that considerably more power — some of it needed — lies underneath both Etoys and Scratch, and that some of it is critical to the goals discussed here.

          You are right that it is not easy to come up with programming environments that are both powerful and easy to learn. (I’m one of those people who has been at it since the late 60s)

          But the trick and key is to eliminate gratuitous difficulties, not needed powers, or the difficulties which when surmounted help the learners grow. There’s a lot in common with good approaches to both mathematics and musical instrument design.

          One thing to consider is — apart from vocational considerations — whether transfer to other programming languages should be a first order goal here. Essentially all programming languages leave a lot to be desired for both pros and amateurs, so there’s not a lot to be gained by trying to emulate them.

          I think giving the learner the best powers we can is the most important goal. And something better than Logo, Hypercard, Etoys, or Scratch can certainly be designed and made for high schoolers and college students.



  • 10. Mark Miller  |  January 16, 2011 at 9:53 pm

    The thing that was encouraging to me about what the students were saying about Beth’s course was they had gained insights into how the software they use works. This was something for which I was arguing a couple years ago, as a means of saying, “People need this,” back when the question was, “Is CS in high school necessary?” The reason being that people run into software that malfunctions for whatever reason, and they have no idea why. They get a virus/worm, etc. on their system and they have no idea how they got it, or what potential harm it could do (ranging anywhere from a minor annoyance to a lot of damage). They are vulnerable to being coaxed into giving away valuable technical information, such as account numbers, passwords, etc., because they don’t understand how computers use it. I personally view removing that naivete to be a good goal for such a class, though I agree that should not be the ONLY goal.

    Tying into what Alan Kay was saying, in my experience as a teen programmer, and having talked to people about their teen programming experiences, I’ve noticed an interesting pattern of idea and skill development among some of us. Our experience with computers was an app.-centered world, but we each eventually wanted to break out of that and get into systems. We got interested in programming initially for the joy of seeing our visions come to life in front of us. Along the way, we learned that there were patterns we were repeating in our programs, and we found ways to abstract them into parameterized routines, so that we didn’t repeat them, but generalized them. Each of us eventually reached an epiphany about systematizing “beyond the application.” Most of the people I’ve met who had this in their teen years dreamt of creating their own operating system (basically creating their own program loader and interpreter), really digging into the guts. One problem was they all tried to do it in Basic, and they failed, because it didn’t give the programmer the power to do such a thing, at least not without jumping through a lot of hoops, and perhaps running into limitations of the runtime. As for me, I kept repeating and improving upon a word game, based on Mad Libs. I also started coming up with alternate versions that played it in different ways. I eventually reached a point where I had the idea, “What if I had a system that just dealt with text elements, and their relationships, and I could program within it to create this game, but it would allow people to do much more with words than just play the game?” I had this idea while I was in high school, about 4 or 5 years after I started programming. It was long before Microsoft Word, as we know it, existed (though I had no idea Emacs existed. Even so, I wouldn’t have been able to run it on the computers we had).

    I realized I had been creating these apps. to play with word schemes, and I imagined in a very vague way an environment where I could do that flexibly, rather than having to build and modify an app. each time to do that. Once I had this idea, though, I ran into a brick wall of my own skills. All I knew was Basic (the old style kind with line numbers). I didn’t think it would be possible to build such a thing in that. It may have been, but the word “torture” comes to mind… Secondly, I had no skills in building an interactive system like that. The hardware and system software of the time would’ve required me to get into how it worked at a deep level to pull it off. It was a leap of an idea, and the bridge just felt too far away, so I never went through with it.

    What I’ve taken from my experience is that with enough exposure to programming, enough improvement in their skill through experience, and enough variations on a theme, some young programmers will eventually want to get into systems. They will want to systematize their ideas, but I think what we all realized was that this takes a very different approach to computing than what we had been doing, and been exposed to. It also required different tools. I can’t speak for the others I’ve met, but for me the inspiration to do this came from a mindset of “how can I generalize this?” The impetus was to avoid repeating some of the same work to accomplish a goal that was similar to a thing I had already built.

    For each of us it would’ve been better if we had been exposed to this before we felt the desire to do it of our own initiative, because it really is a whole different approach towards a computer. The question for me would still be how to introduce students to it in a way that does not foreclose further expansion on the idea, as Alan Kay warned.

  • 11. Susan L. gerhart  |  January 20, 2011 at 12:15 pm

    Note the juxtaposition of the goal “computing for everyone” with adoption of the Alice programming language. Is Alice now accessible, i.e. its environment supports screen readers and keyboard only interaction? Ditto for the textbook examples and student exercises? If not, how do legally blind and other students with hand control issues accomplish the course objectives? If earlier barriers have been overcome, it would be great to understand those achievements.

    Certainly, all the arguments for Beth Simon’s course apply to visually impaired students and citizens. Alice has achieved its goals of promoting education through a visually enhanced pedagogy. My questions for computing educators is how these goals are to be reconciled.

    Thanks, Mark, for raising these issues earlier in Are we making progress?

    My latest take as a visually impaired computing professional asks “will computer science meet accessibility in 2011?” at

    These are exciting times for people with disabilities and those interested in their education and employment. Apple has generated wild enthusiasm by hitting the mark with VoiceOver built in to the OS and in apps. Windows now has a capable, free screen reader, NVDA, a testimony to the power of some blind Australian programmers leading an international open source project.

    On the more frightening side, the Obama administration Departments of Justice and Education seem to mean business about that “everyone” claim. There’s real progress with Yahoo, IBM, and many gov sites to remedy web accessibility problems. Check in with #a11y or #accessibility on Twitter for the latest advances and advocacy.

    And the cool thing about these disability related problems with computing is the opportunity to apply computational thinking. Conceptually, semantics, representations, and progressive enhancement offer exactly what is needed to refresh pedagogical tools, books, web sites, and skill sets. Just open up our accessibility options, and the experience of blind folks is right at our fingertips and ears. Seriously, do it now, find the device or computer voice and listen a while. Next comes the fascinating cognitive challenges of “NonVisual visualization” and other forms of nontraditional literacy.

    While it looks like there’s a productive task force on accessible software engineering in the 2010 conference, you SIGCSE folks ought to really glom onto this moment and develop whole new, more universal, ways of learning.
    Let’s post our progress in computing for the next generations of disabled students which also will benefit the not yet disabled computer user population and everyone many times over.

    Thanks for listening,


  • 12. Lisa Kaczmarczyk  |  January 20, 2011 at 8:58 pm

    I’d like to back up a bit and comment in a different way on the original question that led to the threshold comments. I sat in on Beth’s course once a week all last Fall and wrote about it almost every week in my interdisciplinary computing blog. I am also familiar with the history of the course prior to this implementation of it as an APCS trial, and I was part of the interdepartmental team that spent close to 2 years discussing and deciding how to revamp the class.

    What I saw as I sat in on the course last fall was pretty amazing and not something that can be conveyed easily unless you were there (I did write about it in my blog however). What I saw was that the students (in a large lecture hall) were for the most part engaged, interested, off their texting phones and Facebook. Many students asked questions, and they would at times react spontaneously as a group to what was happening in class. (cheer, clap, sigh etc) When asked to discuss a topic in small groups, they actively discussed the content and didn’t do very much talking about non-class related issues.

    If nothing else, this level of engagement, which persisted over the entire term, was darned impressive when you consider that this was a required course for a large group of freshmen who were considering majoring in almost anything imaginable.

  • […] another take on the “Computing for Everyone” theme that is near and dear to me. I’ve been exploring this idea in my talks and […]


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 10,184 other subscribers


Recent Posts

Blog Stats

  • 2,049,223 hits
January 2011

CS Teaching Tips

%d bloggers like this: