TITLE: Mathematics Coincidence
AUTHOR: Eugene Wallingford
DATE: September 29, 2005 1:49 PM
DESC: Unrelated to my discussion of what courses one should take to prepare for CS, a thread on what courses one should take to *do* CS has grown up on a mailing list of CS educators.
-----
BODY:
An interesting coincidence... Soon after I post my
spiel on
preparing to study computer science,
especially the role played by mathematics courses,
the folks on the
SIGCSE
mailing list have started a busy thread on the place
of required math courses in the CS curriculum. The
thread began with a discussion of differential equations,
which some schools apparently still require for a CS
degree. The folks defending such math requirements
have relied on two kinds of argument.
One is to assert that math courses teach discipline and
problem-solving skills, which all CS students need. I
discussed this idea in my previous article. I don't
think there is much evidence that taking math courses
*teaches* students problem-solving skills or
discipline, at least not as most courses are taught.
They do tend to *select* for problem-solving
skills and discipline, though, which makes them handy
as a filter -- if that's what you want. But they are
not always helpful as learning experiences for students.
The other is to argue that students may find themselves
working on scientific or engineering projects that require
solving differential equations, so the course is valuable
for its content. My favorite rebuttal to this argument
came from a poster who listed a dozen or so projects
that he had worked on in industry over the years. Each
required specific skills from a domain outside computing.
Should we then require one or more courses from each of
those domains, on the chance that our students work on
projects in them? Could we?
Of course we couldn't. Computing is a universal tool,
so it can and usually will be applied everywhere. It
is something of a chameleon, quickly adaptable to the
information-processing needs of a new discipline. We
cannot anticipate all the possible applications of
computing that our students might encounter any more
than we can anticipate all the possible applications
of mathematics they might encounter.
The key is to return to the idea that underlies the
first defense of math courses, that they teach skills
for solving problems. Our students do need to develop
such skills. But even if students could develop such
skills in math courses, why shouldn't we teach them in
computing courses? Our discipline requires a particular
blend of analysis and synthesis and offers a particular
medium for expressing and experimenting with ideas.
Computer science is all about describing what can be
systematically described and how to do so in the face
of competing forces. The whole point of an education
in computing should be to help people learn how to use
the medium effectively.
Finally,
Lynn Andrea Stein
pointed out an important consideration in deciding
what courses to require. Most of my discussion and
the discussion on the SIGCSE mailing list has focused
on the benefits of requiring, say, a differential
equations course. But we need also to consider the
*cost* of such a requirement. We have already
encountered one: an opportunity cost in the form of
people. Certain courses filter out students who are
unable to succeed in that course, and we need to be
sure that we are not missing out on students who would
make good computer science student. For example, I do
not think that a student's inability to succeed in
differential equations means that the student cannot
succeed in computer science. A second opportunity
cost comes in the form of instructional time. Our
programs can require only so many courses, so many
hours of instruction. Could we better spend a course's
worth of time in computing on a topic other than
differential equations? I think so.
I remember learning about opportunity cost, in an
economics course I took as an undergrad. Taking a
broad set of courses outside of computing really
can be useful.
-----