[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