Link to home
Start Free TrialLog in
Avatar of nloeber
nloeber

asked on

Usefulness of mathematics in programming/systems design?

Dear Experts,

I am a student minoring in computer science which at my university implies that I don't have to hear any mathematics courses. The majors have to listen to at least four mathematics lectures, so I am kind of wondering what I am missing out on. In computer science, I am leaning towards areas like application development and systems design, i.e. areas where mathematics don't offer as obvious a utility as in areas like cryptography and graphics programming. I am aware that I will have a steep learning curve should I ever attempt to dabble in these topics.

So what I would like to have everyone's opinion on is what kind of actual usefulness any mathematics training you went through has had while doing application programming (say, on things like regular run-of-the-mill transactional web applications) or systems design and especially which areas of mathematics I might want to brush up on when I want to work in these fields. I strive for an optimal value for effort, so I would like to leave out / skim over topics that don't provide much use for the mentioned areas of cs.

Especially I am interested in how your math training has "shaped your thinking" or has helped you "see problems in a different / more structured way", because that is one of the things I hope to achieve. Thank you all for sharing your opinions / experiences.
ASKER CERTIFIED SOLUTION
Avatar of WelkinMaze
WelkinMaze

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Avatar of Mike Tomlinson
Mike Tomlinson
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Wow! Salute to all. Great discussion!

Appreciate all thoughts forwarded. I will contribute to the discussion from another angle. Here's some basic ideas...


Why Math?  SIMPLICITY

With simplicity, there is higher degree of (a) Speed, hence Efficiency; resulting in (b) Time Saving; (c) Cost Saving; (d) Less possible factors that can go wrong. And, it's cool.

A good understanding of math will allow you to see - design - construct models in your head, whether it's a system relating to building Software, Cars, Buildings, or Intangible abstract constructs.

You see, math does strange things to your mind. When you play with it deeper and further, it combines LOGIC and IMAGINATION into a singularity.  I can't solve advance problems without knowing the tools (Math) and how-to (Logic) use them.

The result is the ability to build models in our head. Allowing us to Simulate and Running senarios/ideas through that model we construct in our head. The parody of how our Computer has Simulation software (i.e. Games or CAD) is same as how our Head can build Simulation to test concepts and approaches in problem solving.

(Simulation) Models are almost always filled with imperfections and faced validity problems. We avoid those things by drawing a border and defining the edge of our Models based on certain assumptions. Hence we have "Exceptions", like Exception Handling in programming. With a good understanding of math, you are much much capable at seeing that 'border' where Errors will occurs. This is because you could construct and constantly test and change a model in your head, like a child playing with a toy by flipping it around and turning it upside down.

After shaking and revising the model (of processes, for example), the unnecessary parts falls off. Eventually the simplest solution is derived. Least prone to breakdown, smallest form factor, fastest, easiest to understand and simply a better idea.

This comes back to the Answer: SIMPLICITY.




The Paradox of Math...
----------------------------
I am not an advance learner of math, but from my humble stool, Math is some what of an inversion. We study advance teachings, construct thesis-worth of intricate proofs while create tons complexities... just to be eventualized by the Simplest Equation not more than a few characters.

A bit like the Hitchhiker's Guide to the Galaxy - forty-two is the Answer to Life.

OR

HAHAHAHAHA - Using 2 alphabets to express a complex feeling which involves millions of neurons firing at the same time.

People with maths backgrounds seem to find it very useful in programming.
Also backgrounds in physical sciences, perhaps because they also have a lot of maths.
The kind of thinking necessary to solving maths problems is a lot like the kind of thinking necesary to design programs.
Good programmers and mathematicians also seem to have the same kind of laziness that leads one to want to find the easiest ways of doing things.
Avatar of WelkinMaze
WelkinMaze

"Good programmers and mathematicians also seem to have the same kind of laziness that leads one to want to find the easiest ways of doing things."
Absolutely agreed!! :)
I have majored in Physics, Mathematics and Computer Science. Mathematics helps me a lot because I do data analysis and dashboarding tools for Sales Analysis and Market Survey Analysis. Mathematics helped me out in doing the reports as well as making the software extremely fast and high quality parametrized graphics. It also helped me in analyzing data in the Physics Laboratory.

Sometimes I do the whole design of the package in my head and then go ahead and type the program out without using any paper.

Most of today's programmers are good at getting certificates in .Net and some other languages but lack the ability to design a nice, ergonomic and efficient interface. The question I ask is the quality of the software being written these days. I live in a 3rd World Country as well and I see that everywhere. The more technology helps you, the less you think and able to make good software. It's analogous to buying a heavy duty car versus a commercial one.

I am sure it applies to call.

I am also a musician. I studied Bach's music. I believe he was a great mathematician. Also think about Da Vinci. Think about GPS and Autopilots in airplanes. It's Physics, Mathematics and Women that make the world go around. :-)
let me relate a story from my own personal experience.  I personally have a BS in Physica and  PhD in Astronomy.  I have been programming for almost 45 years.  But that is just background.

I was a college professor, in a small Physics Department in upstate New York.  I taught primarilly non-science majors (Business, Education etc), courses in Earth Science and Basic Astronomy.  In that role, I provided the students with several, very elemementary programs (written by myself, in Basic) which ran on the college's DEC PDP-11 computer - real high tech stuff.

I had a Senior Business Major come to me, after taking and completing my Astronomy course - which he had taken to complete the 'science' requirement that he needed for graduation (he had to take 4 'science'/math courses in order to graduate).  He explained that he also had to pass the BASIC computer programming course in order to graduate (it was a requirement of the Business School).  Although he, himself would never write programs, the argument was being made that as a future business 'leader' he would need to interact with programmer-type, so the experience gained by learing BASIC should be helpful (oh yeahg, I reall bougt into that argument LOL).  He was currently taking this course for the 3rd (yes, 3) time, having FAILED each of his first two attempts.

He asked if I had written the simple program that he had used in my class.

I answered that I had, and that it was written in BASIC.  So he asked if I could help him with the BASIC course that he was struggling with.  I answered that I would be gald to help, and expressed some measure of surprise that he was having so much trouble - but, none the less, BASIC is so 'basic', that I could not see how we would have any real problems - he just needed some one-on-one help  ( I naively thought).

So he came to my office, that afternoon for our first session.  I started out very simply, and asked him how he would go about the process, step by step, of determining the average of 5 numbers.  He said he would look at them, add them up and divide by 5.  I asked to to break this down into somewhat more elementary steps, and with a little work, we worked out the basic algorithm.

That ended our first hour.  I told him that the next time, we would make this a bit more general, that I would be asking him how to work out the average of a set of numbers, but that I would be giving him HOW MANY NUMBER were to be averaged, as well as what those numbers would be, and I asked him to think about how he might approach this problem, based on what we had just done.

He came back 2 days later, and when we started, he expressed concern, thast he had no idea where to begin.

SO I asked him if he  knew what an array was.  He said that he had heard the term used, in the BASIC class, but did not really understand what an array WAS.  So I should him the basic concept - A(1), A(2) A(3)  -- you get the idea.  He kept saying "A SUF 1"  "A SUF 2"  (where I had said "A sub 1", "A sub 2") so I quickly stopped him, corrected what he was saying, and asked if he hadn't ever seen tis terminology used, when he was in High School - knowing that the College had, as an admissions requirement, a 2 -year high math/algrebra requirement.  That's when I found out the real crux of his problem:

This young man (though a bit older than your standard college senior), had gone through a local High School, and studied 'Businees Math' - how to operate a cash register, make change, keep a set of business records, that kind of thing - because he was not in the COLLEGE-track - he was going to graduate form High School, and go immediately into the local work-force, perhaps as a shop clerk.  Then he wento into the Army, where he served for 4 years, until his 'hitch' was up, when he was discharged.  

The College where I was teaching, in recognition of the service provided by 'veterans', offered an admmisions program to form enlistees, that baiscally waived ALL of the entrance requirements (yes, I said ALL).  Having been in the Army for 4 years, the young man I was dealing with, saw the potential benefints of having a college degree, as opposed to a simple High School diploma, sohe applied, and was accepted.  Do you see where this is going?  So here he was, a senior, needing to have this BASIC programming course as a REQUIREMENT of his major, never having studied (at any level) any ALGEBRA - and having been told,with a completely straight face, that ALGEBRA was NOT REQUIRED for the BASIC programming course.  Well, you can pretty much guess the outcome.  I never saw him again (as s tutored student), and have no idea if he actually graduated.

So, yes, I would say that at at least very very 'basic' level, some exposure to MATHEMATICS is aboslutely required for Computrer Science - maybe not complex algebra, or Topology, or the like but at least a comprehension of Algebra, perhaps some linear programming, perhaps some set theory.

AW



MATH is used everywhere and if you can grasp MATH well, nothing will become difficult. I say this from my own experience. I was into MATH since I was in middle school and i got a lot of prices from math contests which led me to major of math in the college.

I was moving to the field of computer science eventually but honestly I think computer science is too easy for me. It is all about logic and the way you think. The more you study math, the more you become good at thinking.

Anyway, a lot of people already told their stories so I'd rather put my pen down and let you think ... :)
I hope I'm not out of line here... (first post)

I started programming when I was nine years old and I obviously didn't have a massive understanding of Algebra! I started with OPL (Organiser Programming Language), which is very similar to BASIC. I really loved the way the program I wrote was...rigid...and would be executed exactly the way I intended it to. The way I could manipulate data and help the user appealed to me very much. I would almost go as far to say that my first try at programming fueled my love of maths and I would definitely say that it helped me with Algebra.

Every time I get set a question in my Advanced Maths class which utillises algebra, I think of the question in terms of a programming language and I have been known to, on occasion, write msgbox "Answer is:" & varAnswer,,"" in exams!

I'm fourteen now and my love of programming and maths has not abated in the slightest and I would like to say: does maths help programming or does programming help maths?

Thanks for reading!

theChipmunk
writing programs and doing maths both fundamentally involve transforming one problem into another.
The language of maths is also useful when programmers talk to each other.
Hi theChipmunk,

>>I hope I'm not out of line here... (first post)
Not at all! You have added to the discussion in a thoughtful and considered way.

>>does maths help programming or does programming help maths?
I think the maths supplies the discipline while the programming provides the content.

Paul
One area in computer science that I find Math has a great impact in is encryption algorithms. I'm currently learning about DES, RCA and AES. It really helps to know the math because the textbooks use it alot to show how these algorithms work.