[Edu-sig] The fate of raw_input() in Python 3000
John Zelle
john.zelle at wartburg.edu
Wed Sep 13 20:31:09 CEST 2006
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
john.zelle at wartburg.edu (319) 352-8360
More information about the Edu-sig
mailing list