« Math & Computer Science | Main | Specification Languages »

February 08, 2009

Unifying Math and Computer Science

I found articulating how and why mathematics is important in computer science challenging. It’s always been my intuition--even more so, that they are interdependent -- but can I support this claim?

The importance of math is most clear in computer graphics because of the heavy use of linear algebra in rendering and even more so in ray tracing, yet this example is unsatisfying as it seems domain-specific and not an essential to the computer science.

I have wondered whether theoretical computer science is actually the natural progression of mathematics. Mathematics has been revolutionized through automated theorem provers, computer algebra systems and other packages that have mechanized previously human activities. Computers have even been successful in proving unsolved problems. It’s certainly clear that the practice of mathematics has improved considerable, but improvements in the process of performing mathematics is not satisfying argument for the important relationship of math and computer science, as computers have revolutionized numerous unrelated fields. I also considered whether theoretical computer science notions of algorithms, computable and recursive functions, and algorithmic behavior could unify computer science with mathematics.

Yet it all seems forced. A classmate, who took 1st place nationally in the Putman Mathematics competition, remarked that CS 51 to be the hardest course he took at Harvard; this surprised me as I didn’t find the programming assignments very challenging. His mathematical prowess provided little conceptual lift in the second of two introductory computer courses at Harvard. Grasping recursion and pointers is probably predicated on knowledge about stack frames and memory addressing, which I already had, having programmed significantly in assembly language.

If math and computer science are so related, then why does much of mathematics seem irrelevant to programming, for instance, calculus and differential equations? In the 1980s, computer science was still doubted as a serious theoretical discipline.

There is actually a subfield of mathematics, discrete mathematics, specifically focused on a grab bag of mathematical topics with relevant application to computer science. If much of mathematics seems not very relevant to computer programming, it is because the study of mathematics evolved to serve the fields of physics and engineering, which deals with continuous quantities, but current computer architectures can only deal with finite quantities and computer science is still a young field with consequently less influence over the development of modern mathematics. Perhaps future architectures may support continuous bits.

Fortunately, though, much of continuous mathematics have discrete analogues. Finite calculus serves the role for discrete functions as traditional calculus serves for continuous functions. Similar techniques from integration can be applied to symbolic summation, and similar techniques from differential equation can be applied to difference/recurrences equations. The natural base for discrete function is 2 instead of e, and the discrete logarithm function is the Harmonic function.

I can point to a few reasons why mathematics and computer science haven’t mixed so well. Programming languages and compilers are designed close to the hardware, and highly constrained to physical realities of the world.

My mathematical proclivities have lead me to embrace explicitly mathematical styles of programming such as functional (Lisp, Haskell), logical (Prolog III, λ Prolog, Mercury), and equational programming(Q/Pure, Mathematica), but I have always justified such approaches in their greater expressivity and potential performance advantages through high-level optimizations. Even imperative styles of programming can be handled through conversions into functions. Speaking of imperative languages, Fortress is a new language designed for mathematicians and scientists, that shows promise in making computer programs more like mathematics.

Languages can also be evaluated symbolically, which can potentially extract out answers without performing all the computations (much as a human being can walk through code and pick out the value of variable without evaluating every expression). In this mode of evaluation, programs can utilize operators that are possible in the larger computational sense but have no natural or efficient hardware implementation: continuous data types, modal operators, nondeterminism operators, nonterminating functions.  It always seemed to me that theoretical computer science was the study of computational operators.

It’s in this case of symbolically evaluating programs that the differences between mathematics and computer science begin to disappear in which programs and expressions are the same and their evaluation yields another reduced expression.

TrackBack

TrackBack URL for this entry:
http://www.typepad.com/services/trackback/6a00d8345242f069e2011168543531970c

Listed below are links to weblogs that reference Unifying Math and Computer Science:

Comments

Given what you say on maths and science, I can only wonder what you might think about the abuse of so-called math in the context of financial trading. The way that particular misuse of maths is being publicized anytime traders brag about their wonderful modelling of brownian motion, being quants, and other things like that, I can only feel the insult being thrown at the entire math community.
Your opinion?

I am not sure exactly what your question is. You seem to question the use of analytic skills to achieve abnormal gains in financial markets. If so, then you might have issues with managed funds, who use not only math but other privilege information.

Economically speaking, since these techniques are well-known, their benefits get passed on to investors through competition, while also bolstering the coffers of these middlemen (although high, that could also be consider the fair market premiums).

While my other classmates are well off working at hedge funds, I decided against finance, because I felt I could both prosper and invent at the same time. Unfortunately, I am still have yet to achieve either.

Going into finance is like making a deal with the devil--in which you make a tidy sum in return for a stressful, unexciting work.

"Going into finance is like making a deal with the devil--in which you make a tidy sum in return for a stressful, unexciting work."

I agree on that, that is why I am contemplating this as a secondary activity.

I forgot to mention that I was specifically thinking of automated trading, and in fact automated day trading (since that does not make much sense otherwise) : you know, a full open/close round-trip within seconds. The logic behind it is : even if in such a small time you make just a few cents, iterating on a 24/7 basis, combined with 2-digit leverages, you can consider making a living off it, even substantial money.

In automated trading, you try to build automated inspectors that soon become automated agents (that do everything including opening and closing positions). And in forums we constantly hear about the Graal on the subject, the automated inspector that would guarantee money making.

I am a Computer Engineering graduate which is closely related to a Computer Science course. In any way, computer science and Mathematics really need to be unified. Besides, you can't learn computer science if you're not good in math. Math is the major subject in taking up this course from day 1.

Perhaps you should read the "Art of Computer Programming" by Knuth, or take an algorithmics, theory of computation, or coding theory course, just to name a few. Every programmer should also read Udi Manber's "Introduction to Algorithms — A Creative Approach".

I have read or am currently reading "Art of Computer Programming" (The mathematic precursories in volume 1 and various chapters of interest in volume 2, which is focused on seminumerical algorithms) and Knuth/Graham's excellent book "Concrete Mathematics."

Math and geometry are unified.

Right now people are working on basic logics that are the foundations of traditional mathematics. For instance this idea that MATH is seperate from reality is one of the unfortunate accidents of cultural history.

Our senses detect inequalities in surfaces and structures in the real world and mathematics is a language to describe the forms, structures, actions and relationships in the real world.

If you want to see math's importance to computer science, look into logic and the philosophy of logic.

Start at the basics, in my opinion George Boole's the "laws of thought" is a great book to go over just to read boole's insights into how the working of the mind, our natural language and mathematics are related.

I am a Computer Engineering graduate which is closely related to a Computer Science course. In any way, computer science and Mathematics really need to be unified

You are right that, Mathematics has been revolutionized by prover automated, computer algebra systems and other packages that have mechanized past human activity. If you want to buying domain then contact us.

The comments to this entry are closed.