« Program or be Programmed | Main | Talking Across the K-12/Post Secondary Boundaries »

Maybe Course Proliferation Is a Bad Idea?

I was prompted after the last CSTA board meeting to write the following, which has now turned into a blog post.

My basic question is whether we are doing ourselves any favors by going for a variety of and proliferation of different courses in computer science.

My conclusion, of course, is that it's a bad idea, or else I would have phrased the title question differently and would have started this out differently.

At the university level, where I teach, the usual term for the course I'm talking about is "CS0", because that's the way it was put many years ago by ACM in the definition of the standard curriculum. CS1 and CS2 are the first two courses in the major; CS0 is the non-majors course that many of us believe should be taken by all students as part of general education requirements.

I would argue that there are two basic reasons for a CS0-like course.
* Because there is general purpose computer science subject matter that all students should learn in order to function effectively as citizens in modern society.
* Because students who study a CS0 course might well want to take more computer science either as majors or minors, and the job predictions and national interests say that more majors and minors is a good thing.

Both of these are laudable goals.

The first question that arises, then, is the extent to which argument 1 is accepted by those in positions of power in the school systems. Given the Running on Empty report and what we all know to be true, the answer is: not much. For the most part, the education world doesn't accept the contention that all students should study some basic computer science.

If reason 1 isn't accepted, we don't ever get a chance to argue reason 2.

So let's look at CS0 as defined by and supported by CSTA and ACM. By my count, we have at least four different statements of what could be, at the high school level, the CS0-like material that "everyone" ought to know.
* The Level 2 standard of CSTA;
* Exploring Computer Science;
* The new AP CS Principles course.
*CS0 as a university course defined by the standards of the professional organizations;

I look at all of these as being sufficiently similar that if we could get any one of them accepted on a mass scale, we would be very much farther ahead than we are now. No, if we had only one such course accepted, we would not be able to accommodate all possible students and interests. But if we are starting from zero (or nearly zero), then yes, getting to 50% is a win. If we are starting from zero, and we cannot make the case for any change whatsoever, then we aren't getting a win.

In addition to the CS0 courses that are not intended as part of a computer science undergraduate major, there is a plethora of courses that could be considered to be CS1, the first course in the major:
* Visual Basic;
* C++;
* Python;
* Java;
* AP Computer Science;
* and then there are other courses in Alice, and Scratch, and so on.

My arguments are fairly simple.
* The issue of getting CS into K-12 is not an intellectual issue of content, but rather a marketing issue (distinguishing real computer science from the use of computer applications; and making it clear that real computer science has serious value) and a logistics issue (displacing other desiderata in a world of scarce resources and a scattered and distributed world of largely public education).
* We have not been successful so far in convincing the bureaucracy that CS is really "there". I would maintain that if we cannot be coherent in our message about what real computer science is and how it should be taught, we will be unable to convince administrators that it is necessary.
* We do damage to our position by offering a plethora of CS0 options, because what we are doing is asking the school administrators to become the experts in computer science education in order to know what is best for their schools. We are the experts, not they. Their past position has been "no". If we require them first to become experts, we won't ever get them to "yes".
* We cannot lament the isolation felt by K-12 CS teachers if we contribute to that isolation. It has been said many times that the infrastructure costs (time, hardware, software, re-tooling, professional development, etc.) are much higher for CS than for other disciplines. By promoting five different courses, each of which requires PD, software, etc., we are creating a situation in which we need to be five times as successful (in terms of numbers) as other disciplines, in getting into the schools with teachers and classes, in order to generate the same sizes of teacher communities. Yes, we know that once one learns Spanish and French, Italian isn't all that hard, and once VB and Alice are mastered then Java can be dealt with. But we are at the zero to one step, not the two to three step, and that first step is a lot higher than the rest.

Summary:
That which gets us closer to a general acceptance of argument 1 is a good thing.
That which doesn't get us closer is not a good thing.

A plethora of general courses increases costs, isolation, PD needs, ..., and makes us look like True Believer fanatics instead of professionals with an established discipline.

Duncan Buell
CSTA Board of Directors

Comments

I can definitely see your point that promoting several courses can cause more harm than help. You have good points and support that I can understand and even agree with.

However, I would like to disagree (with caution) concerning one of your last points regarding the teachers. There is a wide array of CS teachers with different experiences and backgrounds. Perhaps a high school CS teacher with limited experience would be overwhelmed looking at several options, but what if the options actually helped them because it gave the teacher a choice. Having a choice in a field that is misunderstood by administrators and others is a positive. A teacher can go over the options and choose one that they would be the best at teaching. Lets say there were 20 teachers and each one chose the course that they could work the best with. I would argue then that the 20 schools would have a successful program. If all 20 teachers were only given one option then odds are a portion of them would struggle with that option and in turn their school may not have as successful of a course that year.

Please do not misunderstand me - I know no one teaches perfectly and we all can learn something. But I would argue that we all teach better or work with students better when we are comfortable with the topic or the curriculum. So my argument is that sometimes having choices is better.

My second argument has to do with the "costs" that are required. In a perfect world I would agree with you, that the "costs" are essential. However, with the teachers I work with in Ohio we are all short on funding for resources, PD, etc and yet are able to implement many different courses. One example you might site would be the ECS curriculum with the Lego Robots. Yes that would cost money for materials and perhaps PD, but if you don't have the funding then you could teach the ECS curriculum and not use that topic or find an alternative. If there is a will there is a way. I am sure there are many more examples where having money would be ideal but you can make it work without funding. I currently teach 3 different programming classes at the high school level and have not spent any money on curriculum or text books. I use free curriculum and/or free text books. I know that not all teachers are eager to start out with a brand new CS course with no funding but it can be done.

These are cautionary disagreements because I know not all teachers are as flexible and neither are the school districts. It is worth thinking about that options are not all bad and if a teacher is motivated funding will not hinder them.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)