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

June 18, 2010 at 9:16 am 4 comments

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.

Entry filed under: Uncategorized. Tags: , , , .

Student-to-Student AP Computer Science Advice Skip college to study computing?

4 Comments Add your own

  • 1. Ian Bogost  |  June 19, 2010 at 8:21 pm

    Hey Mark, are there any examples of really specialized intro CS courses that do both general stuff for the basics and specific stuff for particular areas of application? I’m thinking of smaller, custom-designed, purpose-built classes like the ones we sometimes see in, say, composition.

    • 2. Mark Guzdial  |  June 20, 2010 at 5:13 pm

      Sure — any contextualized computing education course (like our “Introduction to Media Computation”) is teaching specific stuff (like programs to manipulate sounds and images) as a context for teaching the general stuff (e.g., top-down vs. bottom-up design, how to debug, the difference between an interpreter and a compiler).

  • 3. Jeff Graham  |  June 22, 2010 at 6:33 pm

    Unfortunately, the one course for biology, one for businesss, one for physics, one for graphic design model won’t fly at a small school. We’re barely hanging on with one class and there aren’t enough of the others to make anyone alternative go.

    • 4. Mark Guzdial  |  June 22, 2010 at 6:42 pm

      You may be right, Jeff, but I do wonder about the claim that “there aren’t enough of the others to make anyone alternative go.” How do we know that? Maybe we need a kind of market analysis. Could we create a non-majors programming course that attracts non-CS majors? All of our non-majors CS1’s are much larger than the one for our majors.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed

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

Join 9,052 other followers


Recent Posts

Blog Stats

  • 2,030,790 hits
June 2010

CS Teaching Tips

%d bloggers like this: