Here is my latest entry into my discussion with Mark Guzdial of Georgia Tech about the philosophy and approach to the first programming course both in K12 and in Higher Education.
The best place to view my comments in context is in Mark’s Blog:
Here are Mark’s Comments
Charles, by what definition do you claim “Computer Science is focused on preparing CS professionals who will create technology”? Alan Perlis (one of the guys who coined the term “Computer Science”) argued in 1961 that all undergraduates should take CS, regardless of their major. Jeanette Wing argued in her Computational Thinking article that CS is a good degree to prepare a student for any career. Alan Kay’s “Triple Whammy” definition of CS doesn’t say anything about producing software. Our Threads CS degree, which has “software engineer” as only one of several possible outcomes, is being approved by ABET as a BS in CS degree program.
I’ve seen this definition (implicitly) on the SIGCSE members list, but have not figured out where it’s coming from. Is this a University of Michigan definition?
Here are my comments
There is not a “University of Michigan definition” – it is more the philosophy of the design of our undergraduate Informatics program. I am trying to give you some possible rationale why your desire introduce the notion of a computational model as core part of a K12 curriculum seems to fall on deaf ears. It is pretty common for a focused domain to be so enamored with its core concepts that those in the domain feel that 100% of the educated people in our country must be exposed to those core concepts.
Both you and Alan have done a good job of reducing CS to a few easily described core concepts (storage, representation, processing). While you and (perhaps) Alan think that the elegant expression *makes* the case for inclusion of CS in the broadest of K12 curricula, I would claim that your descriptions make *exactly the opposite case*. Your descriptions make the case that the core CS concepts are not suitable for broad exposure in K12 nor as a single course required for all college students.
You seem to be stuck in the notion that if you had only fifteen weeks of material to present to a ninth grader or freshman that the best use of that time is to lay groundwork for understanding highly abstracted CS notions. You must realize that when you are designing such a curriculum you must impart real knowledge that will truly be valuable to 100% of the educated population assuming no further courses.
So as an example, the Water Cycle is really cool stuff – it serves as a great example to give students a window into science – and also gives them a great skill that helps them decide each day for the rest of their life whether to take an umbrella with them as they go to work or school.
Spreadsheets can be used to graph cool plant growth data and again offer a window into science and being able to enter data and formulas into spreadsheets also be useful in lots of careers.
Spreadsheets and Water Cycle clearly are of great use to all of the educated populace and as such are firmly ensconced in K12 curricula and when there is a required technology course in higher education it certainly includes spreadsheets.
Where you, Alan and I certainly agree is that in this day and age, K12 curricula and broadly required college courses need to explore a much richer and deeper understanding of technology and the mechanisms that underly technology. We all agree that this is rich and lovely material and very stimulating intellectually and also highly useful throughout life.
Where we disagree is the purpose of that first fifteen weeks – either in ninth grade or as that required-by-all.
Your position is that such a course is to be designed so that it is a wonderful prelude to Computer Science and inspires the student to pick CS as their chosen field, choose to go to college, choose CS as their major and spend 45 credits of their undergraduate degree in the required courses in one of the “threads”.
My position is “assume they never ever ever” take another technology course and I only have them for fifteen weeks and that they are paying real money for my course and I want them to come back years later and tell me that my course was one of the most useful courses they ever took in their whole life. (Hyperbole added to make the point).
Interestingly there is a lot of of overlap between courses designed using the two different starting philosophies – both give some sense of data and computation and perhaps even networking – but when I build courses intended for a broad audience, I am trying to teach the lessons in computation as a side effect of giving them a useful and relevant life skill (i.e. like as spreadsheet). The courses designed from your perspective delay the “good stuff” and the “real-world application” because that historically has always came later in a CS curriculum (CS0/CS1 *are* the first in a series of Computer Science Courses that build on one another).
Mark – you are on all the right committees and have the grants and credibility to begin a shift from “the first in a sequence of many CS courses” to a “literacy course that imparts useful life skills in computation”. I am not on those committees and not involved in those projects so my best chance for effecting the kind of change I would like to see happen is to convince *you* and then let you do the hard work :)
The best payoff for an effective and well-designed technology-literacy course is increased interest in Computer Science. At the end of such a course, while all the students have learned valuable life skills, some of the students may have gained a bit of curiosity about how it all really works. Those are the next generation of Computer Scientists.
So the irony, if my hypothesis is correct, is that we will increase overall interest in Computer Science if we teach less explicit CS and more useful technology skills in that all-important first broadly taken course at the K12 and college level. And such a course/curriculum approach would be far more palatable as part of an STEM approach for the next 10 years.