Computer Science Teacher
Computer Science Teacher - Thoughts and Information from Alfred Thompson

September, 2009

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    What Does It Take to Make Change in CS Education?


    This started out as a comment on Mark Guzdial’s blog post What changes CS Education? which you of course must read. No really. I’ll even wait. Back? OK a key summary jumped out at me:

    My first pass analysis suggests that, to make change in CS, invent a language or tool at a well-known institution.  Textbooks or curricula rarely make change, and it’s really hard to get attention when you’re not at a “name” institution.

    I tend to agree that to effect change in CS education you have to have a tool or language from a name institution. Would BASIC exist today if it hadn't been invented at Dartmouth? Probably not. But even that pedigree hasn't been enough to keep it going as a main stream first CS language. Why? That I’m not sure since I firmly believe that Visual Basic .NET is as good an object oriented programming language out there (better than C++ or Java – again my opinion) and much better as a teaching language (again an opinion I am aware many do not share – but what do they know? :-) ) There is probably some industry influence though.

    What I have observed, or think I have observed, is that many ideas come first in industry and win over academics before or at best in parallel with industry. I go way back to structured programming which was the up and coming paradigm when I was an undergraduate. It seems to have started in industry because existing code at the time was a mess to debug and maintain. There was some resistance to it in industry in some circles because it required some re-learning. Educational institutions seemed to welcome it quickly. I saw it very quickly come to dominate the curriculum at the university I was attending. As students graduated they brought this paradigm into industry and it took over every where. So I saw what seemed as a circular path where an idea started on one side, moved to another and then won in both sides.

    When PASCAL came out I had been working in industry for a while. A number of new hires had come to work in my development group and had been well trained in PASCAL. It soon became a dominate language in our team. IN this case PASCAL started in education and because it was good, or perceived as good, industry started adopting it and that drove more acceptance in academia.

    With C++ we saw a reverting to what I saw in structured programming. IN spite of being developed at the influential Bell Labs C++ and object oriented programming was slow to be adopted in industry. While many people loved the idea they were not ready for a new paradigm. A lot of C++ programming was C programming using a C++ compiler. That is until academics saw the real potential and started teaching it for real. Now you’d think academia was following industry when that is not quite the case.

    SO what if you want to make a change now? Tools are critical. Alice came from Carnegie Mellon and was an early entry into that particular model of development. Scratch is from MIT and has come along later. Scratch is rapidly growing but would it be doing so if it were not from MIT? Frankly I doubt it. Not that it isn’t any good – to the contrary I love it. But rather because many educators would not look beyond the differences between Scratch and Alice if the name MIT were not attached. I wonder if we are missing good, perhaps even great, tools because they are not from name institutions? Could be.

    How about industry in all this? Well some parts of industry are name institutions. Bell Labs certainly was in its day. Microsoft Research is an interesting hybrid of a semi-academic institution that is part of a for profit company. Kodu is certainly getting a good look these days. While the graphics are amazing and the tool looks like it has huge potential coming from Microsoft Research clearly gets people to look at it. But clearly it is harder for a commercial development to make it into academia that it is for a tool/language developed at an academic institution in general.

    Java did some from industry but in many ways it was the right tool at the right time. C++ while being very powerful tends to still be somewhat dangerous with memory management being only the most obvious pitfall. Garbage collection, while not a new idea, when joined with object oriented programming was a natural adoption for academia. C# and VB have the same attributes but there is inertia – what is the added value in changing languages away from Java? Probably more of an advantage for professional programmers than for student programmers. (Though I will continue to say that I think VB is a great first language be cause I have been a fan of BASIC for over 35 years.)

    So what is the next educational change? I think it is probably the sort of programming that Alice, Scratch and Kodu provide. Make it visual and pretty. Remove the syntax issues from the equation. I think there are some limitations in these tools that make a transition to a more traditional language a requirement sooner rather than later. Variables are one big issue I see for example. So is programming solutions beyond those limited domains. Despite the popularity of Java I don’t see that as the logical next (or first real language depending on your view) because it is just too complicated a next step. More likely is a dynamic language like Python or perhaps a very simple language like Small Basic. Small Basic has a disadvantage of not coming from a name institution (it’s from Microsoft but not from Microsoft Research – people make a distinction) though as well as being a late comer. Python has more fans and already much more support material.

    I could be wrong. The Alice team is spending a lot of time and effort making the move from Alice to Java easier. And CMU is still a big name institution. What I’d really like to see is a tool that takes the Alice/Scratch/Squeak paradigm of programming and expands it to allow for programming more solutions in more domains. Add data base support for example. make it easier and faster to create and use variables. Better parameter support. Break through the walled gardens. Let people create web applications, cell phone applications, and support more means of IO. Make it less necessary to move to more conventional languages as soon as currently Where would that take us?

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Engaging Students in Computer Science – Teacher Workshop in New Jersey


    I’ll be heading to New Jersey in a couple of weeks. Now if you are not from New jersey you may not think that is a good thing. A lot of people have a very limited perception about New Jersey from some TV shows and movies I don’t have to name. But those of us in the know understand that New Jersey is aptly named “The Garden State.” The people there are great and I enjoy attending and speaking at events there a couple of times a year. So I’m pleased that I will be speaking at a workshop day at Drew University that is being organized with the Computer Science Teachers Association NJ chapter Saturday, October 17, 2009.

    Drew University and CSTA Northern-NJ Chapter will host a CSTA TECS workshop for computing teachers on Engaging Students in Computer Science.  The workshop will be held at Drew University on

    Saturday, October 17, 2009.

    The workshop will include the following presentations:

    • The Real Projects for Real  Clients Course ( RPRCC) Initiative: Attracting Young Women to Computing Majors: An ACM-W Project Presented by David Klappholz from Stevens Institute of Technology
    • Introduction to Alice2.2 and Alice 3 Presented by Don Slater from CMU and part of the Alice team there
    • Promoting a Code of Ethics and Professional  Conduct throughout your Computer Science Curriculum Presented by Steve Kass from Drew University
    • Introduction to Programming Through Game Development Using Microsoft XNA Game Studio Presented by Alfred Thompson which would be me. :-)

    For more information about the workshop visit

    It promises to be a very interesting and educational day. I’m really looking forward to it. I hope to see some of my blog readers there.

  • Computer Science Teacher - Thoughts and Information from Alfred Thompson

    Zune HD as a programming/teaching platform?


    The idea of games that use accelerometers strikes me as particularly interesting an several levels. The most obvious is for creating games of course. But looking deeper I like the idea that one could teach things with the right software. Things around physics and math for example. I need to spend some deep brainstorming on the idea because until now (short of some hardware hacking with Wii controllers) I didn’t have a good tool for it. I’ve also been interested in touch interfaces because of things like the Microsoft Surface and multi-touch in Windows 7 and other things but haven’t had the right hardware for trying that out either.

    It looks like that changes with yesterday's announcements around the new Zune HD. Besides being a great MP3 player with a lot of cool features there is new software for programming the devices.

    The XNA team has released a set of XNA Game Studio 3.1 Zune Extensions which are discussed in more detail at the XNA Forums and the XNA blog. The teaser bits are:

    This add-on for XNA Game Studio 3.1 adds the following functionality to the product:

    · The ability to target and develop for the Zune HD media player.

    · The addition of new Touch APIs to the XNA Framework for use on the Zune HD.

    · The addition of new Accelerometer APIs to the XNA Framework for use on the Zune HD.

    I’m told that most code written for previous Zune devices should port over pretty easily BTW. Dan Waters who is the Zune guy for me (he literally wrote the book on developing games for Zune using XNA) is getting a Zune HD this week so I’m going to look and see where he takes things since I’m not getting mine for a little while yet. Are you getting one? Are you thinking about creating games for it? What would you like to do with the touch and accelerometer APIs?

Page 3 of 6 (17 items) 12345»