At 5:26 PM -0700 7/25/02, Kirby Urner wrote:
At 07:59 PM 7/25/2002 -0400, Mitchell L Model wrote:
Just joined list and haven't taken the time to read the archives yet, so maybe
this is a silly post, but I thought it worth putting out there that I will be
teaching an Introduction to Programming for non-computer science majors at
Wesleyan University this fall, having just taken a position there as a visiting
professor.  I've convinced the other Computer Science faculty involved to
abandon their

I applaud your enthusiasm for Python, which is a great language for
beginners, as well as more advanced programmers.

I think a central question for educators is "Python plus what else?"
Because, even if Python is eminently teachable, we always want to
provide experiences and familiarity with multiple languages.

A course which produced students who mostly turned up their nose
re other languages and said "no thanks, just Python for me" will
have failed, IMO (especially considering the fact that Python is
written in C, Jython in Java).  Python should be used as a way to
deepen appreciation for concepts and languages across the board.

Python is so good partly because it provides familiarity with
concepts that'll come up again and again, no matter what tools
you're using.

Good points.  Remember, though, that this is the introductory course for students not planning to major in Computer Science.  They don't necessarily need exposure to multiple languages, since the goal is simply to introduce the concepts and techniques of computer programming and develop basic competency in writing computer programs.  However, we will next face three questions related to your challenge:

What language to use in the introduction to programming for potential majors -- C++? Java? Python?  (Scheme was used for several years some years past, something I have a lot of sympathy for but which tends not to work out in practice because the surrounding computer culture is so different than Lisp's.)

Next semester I will teach the usual data structures course, to students who will have been taught Java (I think) in the introductory course.  Should I do it in Java? do a quick immersion to Python and use that?  Use several languages?  (The nature of an introductory data structures course has changed tremendously since I started teaching around 1980, primarily because contemporary languages provide in their libraries or easily accessible external modules most of the data structures the implementation of which the course used to spend most of the time discussing.  Now we can teach the concepts and use of data structures if we want, and spend less time on the tedious implementation details -- though of course some of those should be at least shown, we no longer have to rub student noses in them.)

What do we do about students who take the non-major introduction and to their surprise find themselves wanting to go on in Computer Science?  They're not ready for the second semester data structure course, because they missed a lot of the conceptual material that's in the introduction for majors but not in the introduction for non-majors.  But it might be silly to have them sit through another introductory programming course, because they will already know the basic techniques.  I don't think Wesleyan has the staff to offer yet another low-level course, in order to provide non-majors with an appropriate transition into the major sequence.

-- 

        Mitchell L Model
        Visiting Associate Professor
    Computer Science