On Wednesday 13 September 2006 10:22 am, Arthur wrote: > John Zelle wrote: > >I think it's obvious to everyone that a course that tackles "real world" > >problems will be more interesting than one that doesn't. But that doesn't > >mean simple scripts can't address real world issues. > > But there is a basic, probably irreversible - anti-synergistic - > evolution that seems to have occurred that has exasperated the problem. > The peeling off of programming introduction to CS, and the peeling off > of CS from everything else.
I'm not sure I understand what you are saying in that paragraph. First, can you tell me what you perceive as the "problem" in this context? I also don't know what you mean by these various "peelings off." Are you saying that the introduction to CS shouldn't be about programming or that CS isn't real world, or something else entirely. I'm just trying to get my head around what your basic premise is here. > Seems to me that in order to tackle real world problems we should be > working within a specific problem domain - as a starting point. Within a > particular domain, it is more realistic to build in stages, to the point > of getting to something useful - within that domain. I think everyone would probably agree that that's a great way to be introduced to programming. Just as using math to solve problems that are personally interesting is a great way to be introduced to mathematics. But computer science and programming share with mathematics this wonderful property (and curse) that they are very general and powerful tools. And in both fields there is an extensive body of knowledge developed that could be of use in virtually limitless domains. If every domain teaches its own programming, then we have tremendous duplication of effort, because the foundational principles are the same. It seems to me this is the exact same tension that exists between having your calculus taught by the mathemticians vs. having it taught by the engineering school and the business school and the music department, etc. There are arguments on both sides. My personal preference would be to have students exposed to calculus by the mathematicians who are not just users, but I hope, have and can convey a deeper understanding of the foundations of calculus. The mathematicians are the "professional owners" of that content. > For many of us, "introduction to programming" is too broad a context in > which to be introduced to programming. OK, so what counts as a domain for you. I could just as easily say for many of us "introduction to algebra" is too broad a context in which to be introduced to algebra. Similarly "introduction to writing" is too broad a context to be introduced to writing. I'm guessing that you think it's OK to count math as a "domain" and so to teach "math classes" and assume that students are learning "math" in their "math classes", even though they can apply this knowledge in limitless other areas. Furthermore, one can easily make the case that these "math students" might be more motivated to learn "math" if they learned it in the context of those other areas of direct interest where they could build up a truly useful "system of mathematics" for their personal use. > In the math/programming synergy at an earlier stage (not too early, > please) strategy, the introduction course in the CS department evolves > into something more than what it apparently needs to be now. We know a > little, and presumably know we have an interest in knowing more than that. I _think_ I'm all for this, but again I'm not sure I know exactly what you are saying. If you are saying that students might get interested in programming through exposure in math (or some other "domain") and then want to turn to CS classes to learn more, that sounds like a good thing. But it's still curious to me that the implied tone here is one of denigrating teaching introductory programming in CS classes because it is "divorced from any domain" and then at the same time suggesting the thing to do is teach programming in the context of math. Teaching a math class is teaching another tool "divorced from any domain." Why is it good to teach algebra in math classes, but somehow wrong to teach programming in CS classes? On the contrary, if you consider math to be a proper domain, they why isn't my field (CS) a proper domain? I take a middle ground that says a good teacher can motivate programming both for its intrinsic beauty and for the utility it brings students to solve whatever problems are appropriate for their current interests and level of understanding. While my students may come from many different disciplines, there are problems common to their lives that we can talk about computer solutions to. Motivation to learn programming need not solely arise from "domain specific" interests. > Kirby, it seems to me, is right about all this. It's just less > brilliant to be right about this than Kirby sometimes seems to make it > sound. It really is nothing more than accepting the obvious, give up on > beating the game, and just play it. > > The push back on this strategy here had always been yuck, Math. We are > turning on back on the artist, the literature types, the hardcore gamer, > the web. But if the literature types, artists, or hardcore gamer types want to learn math, we have no qualms about asking (forcing) them to take math classes. If they want to learn to write, we put them in writing classes. If we want them to program, I don't understand why we wouldn't want to put them in programming classes. Again, I would personally want my children to learn from someone with a "professional interest" in the field who can convey deep appreciation and knowledge. So it seems to me an intro CS class _is_ a perfect place to teach introductory programming, but it needs to be taught in such a way that students see how they can apply the skills to their own interests. If a student wants to build houses, they'll take a shop class, even though they only get to build bookcases. They key is communicating how an important skill they are learning will be useful to them. Sometimes the payoff is immediate, sometimes it's more long term. It's arguable whether this the bast way to teach programming, but it doesn't seem much different to me than the way we teach any other "subject." > > Yuck on that position, IMO. "What is" isn't infinitely malleable. We are > only saying what most obviously is. Where a foundation of and for > computing understanding most appropriately grounds itself. But then it seems to me you are saying that programming should be taught in every single discipline, for there is no area of the human intellectual domain for which I see no application of computing. Something that seeks to ground itself everywhere is nowhere actually grounded. How do we sequence such a curriculum, and how do we prevent "rampant amateurism" in the teaching of computer science principles? Why doesn't this same argument apply to other "literacies" like mathematics and writing? We expect writing teachers and math teachers to have depth in the field. Shouldn't we expect the same of our programming teachers? Or is your argument that the whole system (the way we teach all subjects) needs to be thrown over? I personally don't have the imagination to come up with a better one. That would be Kirby's domain. --John -- John M. Zelle, Ph.D. Wartburg College Professor of Computer Science Waverly, IA [EMAIL PROTECTED] (319) 352-8360 _______________________________________________ Edu-sig mailing list [email protected] http://mail.python.org/mailman/listinfo/edu-sig
