I Just Want to Program! Don't Make Me Learn Math!

by chromatic

Why has an interesting opinion in Math (Eww?) (and read the comments for much, much more).

Perhaps it's finally time to break the close connection between math-loving computer science and programming.


19 Comments

monopole
2007-05-02 14:52:26
The problem isn't math it's the teaching of the math and the programming. Even if you don't explicitly know it you are doing math at regular intervals when programming. Knowledge of the underlying mathematical framework allows you to spot impossibilities, find very powerful optimizations, and understand the why of algorithms.


The trick is to add math into the mix on an as needed basis. Learning about a tool when you need it desperately ensures that you will always remember it.


To see how this all works together I'd suggest reading Gödel, Escher, Bach: an Eternal Golden Braid by Douglas Hofstadter, a sheer joy for any experienced programmer.

Steve R.
2007-05-02 15:45:10
I would add, 'GEB' isn't just for experienced programmers - it is also an excellent book to help someone who is 'not a math person' to understand and perhaps (in my case) take another stab at learning it - and even come to enjoy it.
chromatic
2007-05-02 16:05:50
Maybe this isn't the place to admit that I made it three chapters into GEB as well....
sysadmin
2007-05-02 20:51:32
I think that's what Informatics programs are trying for. However, I recently was asked to improve performance on a Informatics MA thesis project and found that the webapp was querying the database for every single page element, so maybe some Big-O complexity teaching should sneak in there. (In some cases there were 60000+ db calls in generating one page, no exaggeration, and MySQL was pumping it out in less than a second!)
Dave J
2007-05-04 07:09:14
I have been a programmer, mostly web programming but with some other work, for over 10 years. In school, going for my CS degree, it took 4 years plus summers to get through the 2 years of math. And so far, the only practical math-based programming I've ever done is using sine and cosine to make the arms of an "analog" clock. And truly, that was a toy, done for my amusement.
Ravenor
2007-05-07 14:08:07
I agree with you 100%.
dan
2007-05-07 17:03:00
What about business programming that requires various levels of algebra? I have worked in the business area of development all my life. Furniture stores required various algebra for cost factors for the longevity of goods sitting in the warehouse to working for a workers compensation company which was a lot of statistics.


A degree of math is definably required in the business world of application development.


Dan

Jeremiah Foster
2007-05-08 03:19:14
I agree completely. Furthermore I would argue that requiring advanced math skills for certain types of programming job descriptions is specious. Formal logic, things like syllogisms, are key to programming and should be considered more important than Calculus, for example. The computer should mediate the math for the programmer, that is its purpose.


Of course arithmetic is essential to logic and therefor computers, but building a good looking web page also requires design principles in addition to some programming skills - computer languages should make building good looking, i.e. easily-comprehensible, web pages easy without math. Nowadays programming languages like perl and ruby are starting to do that.

kabel
2007-05-08 08:28:22
What about the approach that it's not necessarily the mathematics that's important, but a structured approach to solving a problem that should be the hallmark of computer scientists? Making a good looking web page is nice, but not computer science. Learning how to write scripts is helpful, but not computer science. Computer science is just that: the science of computing. Everything else is application and, while very important, should not be confused with the emphasis of computer science.


Perhaps what is needed is a more application-oriented degree, possibly a BA program, in which the math and theoretical approach are not as emphasized. There is a place for that, IMHO, alongside the more hardcore CS focus.

Zipster
2007-05-08 12:13:31
When I went to transfer to the U of MN for CS I got talking with their person in charge of transfers. I looked at the curriculum and noticed 4 semesters of Calc and 2 semesters of calc based physics. One year of my life and four year degree essentially devoted to math. With the number of up and coming technologies out there and the myriad of other areas that were never even touched on in the curriculum I asked him why oh why so much math? His reply was classic "We want to turn out well rounded students." I almost replied, 'Hmm. I guess they stopped teaching art, philosophy, biology and Shakespeare at the U then'. The discrete structures classes that I took (later, elsewhere) were exceptionally helpful later on, give me a year of that.
WayneM
2007-05-10 06:45:52
The truth is that a vast majority of programming revolves around data entry and state manipulation. No mathematics are involved. I'm sure there are problem domains that involve basic equations, but even here the emphasis is on correctly implementing an equation that someone else has derived. Though interesting, calculus, topology, etc. do not help in programming.
frankl
2007-05-10 08:00:44
My comment is simply this. You might get "the program to run"..but how do you then know the product is correct if you cannot compute it manually. I am of course referring to ANY program that has ANY math in it. I know what I speak as way back in 1970's using code most never ever heard of.. "the very old crude stuff" we did lot's of weather data..and HAD to be able to verify the programs. Same today and rather frightening that numbers-math is part of the more basic forms of our lives.. all of which runs off software I really hope done by someone that understands what is going on and has proven result are correct..
CVgeek
2007-05-10 10:44:49
C'mon, a base in mathematics, especially numerical analysis and numerical methods is essential to producing a good and accurate program. The scientist may provide you with a forrmula that you can just plug in but unless you know in what order to perform the operations associated with that formula, you have no control of your error. And going from symbolic math to a digital representation of a binary calculation, you will always have some error. Now that may not be important if you are calculating the number of raisins in a pound of raisin bran but if you are calculating the trajectory of a passenger jet on landing a not knowing your error or its limits could ruin your whole day. Math is necessary to be an effective programmer.
Hamos
2007-05-10 16:29:44
I have found that when one works with any relational database, not knowing math is akin to shooting yourself in the foot for how can you understand the relationships of any bit of data with any other. I admit that I am a mathematician with a degree in Relational Theory, but I have been programming since 1965 - most of it business and in an archaic language (which has more than 6 billion lines of active code at last count). Not knowing math would not have allowed me to get anywhere in the field. Since they have come out, I have worked with just about every relational database on the market (and some that aren't any more) and without knowing math I would not have gotten anywhere.


The person who just wants to program without knowing the tools or why they work is someone who is not going to be going places.

Darth_Loki
2007-05-14 05:18:03
Learning math teaches you more than math. It teaches you a step by step methodology for approaching, evaluating and resolving problems through the use of logic and formulae. The halo effect reaches far beyond being able to calculate a tip in your head or to calculate interest or tax.


Programming *is* math, but in a more abstract form. You right logical procedures, formulae and progressions. Without the basis in math you do not have the skills to proceed past the most fundimental levels of programming.

Nyaope
2007-05-17 01:56:12
I couldnt agree with you more.
We apply maths in our everyday lives, with or without our knwoledge.
Maths should be a pre-requisite in CS, or programming.
jon
2007-05-17 06:35:43
It depends on how good a programmer you want to be. If you want to be average, just learn the least amount possible to get started. If you want to be good, you will have to learn a lot.


You might find this strategy works for most things in life, not just programming.

Darin
2007-05-17 08:32:25
Of all the programmers I've worked with in 25 years of software development, the ones who knew and enjoyed math were the ones who came up with the best solutions. The other guys could solve the problem and make it work, but the guys who knew math could make the solution more elegant, more performant, easier to maintain, and just plain better.


It goes back to the old joke: "What do you call a guy who graduated at the bottom of his class in medical school? .... Doctor!"


You can still be a programmer without the math, but personally, I don't want to be at the bottom of my class. :-)

Neo
2007-05-20 19:56:10
As long as we have people who share your ideas. I have job security. If you want to be just a web designer or something less daunting (in computations), then choose the right degree. Computer Science! Please check what it stands for before you come out ranting. I work with people with over 20 years experience and have no good math background. They struggle with SQL queries which is set-based (math). They have terrible logic because they do not fully understand boolean logic (and shortcuts). They create most akward queries because they do not understant k-maps, sum of products or products of sum. Eveything we do in computer science in simplest form is mathematical. When you understand it well, you produce better products. Yes you might not have to calculate velocity but if you understand how it works you know what your program needs. If you have never written an application that used some form of math, for lack of better term, you are not worthy to be called a real programmer. I believe the best description is to call you a hobbyist(desperado) who gets paid. Be a true computer scientist without strong math background is like web designers(masters or maintainers) who do not know html. I do not care what tool you use to genereate web pages, if you do not know html you are extremely limited. If you understand html, you can use the development environment optimally.