If you look at the curricula for mathematics majors in most colleges, you’ll find among the requirements some kind of introductory computer programming course. At our place, math majors (and math ed majors) have to take a one-semester C++ programming course and a general-audience “Introduction to Computing” course. So there is some implicit message being sent that math majors need to know some things about computers in general, and programming in particular.

But I’ve been wondering if an implicit message is good enough. I’d like to be able to go into a sophomore- (or even freshman-) level course and assign a problem that requires computers for the solution — like numerical approximations to eigenvalues or a simple Newton’s Method problem — and students have to use their computing skills to cook up that solution in an appropriate context, whether it’s a spreadsheet or a C++ program or an applet written in Maple. (And not just mindlessly use a pre-packaged specialized computer program that came with the book to do it.)

The ability to handle such a problem is really important for graduates with math degrees in their jobs. But as it is, even the best students who take their computing courses early on struggle to solve problems like this simply because they don’t have the practice. We see problems like this in a few places in the math major program, but they are a long way from being as common in our curriculum as they are in the real world. And then there are students who have little to no computing skills coming in to college (even though they are supposed to be digital natives) and don’t take those computing courses until they’re juniors or seniors, because those courses aren’t prerequisites for anything.

So I’m wondering how to make computing in general, and programming in particular, a lot more explicit and a lot more prominent in the math major (and minor) curricula, starting as early as possible. And I have the following question: **What should math majors know about computing, and when should they know it? **

Here are my initial answers:

**By the end of year 1**: Skilled use of end-user office applications including email, word processing, databases, spreadsheets, and presentation software; skilled use of at least two different web browsers and basic web applications; basic programming skill in a high-level language; ability to carry out common calculus and algebra tasks in a computer algebra system; knowledge of differences between file formats and ability to convert one file format to another.**By the end of year 2**: Ability to implement mathematical algorithms using existing technological knowledge, including programming; experience with at least two distinct operating systems; ability to typeset a technical document in LaTeX; working knowledge of computer networks and Internet protocols.**By the end of year 3**: Ability to construct creative solutions to problems using computer programs or applications; ability to write programs appropriate for advanced upper-division mathematics courses (e.g. real analysis, abstract algebra, etc.); advanced knowledge of LaTeX; experience with an open-source operating system and/or open source software; for preservice math teachers, advanced skill in creating computer presentations as well as skill in Geometers Sketchpad and other common classroom technologies other than calculators.**By the end of year 4 ( = graduation)**: Knowledge of programming in at least two different languages; experience with at least two computer algebra systems; skill in finding or creating multimedia content and assembling it into an intelligently-designed presentation.

Any thoughts on that, or additions, deletions, etc.?

IU offers four different undergraduate degrees in math: a BA, BS I and BS II (BS II is designed for students who intend to do grad work in math), and a BS in Statistics (any of them can be tailored toward students who want to be actuaries). The BA and BS I have no computer science requirements. The BS II requires an introductory programming course, as does the BS in Statistics.

I was going to look up Purdue’s requirements, but the web site sucks (and I thought IU’s did), info isn’t easy to find, and when you do find it, it’s all in PDF files, and you know how I feel about those. So I didn’t.

Penn State offers five-year “integrated” degrees, in addition to the usual BA and BS, where you can simultaneously get a BA or BS in math and a Masters degree in a specific field, like applied statistics. Penn State requires an intro comp sci course for its BA and BS.

I was going to look up IUP’s requirements (the other Indiana University, the one an hour down the road), but (cough, cough) the math department’s website seems to be down.

Robert,

Having just finished my undergrad, the only computer course I was required to take was a one semester C++ class (which I took it independent study – in retrospect, I wish I hadn’t).

I agree with most of your agenda. I wish that instruction in CAS had been part of the curriculum. What little I know about CAS I’ve picked up on my own and at a few workshops. I

wishLaTex had been part of the curriculum – learning LaTex has been on my to do list for a while now and I’m finally starting to play around with it. I agree that Sketchpad design should be taught. I’d like to add the use of GeoGebra(or any other free, multiplatform app).I’m a big Sketchpad fan, but I probably should have said “dynamic geometry software” instead to keep it all product-neutral. I’ve not played around with GeoGebra but I’ve heard it’s good.

Oh, don’t get me wrong, I

loveSketchpad. I just mentioned GeoGebra because it is something the students can download and use at home – for free!May be a little off the subject… but you know what I would love to see? A placement test for computing, just like the placement tests for Math. I wasted a semester of time in the “Intro to Computing Class” that was totally unnecessary.

I’m not sure how that class is being taught now, but I think that would be a class the at least 30% of incoming Freshman would test out of. If not that then the course material needed a serious re-working. All we did was copy follow step by step instructions from a book to learn word, excel, powerpoint, and access. The first three “lessons” were a complete waste of my time, and even though I didnt know much about access, I just followed instructions, not absorbing or remembering much of what we “learned”.

Jami — The Intro to Computing course has been revamped so that it’s a lot more technical and less focused on end-user office apps. I think it’s a nice improvement. Also, I think ETS (makers of the AP exam, the LSAT, etc.) are working on a standardized test for technological skills.

Let me preface this by saying that my background is in computer science, on the theoretical side.I am currently working with professors and students who are trained as mathematicians on several different research projects, all of which involve intense computation. These projects are in the areas of numerical analysis, scientific computing, graph theory, and number theory.

Having said that, I am appalled by the degree to which both students and professors are ignorant of even the most basic notions in computer science. I can see, perhaps, learning CAS and LaTex and maybe a “how-to” course of introductory C++ if you’re going to focus on mathematics which do not require intense computation, but this is not sufficient for real research in computational mathematics.

I believe that students of mathematics who have any interest in doing computational problems take at least the following:

2 semesters of programming in a high-level language… most universities offer such a sequence, with the first course being an introduction to syntax and core ideas and the second being more oriented to algorithms and data structures. Furthermore, these students should learn OO design, in either Java or C++… Fortran, Pascal, Basic, etc. simply don’t cut it.

1 or 2 semesters of applied discrete mathematics, or something in a similar vein. While I recognize that most students of math have a strong foundation in mathematics, and there is often much overlap between courses like discrete math and “introduction to higher mathematics”-style courses, I also believe that an explicit reformulation of these ideas in computational terms would be beneficial.

1-2 semesters of algorithms and data structures courses… self explanatory.

1-2 semesters of numerical analysis… self exlanatory.

Each of these classes should have a strong programming component, so that the students build up skill in the area of producing actual code. Computer programs are analogous to proofs, so the usefulness of this skill should not be downplayed by mathematics faculty.