in reply to Mathematics eq CompSci

Why is it that most books on algorithms use mathematics to explain the underlying concepts? Are there no other way of explaining the concepts?

University level mathematics is essentially "the formal study of patterns": "numbers" being one system that have an interesting system of patterns, "graphs" being another, "topologies" being another, and so forth...

"Reasoning" is an underlying patttern that requires internal self-consistancy; it's a very large part of what both mathematicians and computer scientists do.

Any way of "explaining" a concept that is formally accurate and correct is essentially formal mathematics, just with an unconventional notation. The more "handwaving" the explanation requires, the less formal the mathematics is. If the argument becomes logically inconsistant, it's drifted from math to philosophy and/or religion.

Standard mathematical notation is well known by a large group of people who reason carefully about things for a living ("mathematicans"). Computer programmers are a subset of people who reason carefully about things to do with programming for a living: to many authors, it makes sense to follow standards, and use the same notation everyone else does.

Many mathematicans are programmers: in some universities, computer science is a specialization of a math degree. After all, it's easier to tell if you've coded an optimization problem correctly if you understand the underlying calculus; it's easier to tell if your genetic algorithm is working right if you understand the statistical models in use, and it's easier to know if your problem solving algorithm is working as designed if you understand the graph theory algorithm that underlies the search process. If you know enough binary algebra to prove that all logic gates can be build out of NAND gates, but not XOR, you won't bet the business by standardizing on XOR instead of NAND... and so forth...

You can learn many of the specific applications by rote learning; or you can learn the mathematical theory that underlies the specific applications. Which is more useful depends on what your job is, and what you need to know to get the job done. It's generally more useful to know useful theories to try when you're doing something "cutting edge", like researching a new class of program. It's probably just wasted knowledge if you spend your life just editing config files all day...

--
AC

Replies are listed 'Best First'.
Re^2: Mathematics eq CompSci
by kimanaw (Beadle) on May 06, 2005 at 00:19 UTC
    IMO, the OP's exemplar is a valid (albeit likely accidental and/or specious) qualification. As others have pointed out, formal mathematics and computer science are highly overlapping subject areas.

    In fact, this discussion resurrects a memory of an essay by Dykstra some 20 years ago (in an ACM mag, IIRC) in which he posited that all computer programs should be mathematically provable, and, in fact, such proofs should be the ultimate and preferred form of software QA. Either the program is provable and consistent, or it is not. Since I've done more than my share of embedded programming with poorly or incorrectly documented chipsets that could produce entirely different results on 2 identical systems due solely to variances in capacitor tolerances, I'd have to take issue w/ Dykstra's opinion from a pragmatic perspective, but the notion does bear some examination.

    In that light, since Mathematics is as much about proving as it is about doing, I'd think it would be a good qualification (in general) for a software design/architecture position (tho probably too much for a code monkey level position).