Archive for June 18, 2010

How important is a “useful” language for non-majors?

Jennie Kay of Rowan University asked a question on the SIGCSE mailing list: How important is it for the language in the non-majors CS1 course be “useful” to them?  Is important to use tools like Python, or is it okay to use a tool like Alice?  I posted a response this morning, and not wanting to lose the opportunity to reuse a post, I’m sharing it here:

It’s interesting what variables and constituencies we’re not considering so-far in this thread.  We’re talking about what content we should cover and what we feel is best for expressing that content, which are both important and good.

(1) What do the students want?

I’m not suggesting that we should give the students whatever they want, or that they know what’s best for them.  Carl Weiman told us in March that we should start by motivating the students.  (Former Sec’y of Education, Terrell Bell, is quoted saying: “There are 3 things to remember about education.  The first is motivation, the second is motivation, and the third is motivation.”)  Learning computing, especially programming, can be hard.  It’s worthwhile figuring out what motivates the non-major students to spend that time and effort.

In our interviews and surveys of non-majors studying Media Computation, we always find a significant percentage of the students who are worried that we’re teaching them a “toy” language.  It’s not that they want to learn to be professional programmers.  They want to learn something that “I might use later” (related to Brian Harvey’s comment about writing small programs for themselves).  They do worry that Python isn’t valuable enough to them, in terms of future recruiters/employers knowing what it is.  Now, that’s not all students, and I’m sure that different schools have different cultures (e.g., Georgia Tech tends to have a practical/pragmatic culture).  But it’s probably worthwhile asking the non-major students what they’re interested in learning.

(2) What do the non-major faculty say their students need?

Computer science is really general — I can teach variables using just about any kind of data.  I have lots of choices for contexts for homework and examples. I don’t presume to know what application areas or parts of computer science are going to have the most impact on the future of chemistry or sociology.

When we designed Media Computation, I had an advisory board of non-CS faculty.  They wouldn’t let me pick Java or Scheme for their students.  They felt that those languages were too hard and were too much about “serious computer science.”  They liked Python (a story related in a SIGCSE 2005 Symposium Paper on how we designed our non-majors course).  Recently, we had a series of meetings with Biology faculty about creating a CS1 for them.  They didn’t want Java because they said that “nobody in Biology works in Java” (surely an exaggeration, but probably describes accurately trends in their field).  Most interesting was the battles between themselves — half the faculty wanted MATLAB or SciPy for large data analysis and simulations (e.g., for ecology), and half wanted Perl or Python for doing analysis of genomes (e.g., regular expression matching for bioinformatics).

The issues being discussed in this thread are important.  There are other constituencies and stakeholders in the question.

June 18, 2010 at 9:16 am 4 comments

Enter your email address to follow this blog and receive notifications of new posts by email.

Join 10,185 other subscribers


Recent Posts

Blog Stats

  • 2,039,875 hits
June 2010

CS Teaching Tips