[Edu-sig] Python outside computer science

Rob Malouf rmalouf at mail.sdsu.edu
Tue Feb 13 06:31:09 CET 2007


To turn things in a more constructive direction, let me start what I 
hope will be a new discussion... 

Most of what goes on on this list takes as a starting point that the 
primary goal is to teach Python programming, or programming in general, 
or computer science, or something in that vein.  I'm sure there are a 
lot of people in my position, though, who use Python in teaching but 
aren't really teaching Python.  I teach linguistics, and everything I 
cover in class is must serve the overall goal of educating linguists.  
Python is a useful tool, but that's all it is (for us), and it's just 
one of many tools we use.  Given limited class time, I'm afraid that if 
I have to choose between either including  something that will make my 
students better linguists or will make them better programmers, 
programming will lose. 

I guess you could say that in class we use Python like physical 
scientists use Matlab -- more as an application than as a programming 
language.  Python is widely used in traditionally non-computational 
fields (linguistics, biology, geography), so I'm sure there's a sizeable 
community of people who use Python in this way.  So, if any of you are 
out there... what have you found works well?  What doesn't?  What 
textbooks do you use (if any)?  I find that most of the standard intro 
Python texts aren't suitable for me.  Zelle's book, for instance, is 
great in a lot of respects, but it's got too much emphasis on graphics 
for me to use it.  Not that that stuff isn't interesting and useful, 
it's just that it would be too much of a detour from my primary learning 
objectives.  I've been using Gauld's book, but the student's don't seem 
enthusiastic about it.  What books are the biologists using?

Another thing I'm wondering about is how multi-course sequences are set 
up.  Here at SDSU our computational linguistics M.A. program nominally 
takes four semesters, three semesters of coursework and one semester of 
thesis writing.  We've got a lot of specialized material to cover in 
that time.  Plus, students often come in with zero background in 
computation or math (or, often, linguistics), so we've got a fair bit of 
remedial work to do to get them up to speed.  And, to make things even 
more complicated, non-specialists also take computational linguistics 
courses, so it's not unusual for me to have, say, a high school English 
teacher going for a multi-cultural education certificate in my one of my 
classes.  In fact, I depend on that happening to meet my minimum 
enrollment numbers, which means I can't afford to drive off potential 
students who don't really want to spend a term learning to program (not 
that they're *afraid* of programming, just that that's not what they 
choose to spend 15 weeks of their life doing).

So, given the constraints, the way we've structured things involves very 
little time devoted purely to teaching Python or programming.  I spend 
maybe a third of a term on Python in the first semester in a course that 
covers a lot of other computational tools and methods.  Then throughout 
the more advanced courses we sneak in Python concepts here and there, as 
needed to address problems that come up, so by the end of two years the 
hope is students will have absorbed enough programming knowledge for 
them to get a job.  Of course, the alternative is just to take a 
semester out at the beginning and devote it to teaching Python, before 
we move on to the linguistics.  We could possibly join forces with other 
Pythonic departments on campus to solve the minimum enrollment problems, 
though that mean some of the more advanced material would have to be cut 
from the end of the sequence to make it fit in three semesters.  How do 
other non-CS computational programs work?  What are some of your 
experiences?

---
Rob Malouf <rmalouf at mail.sdsu.edu>
Department of Linguistics and Asian/Middle Eastern Languages
San Diego State University



More information about the Edu-sig mailing list