What Does It Take to Make Change in CS Education?

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

What Does It Take to Make Change in CS Education?

Rate This
  • Comments 5

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?

  • These are good points.  But I feel the biggest change we need in K12 is simply having good CS education become available to more and more kids.  

    What I struggle with is this --> How do we make Computer Science "matter" throughout K12 ?  How many schools today teach little to no CS, or only teach CS because of the one teacher who is personally passionate about the subject -- Do the CS courseskeep their momentum when that person retires or moves on?  I know some parts of the US and the planet support K12 CS education more than my area (near Chicago), but I know there's much room for growth no matter where you are.

    Alfred mentions the "power of influence" -- I would love to see higher-ed institutions like CMU/MIT/GaTech/others, maybe in partnership with companies like MS/Sun/others, create and put their names and influence behind a program to sponsor teachers in advancing CS education at their schools.  Not just for one workshop, but involve them in an ongoing program that requires their contributions and participation, but also connects them with resources, a community, even connections to local IT professionals to include this perspective where it's valuable.  Maybe this is already happening and I'm not aware --> For example, does a community exist today with dozens of pre-APCS teachers using a standard Alice curriculum and projects, meeting in an online community every week or two, having ongoing training and enrichment, sending in comments / improvements / new activities for the standardized lesson plans, and having current teachers take the lead to bring in new teachers for next year's program?  Are the teachers getting a stipend / grant to participate?  How awesome that could be!  Is that already happening?

    Other academic subjects automatically get the school's and community's support because of state requirements and standardized testing in those subjects.  But CS educators are often in the position of having to fight for the schoolwide respect that their courses deserve.

    I truly believe CS is underappreciated for its ability to do so many "great educational things" like helping kids develop math and logic skills, express creativity, work and communicate in teams, plan their work from beginning to end, produce "authentic" final end-products, test/evaluate what they've done, etc. etc.  And a CS class is an environment which most students find very motivating (including many who are unmotivated elsewhere in their academics).

    I know, I'm preaching to the choir.  OK, time to get off my soapbox and enjoy the weekend.  Thanks for reading this far.  :-)

  • <i>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</i>

    There is database support for Squeak. It's called <a href="http://wiki.squeak.org/squeak/6052">SqueakDBX</a>. It's able to work with the backends you're familiar with: MySQL, SQL Server, Oracle, etc. Web applications have been supported on Squeak for quite a while now. There are a few web frameworks for it, the most prominent of which is <a href="http://seaside.st">Seaside</a>. It's been available for at least a few years now. What it's lacked has been documentation, though there's an excellent blog on how to set up a web server with Seaside at <a href="http://onsmalltalk.com">On Smalltalk</a>. I don't have anything on making variable creation easier and more parameter support. There is a professional developer release of Squeak called <a href="http://www.pharo-project.org/home">Pharo</a> which aims to be more developer-friendly.

    My guess is you're talking about expanding the libraries. This unfortunately is necessary for these languages to get the time of day. They may get them in one or two classes, but that's it.

    The downside of having a lot of libraries is they tend to obscure the know-how that went into them. We think there's a lot that we can "do with a language" when in fact we're really talking about the catalog of libraries available for it. In the profession (and I guess in academia) we use them as a crutch for solving problems, and we lose the ability to create our own solutions when the situation warrants it. Libraries are fine, but they should be used judiciously. Just as with a language, programmers can end up "imprinting" on a useful library and get themselves in trouble when a situation doesn't fit the library's design.

    Alice aims to be more of a storytelling environment, an avenue which one of Randy Pausch's students found made programming more appealing to newcomers.

    Scratch aims to be a kind of multimedia Logo-like environment.

    There's nothing saying that either of these couldn't take on the attributes you talk about, since Alice is written in Java (I think), and Scratch is written in Squeak. I would be cautious about the motivation to add more functionality to "make it more useful". CS needs to be rooted in a practice of exploration, design, and experimentation (the latter being severely lacking in most CS departments--this has been a problem for years). "Useful" is fine but it shouldn't be the only goal in the academic setting.

  • ::sigh::

    Forgive me for being an education purist, but I think this is part of the reason why we are in the pickle that we are in as a discipline.  Relying on tools or the industry to define the introductory experience, and even more so the novice experience is .. well.. crazy? ineffective? ridiculous? not sure what the right word is.

    When the biology department tries to decide what biology knowledge makes someone a literate citizen they don't look at what professional biologists are doing.  They don't look at what nifty tools are available for teaching biology.  They decide what it should mean for your average American to have an understanding of biology.  They define a set of broad standards that would allow a knowledgeable teacher to implement those standards in a classroom in one of many different ways, potentially using one or more of the tools available to them. Then they train the teachers.  To BOTH have an understanding of biology AND an understanding of what it means to teach biology - both to be familiar with the standard curriculum and the pedagogical nature of the course.

    How is this different from what we do?  We argue about what the right "foundation" is.  College CS people argue about why AP is not good, but the AP program is one of the few programs with a solid curriculum, that does TEACHER TRAINING.  While there are great things being done in a few places, its often hard to find something (outside of AP workshops) that a new/novice teacher can hold on to.

    We need to stop arguing about language, tools, etc. and decide what it means for the AVERAGE American to be literate in computing. (notice the computing - not the computer science, its a bigger question than just CS)  Then we need to write a set of standards, or agree that the ACM's standards are good.  There needs to be consensus in the message coming out from our community.  Then there are the economics to consider.  How are schools going to pay for this?

    Lots of work to be done, although I think we are starting to move in somewhat of the right direction.  Sorry for the long post.  Going to continue this on my blog.  http://www.virtualcompsci.net/blog

  • I commented briefly on Mark's post at http://tinyurl.com/no357y , in the context of other recent articles about change.  I think Mark was speaking mostly about CS education, not general education about computing, so his look at tools and languages is spot-on.  Owen Astrachan has been preaching that we need to stop talking about that stuff when we work with people outside the discipline on their problems, and I agree.  But the practical truth is that changing how universities teach CS to its majors is remarkably difficult, and languages, tools, and pedigree seem to matter.  A lot.  Figuring out what matters and then constructing strategies for introducing change that recognize reality is more likely to be productive than doing the same old thing.

  • I have mentioned this before but I see a major problem with the present state of CS in high schools as the lack of CS teacher education.  I have looked at the Montana colleges and a few of the surrounding States and CS for Teachers is pretty much non-existent.  My school has two CS teachers, me being one.  I have a minor in the field but have not taken a programming course in almost 20 years.  This is not from lack of trying. The local university offers nothing in the field after 3:00 nor in the summer.  The other teacher has learned programming here on the job.  Everything he does is from the book a day ahead of the students.  He is not happy about the situation.  Although University of Montana hypes itself as a leader in the field of education (whatever that means) there is absolutely no interests in CS as a teaching field.  To quote one of the Education department leaders “There simply is not enough interest to justify it”.  Our state requires at least a minor in CS to teach programming yet no minor is offered in-state.  I asked the Office of Public Instruction where this minor was offered and the reply was “out of state”.  My little bit of research indicates to me there is absolutely no interest in CS being taught in the high schools by either the State or the university system.  How can CS Education change if the departments, government and higher education, are not interested in training teachers in the field?  I cannot imagine Montana is that different from other states.  For most high school teachers (or prospective CS teachers) it is not practical to go to an out-of-state university that does offer a CSEd program in the summer.  Something has to change that “not enough interest” mentality in order to stimulate State universities to offer programs that are rapidly becoming educational necessities.  

Page 1 of 1 (5 items)