Arguing against Computer Programming for All

June 12, 2012 at 8:04 am 29 comments

ReadWriteWeb had a piece recently on why to have computing for everybody.  It’s a nice piece to add to the other articles that have been published lately on the topic.  What I found most interesting were the comments, which argued strongly against the computing-for-all perspective, suggesting instead that programming is too hard and too boring.  Computing is important for everyone, but the tools may not be right yet.  It isn’t obvious to me that programming must be too hard, must be too boring.  How much easier can we make it, and still make it useful?

As I’ve said in your previous article, to paraphrase ARE YOU HIGH??? There is an analogy to be drawn between learning Mathematics and Computer Science. Both require a lot of abstract thinking – in different ways to be sure but nonetheless ABSTRACT THINKING. Most people find learning math to be a PAINFUL EXPERIENCE. I imagine the same will be true of computer programming. There is quite a lot of impetus to learn how to program mobile devices these days and yet the number of Computer Science majors here  in America remains relatively the same. So clearly there is a substantial ability barrier to programming in any meaningful sense.

There’s also the boredom barrier. You mentioned children’s capacity to memorize endless facts about Pokemon. The difference here is that Children find Pokemon ENTERTAINING however, how does a teacher make Computer Programming entertaining?! They can’t because it’s impossible. If you start at the low level or even if you start at the windows UI level it simply is boring as hell. Average children will not be able to focus their attention on the programming subject.

Learning spoken languages are completely different because the student is most likely interacting with someone who is already speaking the target language. That interactivity maintains their learning focus. Plus, when learning a spoken language there is ALWAYS context, you are referring to everyday persons, places and things which the student already has experience of. With Computer Programming sometimes there are concepts that have no context whatsoever and it makes it almost impossible to memorize. And in the case of the rightfully reviled Microsoft there are points where programming structures directly contradict themselves but it’s OK because the Compiler is programmed to catch that particular situation.

Maybe it’s a glass is half empty or glass is half full point of view problem, but most people simply don’t have the intellectual capacity to learn computer science/computer programming. Learning a spoken language is FAR EASIER.

via Computer Programming for All: A New Standard of Literacy.

Entry filed under: Uncategorized. Tags: .

Next-Generation Molecular Workbench – HTML5-based Scientific Models, Visualizations, Graphing, & Probeware Congratulations to Stephen Edwards and Virginia Tech: An endowed chair for innovation in engineering education

29 Comments Add your own

  • 1. Neil Brown  |  June 12, 2012 at 8:17 am

    To pick on a couple of comments: the idea that it is impossible to make programming entertaining is nonsense. Scratch, Greenfoot et al have been showing that for years now. (See, for example: http://computingteacher.edublogs.org/2012/06/11/greenfoot-6-some-reflections/).

    Programming does have a large amount of interactivity because of the compiler. The compiler isn’t the most useful conservation partner (“missing semi-colon”), but it’s still strictly more interaction in a school context than students in subject such as maths or english, who must wait for the teacher or peers (both of which are also available in programming).

    Lots of teachers I’ve spoken to who want to introduce computing, still attach phrases such as “of course, this would only be for my gifted and talented students” or “this is only suitable for about 5% of students”. (But the same could easily be said of maths if it was not already mandatory, and it’s not like art and music are for everyone either…!) In the UK I think the realistic goal is that some computing will be mandatory at what we call Key Stages 2 and 3 (ages 7 to 14), followed by an option at Key Stages 4 and 5 (ages 14 to 18), stages at which only English and Maths are typically mandatory. This would give the students enough exposure pre-14 to make a sensible choice at 14 about whether to pursue computing. And I think the kinds of computing that will be on offer pre-14 will be accessible/approachable for the majority of students.

    Reply
    • 2. Mike Thayer (@gfrblxt)  |  June 12, 2012 at 10:45 am

      I was wondering if someone was going to bring up mathematics analogously with computer science. I can definitely see connections if one takes the statement “Computing is right for everyone, but the tools may not be right yet” and replaces “Computing” by “Math”.

      Here’s a different (but I hope related) question, which I’ve been mulling over – if you had to start a school system completely from scratch, teaching whatever topics you saw fit, when would you introduce computing, and would you teach mathematics differently? To me, the vague answers I’ve come up with so far are (1) as early as possible, and (2) yes 🙂

      Reply
    • 3. Mark Guzdial  |  June 12, 2012 at 10:54 am

      Neil, the blog you reference is really nice — exciting reaction, from a clearly engaged and talented teacher. But it’s not evidence. It’s self-report of teacher-observation from a teacher who is choosing to try Greenfoot. That’s a far cry from a teacher assigned to meeting a CS learning objective in a random classroom, which will certainly happen if computing is mandatory. Greenfoot and Scratch may both be “not boring” and “not hard” enough, but I don’t know that we know it yet. I love Greenfoot and teach it, but doing it everywhere for everyone is a different standard. My prediction is that Greenfoot is too difficult for most high school students (ages 14 to 18) because of the Java syntax.

      Andy Ko’s work does point to how to make the compiler a useful partner. I believe that we need to do more work to improve the tools.

      Reply
      • 4. Andy Ko  |  June 12, 2012 at 11:53 am

        Thanks for the plug; my student’s work on Gidget is revealing increasingly strong evidence that with the right tools—and more importantly, the right framing of what a computer is—programming can be fun to a degree that many kinds of rank novices will engage in discretionary learning of programming. The underlying claim here is that there is a strong interaction between the appeal of a learning activity and the mediums in which it is taught.

        This applies to any literacy. For example, my 10 year old’s single biggest complaint about 5th grade this year was that her teacher’s writing prompts were boring. She wants to include photos with what she writes and she wants to share what she’s written with her friends. She doesn’t find paper and pencil, with an audience of one (her teacher), to be particularly engaging. Moreover, because its not engaging, she perceives it to be more difficult to learn, because she has to force herself to pay attention and engage.

        Reply
        • 5. Mark Guzdial  |  June 12, 2012 at 12:00 pm

          Ooh! Exciting! Are there new papers on Gidget that you could point us to?

          Your analysis of your 10 year old’s writing class is EXACTLY why we did MediaComp the way that we did. We wanted students to work on something that they would find personally meaningful, e.g., programming their own image, sound, and video creations. And we wanted students to share what they were doing in an on-line gallery. That latter has turned out to be in conflict with GT’s interpretation of FERPA, so I’m trying to figure out if there’s some way that I can do galleries this summer, while admonishing the students not to put their names or anything personal into their creations (which may ruin the whole point of expressing and sharing something of yourself). But I’m totally in agreement with your suggestion for what can make courses like this be perceived as easier and more interesting.

          Reply
      • 6. Neil Brown  |  June 12, 2012 at 2:48 pm

        Mark — you’re right that it’s not evidence. Think of it more as an existence proof! I was particularly targeting the comment that “how does a teacher make Computer Programming entertaining?! They can’t because it’s impossible.” It’s clearly not impossible. I think it’s actually fairly easy to make computing entertaining, but the challenge is to be entertaining and educating!

        More evidence would be fantastic, but with a potentially big push this September in the UK, we’ll have to see what the teachers can do with the new opportunity with the (sadly sparse) skills, (lots of) tools and (little?) evidence we have.

        [I agree with your point about the syntax being hard. It’s an area we’re looking at.]

        Reply
        • 7. Mark Guzdial  |  June 12, 2012 at 3:37 pm

          Absolutely — we do have existence proofs that we can make computer programming entertaining. Can we make it engaging for the majority of students? (We’ll never get all.) To be determined.

          Reply
  • 8. dwees  |  June 12, 2012 at 9:14 am

    I’m planning on testing this week to see if kindergarteners, 3rd graders, and 4th graders think programming is boring – using Turtle Art with the little ones, and Scratch with the oldest ones. My son doesn’t think programming is boring, so I’m hopeful the other kids in his class will think it is interesting. If not, I have some backup stations for the kids to work at.

    It would be interesting to point this person at Seymour Papert’s work, in which I think he pretty much blows the idea that “most people don’t have the intellectual capacity to program” out of the water. I hate that kind of elitist bs.

    Reply
    • 9. Mark Guzdial  |  June 12, 2012 at 10:57 am

      How will you know if they find it boring, David?

      Seymour certainly believed that everyone could program, and do mathematics, but I don’t believe that he demonstrated it. Seymour (with two PhD’s in Mathematics) was an amazingly gifted teacher, and had very deep understanding that he brought to the challenge of helping the learner. Could any teacher do what Seymour did? Not obvious.

      I find a lot of the anti-programming rhetoric elitist, too. But it is worth considering seriously. How do we scale “computing for everyone” to literally everyone? How will our approach, tools, and curriculum have to change when we think about everyone?

      Reply
      • 10. dwees  |  June 13, 2012 at 12:07 pm

        No worries about finding out if the kids think programming is boring – kids that age are explicit in their interest or disinterest in a subject area. From my experience with the 3rd graders yesterday, only 1 child seemed disinterested at times, and that may have been because she was the only third wheel in a room of people working with a partner. The rating from the other students was an enthusiastic thumbs up. Obviously, I’ll be monitoring this situation over time, as the novelty effect will presumably wear off.

        We started with the idea of programming being a way of talking to computers, and that computers are not able to understand our language, so we have to speak their language if we want to control them. So we practised using computer language with students “programming” each other first (using basically an extreme subset of Logo with three commands – step, turn and repeat n) with students taking turns acting as the turtle, and the programmer. The next challenge was to switch from moving in physical space to moving on paper, which is a small abstraction, and none of the students had difficulty with it. After this, we started up the computers, and the students experimented with Turtle Art. At first they drew pretty much random stuff, and eventually some of them worked on challenges I provided (straight from the Sugar Labs Turtle Art website).

        After the session today, the students told me they wanted to try Scratch. I had told them that Scratch was harder to use than Turtle Art, and they told me that was why they wanted to use it.

        As for “scaling up” programming, I think this is a problem we have in education in general. We think we can scale up initiatives which are highly dependent on personalities, and expect the results to hold true for most kids, which of course they don’t. So instead of trying to scale up one model of learning how to program for all kids, it seems to me that supporting grass roots initiatives that come from the schools or communities will be far more successful. Provide space, tools, training as required, but let teachers/parents/community members design their own programs (borrowing from other people’s programs as needed) to suit the needs of their particular community.

        Reply
  • 11. Carl Alphonce  |  June 12, 2012 at 11:28 am

    What a great post – it has stirred up lots of thoughts, some of which I might even be able to articulate sensibly 😉

    Almost two years ago I started to take piano lessons, again. I had lessons when I had a single-digit age, and then again for a bit in undergrad. It’s fascinating to be a student again, especially since I now have experience teaching.

    When I was younger I wanted to be able to play music. I heard music on the radio, played my own records, etc. but was frustrated by the poor quality of music I was able to produce. Playing scales, practicing technique and doing all those things which my teachers told me were important were “boring”, so I didn’t do them, and I didn’t progress much. I was reduced to memorizing pieces by brute force. As a result I could play a few things, not very musically, and I certainly could not pick up new pieces easily.

    Things are very different now. I actually enjoy playing my scales, doing my technique, having discussions with my teacher about the pieces I am working on, etc. I am still not a very good musician, but I see the importance of the foundational material and skills, and I am eager to learn more of it. I understand now how the “boring” stuff is what will eventually advance my musicianship.

    I also don’t recall having been taught much theory when I was young. I believe the more theory I have under my belt the better a sight-reader I will become, because I will not be reading music as individual dots on the page but will become literate, and will be able to read the musical structure.

    I often reflect on how many of these same issues come up in teaching CS1 and CS2. There is a eagerness on the part of students to write the next “Angry Birds”, but not so much in learning the nitty-gritty of how to do it (the “boring stuff”), or of why certain software designs are preferred over others (the “theory stuff”).

    I certainly believe that anyone has the ability to learn not only how to program (performance from a design?), but also to do competent software design (composition?). To get there, students probably need to be willing to put aside a desire for instant gratification, take a longer-term view of the process, practice their technique on a regular basis, and learn the larger context in which their technique will be put to use.

    [As I am writing this I am also formulating thoughts on whether everyone needs to learn to do software development (I don’t believe so). I do feel everyone needs to have a much better understanding of the technological world around them. If I get around to it I’ll post another comment later. Gotta do scales now 🙂 ]

    Reply
  • 12. Rob St. Amant  |  June 12, 2012 at 12:04 pm

    From the article: Just as a person literate in English can compose everything from a sonnet to a statute, a person literate in programming languages can automate repetitive tasks, saving time for things only a human can do; distribute access to systems of communication and control to large groups of people; and train machines to do things they’ve never done before.

    In a lot of articles along these lines, I see a too-sharp division between people who know how to use computers and people who can program computers. I think there could be a middle ground of people who understand how computers work without necessarily being able to program them. Here’s how I’d recast that sentence:

    A person with some general knowledge of computing can make better judgments about the possible automation of a given repetitive task, saving time for things only a human can do; understand the pros and cons of distributing access to systems of communication and control to large groups of people; and train machines to do things they’ve never done before, having understood some simple examples of what’s possible with machine learning.

    We teach programming partly (mostly?) to convey important underlying concepts; those concepts are worthwhile and even useful on their own, even for people who will never write a program.

    Reply
  • 13. Alfred Thompson  |  June 12, 2012 at 12:15 pm

    The wrong teacher can make any subject dull and boring. The right teacher can make any subject fun and interesting. I no longer believe in dull boring subjects. As for programming itself – I love doing it. I find it a lot of fun. That fun is what got me into my career back when I was a college student looking to fill a general education credit. Hard? Hard is what you make of it.

    Reply
  • 14. Cecily  |  June 12, 2012 at 1:32 pm

    I am intrigued by this post, for a couple of reasons. First, I think the concept of “computing” in “computing for everyone” is a little too broad. If “computing” means a little HTML and maybe a bit of JavaScript, then I think I could agree. I have gotten plenty of title 1, special ed secondary(grad 7-12)kids through those concepts with no major problems. If “computing” means “Java”, I quickly become much more skeptical. Second, I think the comparison to learning spoken language, is interesting, although I would have done it differently. Spoken languages typically have much more vocabulary than programming languages- a huge part of learning a human language is learning vocabulary. Spoken languages also have much more complicated syntax than programming languages- try making a compiler for grammatically correct English; its tough!!The only area in which learning a spoken language is much easier is the semantics- if you understand the concept of “apple” in English, you probably also understand the concept of “manzana” in Spanish or “apfel” in German. However, if you understand the concept of “loop” in English, you have no advantage over somebody who doesn’t when learning the concept of “loop” in Java. This is the “abstract thinking” part that a lot of people struggle with. I am not sure whether or not this part of programming is for everybody, but there are plenty of other concepts that can be covered first that i think everybody can learn.

    Reply
  • 15. Mike Byrne  |  June 12, 2012 at 4:00 pm

    I think the arguments for UNIVERSAL CS education are weak. I am in total agreement that MORE people should learn something about computing, but I fail to see a compelling argument for *universal* CS ed.

    To a first order of approximation, all academics believe everyone should have more (or at least some) training in their field. All the Linguistics professors I know think everyone should take some Linguistics. All the Comparative Literature professors I know think everyone should take some Comparative Literature, etc. CS is simply a new horse in the race. Incidentally, I understand that this is a bit of a caricature, since I myself would not argue that every single college student should be required to take a Psychology course.

    Regardless, arguments like this are not exactly new in academic are certainly come up from all corners. So what makes CS special? Well, according to articles like the one Mark linked, essentially, it’s because “computing is everywhere” and/or “computing is useful.”

    The “everywhere” argument isn’t very good. There are things that are MUCH more universal than computing, but we don’t have general education requirements for those things, otherwise we’d require everyone to take classes in Electrical Engineering, or at least electronics–there are certainly more total electrical devices than there are computers–and WAY more people use language than electronics, so by that logic you need to get in line behind Linguistics as well. Just because computers are now everyday devices in the upper-middle-class U.S. does not put them on the same footing as, say, plumbing. Why don’t we teach everyone to be a plumber? I have days when I don’t directly use a computing device at all, but I never have days when I don’t use plumbing. (I don’t camp.)

    The “utility” argument is maybe a little better, but again, just because something is widely useful doesn’t mean we require it of everybody. For example, I would argue that in getting through everyday life and making decisions that really matter, teaching everybody something about probability would be a LOT more useful than teaching everybody how to program. We, as a society, probably throw a LOT more time, money, energy, and social capital down the drain because of poor understanding of risk and risk mitigation than we do because of failure to be able to program. So, shouldn’t we require that everyone have a good class in basic probability (and maybe a little statistics?). Once again, I would argue that CS has to get in line behind a lot of other things that would be much more useful than programming.

    Don’t take this to mean that I don’t think computing is important. I *do* think it’s important–really, really important. I agree that we’d be much better off if more students had exposure to and a little skill with programming. However, that’s true of numerous things, and doesn’t justify a universal academic requirement. We all know that there are hordes of students coming out of high schools each year who are barely able to produce a decent paragraph of English text or who are still petrified of mathematics in any form. That seems to me to be a bigger problem to me than trying to push universal CS.

    I just don’t see the win in forcing students who are not interested in CS to take it. The again, I don’t see the win in forcing students who aren’t interested in calculus to take that, either. (Again, if anything, I’d argue that students don’t take enough math in general, but why calculus?) Yes, computing is increasingly important and potentially useful–but so are lots of other things, and we don’t have universal requirements for everything in the class “important and useful,” so why should CS get special treatment?

    Reply
    • 16. Mark Guzdial  |  June 12, 2012 at 4:26 pm

      You raise a good point, Mike. For example, I’d rather have all Liberal Arts majors learn something about probability and statistics than computer science — I do wonder if computer science might not make it easier to learn the probability and statistics. (I’m continuing to work on the Computational Freakonomics book with Richard Catrambone, and I find it interesting/fun to be able to use computing to create coin flipping simulations and trying correlations on made-up data.)

      It’s interesting to explore for whom (or rather, for which majors) computing should be a required subject. Of course, as a computer scientist and computing educator, my opinion on this is hopelessly biased, but it’s still interesting to explore.

      • It’s an easy argument for all Engineering students.
      • I suspect that all Mathematics students already learn programming.
      • Should all Psychology students? GT argues “Yes,” because they want psychology students to be able to create their own experimental setups. That’s not the argument I’d make, but they know what their students need better than me.
      • Probably the rest of Science goes pretty easily. Physicists, and Earth and Atmospheric Sciences are probably all already learning to program. Biology, Chemistry, and Geology — I’m betting that the argument for simulations would work there, and simulations are one of the few areas where you really need programming. To define a simulation is to program.
      • Liberal Arts? I know that some History departments are essentially computer science departments, because of the reliance on data analysis and simulations, but I doubt that that’s universal. I could see an argument for English, arguing like Larissa’s website.
      • Probably the most interesting for me is Architecture. The Architecture faculty seem to value programming for all their students (e.g., to control drafting and CNC machines, which is more common in Architecture, I’m told), but their students are the most vocal in complaining about it at Georgia Tech.
      • Management/business? Pre-Med (one of the arguments that Jeannette Wing makes)? Pre-law?
      Reply
      • 17. Alfred Thompson  |  June 12, 2012 at 4:31 pm

        As a Sociology major I had to take statistics. I wrote computer programs to do all the homework. It helped me learn the math behind the statistics a lot better than I would have otherwise. The professor quite agreed much to the distress of classmates who thought using the computer was cheating.

        Reply
      • 18. Mike Byrne  |  June 13, 2012 at 12:25 am

        I like that perspective, Mark. I think the question “who should be forced to learn CS and why?” is a much better one than “how do we get everyone to learn CS?” I also strongly suspect that it would be a lot easier to teach CS if the students had a clear understanding of what it is that makes it important for them. Of course, that’s not a new problem for CS or anything else that’s “required,” but it’s still worth asking.

        Oh, and I would be THRILLED if programming could be a requirement for Psyc majors. Your colleagues in Psyc are right, they should all learn it. The listed reason is good, but there are others, but that’s kind of off-topic here…

        Reply
      • 19. gasstationwithoutpumps  |  June 13, 2012 at 6:23 pm

        Most bio majors are never going to become scientists or need computation. Those who are going to become researchers should pick up Python so that they can do format conversions and other simple computations to get their data into forms suitable for use with bioinformatics programs.

        I’d put statistics much higher on the “need to know” list than computation, and UCSC now does have a statistical reasoning requirement in general ed in addition to the mathematical and formal reasoning requirement: http://advising.ucsc.edu/student/GenEdReqs.pdf

        I’d be happy if all high schools offered decent CS courses as electives, even if only 10% of the students took them.

        Reply
        • 20. Mark Guzdial  |  June 14, 2012 at 10:22 am

          What did you think of the Bio 2010 report, which recommends computational modeling for all biology majors? Maybe out-of-date, or was the recommendation wrong? I’ve cited it several times, and I know that it influenced our Biology curriculum at Georgia Tech, but I was never convinced that the Biology faculty bought in to it. On the other hand, when we had started planning a CS1 in a Biology context, the Biology faculty were completely engaged and loved the idea — then the Great Recession hit, and nothing else ever happened with it.

          Reply
          • 21. gasstationwithoutpumps  |  June 14, 2012 at 11:48 am

            Biology is not a model-driven field (unlike, say, physics). Although there is a growing field of systems biology that is interested in model-building, a lot of the work there is in figuring out how to infer models from huge data sets, rather than the sort of modeling that a first computational modeling course is likely to include (which I expect was mainly 50-year-old population modeling).

            I do believe that all modern biologists need to learn computation, but not for modeling. They need to learn it for “data wrangling”—storing, accessing, and analyzing huge data sets. It is now routine for a small bio lab to collect terabytes of noisy data from sequencing DNA and RNA, and the cost of sequencing is dropping far faster than Moore’s Law is improving computers.

            They need to learn both off-the-shelf tools (which ones are most useful changes almost monthly, so they need more fundamental understanding than just end-user training) and how to roll their own—particularly how to write format-changing programs that take data collected in one format that needs to be published or analyzed in a different format. Far too many of them think that putting the data in an Excel spreadsheet is a good idea. I believe that some high profile forced retractions of papers resulted from problems like off-by-one errors in Excel spreadsheets or the inability of the spreadsheets to handle missing data properly—the spreadsheets made it far too easy to handle the data in a sloppy way that invalidated the conclusions.

            A first computation for biology course needs to focus on DATA and data manipulation, which all biologists will have to do in some form, not on modeling, which is a much more esoteric activity. I’d rather see them learn some SQL than how to write a population model, though I think that Python format conversions are even more likely to be useful to them. Something like the O’Reilly book Bioinformatics Programming using Python by Mitchell Model looks promising based on the Table of Contents, though my teaching assignment was changed before I had really gotten into reading the book carefully.

            Reply
  • 22. Laura  |  June 13, 2012 at 6:53 am

    Here’s an anecdotal example. Yesterday, I was in the registrars office (k-12). She was working with final grades and trying to calculate honors, which has conditions like a certain grade in each semester and a certain grade on the exams. The built-in reports did not offer an “and” option, i.e. only pull the students who meet all these conditions. She knew, basically what she needed to do, but one, the system didn’t allow her to make a custom report, and two, her only other tool was excel. I told her she could create a script in excel to get the data she needed, but she decided it would take too long. She was, essentially, right, because she didn’t have the ready knowledge to build the script. Had she had even a semester’s worth of computing, she might have had the confidence to tackle the problem. I would have spent the 15-20 minutes necessary to automate the process to save myself hours of work later.

    Is that CS? Maybe. It’s certainly more practical excel training than most people get. Most of the excel classes I’ve experienced cover aesthetics and maybe sums, products if you’re lucky. I say skip aesthics and get to more formulas. But maybe that’s not fun enough.

    Reply
    • 23. Rob St. Amant  |  June 13, 2012 at 8:13 am

      Is that CS? Maybe.

      I think this points to a larger challenge in CS education. If I were in the same position as the person you were helping, I’d have run into difficulties, too, because I don’t regularly use Excel. (I do most data management stuff with statistics packages I’m familar with, or writing snippets of code in a general-purpose language.) If Excel were the only other tool available, then having years of experience in computer science wouldn’t help me immediately solve the problem.

      I was thinking about this issue a few days ago while browsing through old CS AP exams, and thinking about how important the new AP CS Principles are. It occurred to me that someone who aced the AP exam in 2003 might have had significant trouble with the exam in 2004, because of the switch from C++ to Java, even if that someone understood all the relevant concepts. In language-specific exams, a lot depends on knowing the syntax and semantics, and it’s possible to lose points even with a solid conceptual grounding. (For example, I find this note in the grading guidelines: “if a student declares ‘Fish fish;’, then uses Fish.move() instead of fish.move(), the one point deduction applies.” A comparable statement in a different language might be correct. When I program in languages other than the one I know best [Common Lisp], I have to keep reminding myself about the different convention for expressing method calls.)

      Back to Excel: I’d be happy if someone knew enough about computing to be able to specify how the task should be carried out. But this doesn’t necessarily help in solving problems with a given language.

      Reply
    • 26. Mark Miller  |  July 10, 2012 at 5:54 pm

      A lot can be gleaned by understanding some basic principles of how the notional machine you are using operates. Once you understand that, it’s possible to understand everything else you need (syntax, semantics) by looking at the “help” documentation, or user’s manual. I would say that knowledge, of understanding the most effective way to learn to program a new system, is something where a knowledge of computing/CS would come in handy for someone like the teacher you describe.

      The rub here is a lot of “help”/user manuals don’t contain information on how the notional machine operates. That would be the main roadblock. Not to say it would be impossible, given documentation. It would be frustrating, even with a knowledge of computing, if the teacher had never before used formulas in a spreadsheet.

      From your description of the teacher’s problem, it sounds to me like a cell formula applied to a column or row would’ve been sufficient. No need for a script. But then, maybe there was more to it.

      Even with the current deficit in user documentation, I think your example illustrates the point well that having this understanding empowers people, and not having it disables.

      I think a point that could be emphasized in the discussion is that by learning computing we can to some extent fashion computers to be the aides we want. We don’t have to relate to them like a typical client with their attorney in a courtroom. What I mean to get across is the sense of being at the affect of a system, with a “handler” (using a computing analogy here) trying to get you through it, but not always doing the best job, even so, because no matter how much you tell it, it has the job it’s been “trained” to do, and so doesn’t truly know what you know. Not that having a “handler” isn’t helpful, but (using the legal analogy now) having some knowledge of the law and legal procedure yourself would be in your interests as well. That’s one level of understanding that one can have about all this. There is also much more to this, if one is willing…

      Reply
      • 27. chaikens  |  July 11, 2012 at 10:06 am

        In my long experience, I’ve found that almost all programming textbooks, lecture contents, manuals, tutorials, guides, etc. do “contain” reasonably correct definitions of a notional machine, BUT: (1) This content is rarely identified as critical to learn and (2) Beginners typically don’t learn to think in terms of the notional machine even after reading or hearing this material.

        This material is either too close to the beginning or too much scattered through the middle.

        On the other hand, good programmers know to search documentation or do experiments to figure out what the notional machine is (or why code behaves in surprising ways) when they start to use a new programming language.

        Reply
  • 28. Oisín Mac Fhearaí  |  June 14, 2012 at 9:47 pm

    “The difference here is that Children find Pokemon ENTERTAINING however, how does a teacher make Computer Programming entertaining?! They can’t because it’s impossible.”

    This really seems bogus. Apart from the flaw of generalising from the author’s feelings to how all children must feel, this is akin to saying that children cannot find puzzles and creative arts entertaining. But of course children very often do enjoy those things, which I would suggest are at the heart of computer programming.

    What about all the children who were faced with a Basic interpreter when powering on their 1980s-era home computer? Plenty of them bothered to investigate and play with this mysterious interface and eventually discovered the great powers embodied within – even with no online references or Stack Overflow or Google.
    Perhaps I was lucky in that my Commodore 64 at least came with a user’s manual which gave some kind of crash course in Basic, although it didn’t really click for me until I tried STOS and then GFA Basic on the Atari ST a couple of years later.

    Perhaps it’s hard to make computer programming _classes_ entertaining, especially with wildly varying levels of interest and attention among the students, but I very much doubt that it is impossible.

    Reply
  • 29. David Wees  |  June 20, 2012 at 1:31 pm

    Just thought I’d share some feedback from some actual live students. Monday of this week, I introduced some basic programming concepts (using a very simplified system) to kindergartners, and last week I introduced it to 3rd and 4th graders.

    See http://davidwees.com/content/kindergarteners-programming and http://davidwees.com/content/programming-3rd-graders

    One of the little girls in the kindie class, when asked to put thumbs up or thumbs down, enthusiastically put all 4 of her limbs in the air and said she LOVED it. The top score in the 3rd grade classroom was an “infinity out of 10.”

    I think that assertions about what kids will enjoy and not enjoy should probably be tested with actual children.

    Now is this experiment scalable? I don’t know. How many mathematics educators are there in schools who also have a more than rudimentary understanding of programming? Not that many I suspect, but maybe enough so that the practice can slowly spread as more elementary school teachers start to understand that they too can understand programming, at least well enough to get kids started exploring. The best part of this experiment was the teachers’ reaction in my opinion – they saw how the kids could learn logical reasoning from the activity and how closely related what they were doing was to aspects of their curriculum.

    Reply

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 )

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,185 other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,060,405 hits
June 2012
M T W T F S S
 123
45678910
11121314151617
18192021222324
252627282930  

CS Teaching Tips


%d bloggers like this: