Hi Monks,
Just a couple of thoughts...
Why is it that most books on algorithms use mathematics to explain the underlying concepts? Are there no other way of explaining the concepts?
A while ago, I saw a job ad in the paper looking for a Programmer with Perl and MySQL experience. A couple of weeks later, the same ad appeared but this time round, the requirements say: Degree in Computer Science or Mathematics.
Any thoughts?
Update: Thanks to all for the sharing :)
Re: Mathematics eq CompSci by spurperl (Priest) on May 02, 2005 at 05:17 UTC 
While a defree in CS or Math isn't required to be a successful programmer, it often helps.
If you want a very simplified and noncontroversial look at this: think of a degree as another few years of experience. A student in a demanding Uni spends most of his day studying, solving complex problems, thinking in and out of the box, measuring tradeoffs, exercises his logical and methodical thinking, etc. In programming courses, the student also designs, writes and debugs code, learns to use various tools (algorithms, formulae, data structures) to solve problems.
So yes, it helps. But no, it's not an only way. While a fresh person with a degree on the paper looks better than one without, he doesn't necessarily look better than one without but with 3 years of real experience.  [reply] 
Re: Mathematics eq CompSci by tilly (Archbishop) on May 02, 2005 at 05:20 UTC 
To understand the performance of algorithms, you need to count how many steps the algorithm will take to come up with an answer. People tend to think of that kind of counting operation as math.
There is no way to convey the concept of how to calculate the efficiency of an algorithm without actually going through how to count operations. In that sense the concepts are math.
That said, you certainly do not need to master all kinds of advanced math to be able to handle this kind of counting. For instance expertise in differential equations will not prepare you to understand why a quicksort is on average better than a bubblesort, and why a mergesort has better performance guarantees than quicksort, even though its average performance is worse (if all memory is equally fast to access).  [reply] 

That said, you certainly do not need to master all kinds of advanced math to be able to handle this kind of counting. For instance expertise in differential equations will not prepare you to understand why a quicksort is on average better than a bubblesort, and why a mergesort has better performance guarantees than quicksort, even though its average performance is worse (if all memory is equally fast to access).
Indeed. One might even go so far as to say that what most programmers do does not require this math at all as one is mostly selecting from a set of prewritten libraries (and thus algorithms) whose properties are reasonable well known and documented. For instance those writing software that is heavily DB based probably will never consider what sort algorithms are in use as its handled by the DB. And those that do need to use sorting algorithms rarely need to selfdetermine the algorithms performance as some clever math type already did it and wrote it down in such a way that we can make educated choices without requiring the math skills. Of course if you dont understandthe underlying principles you end up making bad decisions.... (Like maybe there are circumstances where its better to use bubble sort, or where using splays is extremely inefficient....)
 [reply] 

One might go so far, but I think that one would be wrong.
I've solved enough realworld performance problems due to subtle algorithm issues that I firmly believe that there is real value in being able to estimate scaleability. Furthermore if you ever want to have hope of treating databases as more than magic black boxes, you'll need an understanding of algorithms to see how they work.
 [reply] 


 Re: Mathematics eq CompSci by Zaxo (Archbishop) on May 02, 2005 at 05:30 UTC 
A survey of research papers in computer science will pretty quickly show that formal computer science is high mathematics. The methods and standards of proof are identical, modulo the techniques and concerns which distinguish C.S. as a seperate branch of mathematics.
Many of the courses for an undergraduate degree are likely to concentrate on the results and applications of research rather than the higher formalism. That is the advantage of those courses for programmers and designers.
Either degree allows one to assume a competence in formal logic, which is IMO the essential skill for programming.
I imagine that the change in requirements was forced by getting no educated applicants with the original tight buzzwords on their resume.
 [reply] 

Either degree allows one to assume a competence in formal logic, which is IMO the essential skill for programming.
I learnt formal logic (and used it a lot) in philosophy at uni; half of epistemology courses were actually formal logic courses. Though we never did anything computerrelated... CS isn't the only way! :)
 [reply] 
Re: Mathematics eq CompSci by ambrus (Abbot) on May 02, 2005 at 05:33 UTC 
Because Knuth is a mathematician :)
Anyway, Mathematics ne CompSci, rather CompSci is a proper subset of Mathematics.
 [reply] 

 [reply] 
Re: Mathematics eq CompSci by cosimo (Hermit) on May 02, 2005 at 05:40 UTC 
I've found myself asking quite the same questions.
Most of the algorithm books you can find are full of math, and you can't read them as an Asimov novel.
But there are some rare jewels that explain you also the algorithm ideas in clear words. I've found so few of them. That is very difficult, because explaining such algorithm often requires abstract concepts based on others, which in turn, ...
Nevertheless, I think the math part is important to catch the algorithm performance, complexity, "degree of fit" (can't find a better english expression for this, sorry) for your application, etc ...
 [reply] 
Re: Mathematics eq CompSci by BrowserUk (Pope) on May 02, 2005 at 07:15 UTC 
I think that the mathematical symbolism used in the description, exploration and characterisation of algorithms from a formal CS perspective is frequently unhelpful.
Besides that characterising one algorithm as O(log n) and another as O(n) often completely obscures that the former must be implemented at a higher, less efficient level than the latter, such characterisations often have unwritten (or legalpoint) riders like "in the general case", "given equal speed memory access", or "ignoring cache coherency".
They also almost always assume unbounded, constant performance, memory; generalised (often properly random) datasets; and idealised, uniform, singletasking operating environments. The realworld constraints often include boundedRAM with much slower secondary storage sourcing and spillage; biased datasets with reducable, noninfluencing commonalities; and preemptive, multitasking (and multiplicitous) operating environments with unquantifiable coexisting & competing demands.
Whilst some of the more CSfavoured algorithms (sorts, shuffles, searches etc.) have been studied in depth for the influence of things like cache coherency, these studies again often make the preassumption that the hardware running the algorithm is entirely dedicated to the running of the algorithm. Once you place that algorithm onto hardware that can, at any given point in the algorithm, completely destroy the cache conherency by task switching to an entirely different process, most of the benefits extractable by tailoring the algorithm to maximise cache coherency go out of the window.
Even when programming at a level where the effects of machine level "builtin" routines versus highlevel usercoded algorithms does not mean a ratio of 10s or 100s to 1 performance advantage of the former over the latter (Perl), the percentage of code written that actually fits into that set of wellanalysed algorithms is very small, maybe 10% to 20% at best.
Most realworld code is dominated by interactions with external events. User inputs, shared devices and databases, chaotic networks and the omnipresent contention for cpu and other resources. Whilst we all benefit from highly tuned sorts and treetraversal algorithms when we need them, the benefits derived from their tuning, in the reality of our tasks spending 50%, 70% or even 90% of their time taskswapped or waiting on IO, is usually much less than those ascribed to them via intensive studies performed under idealised conditions.
And to answer your question. Yes, it is possible to describe algorithms without formal mathematic notation, though these tend to require much more careful, wordful construction. One of the benefits of such wordful, less specialist construction is that more minds are likely to see the flaws. The problem with formal symbolisms is that they tend to become more and more specialist as they evolve to deal with higher and higher levels of abstraction.
Whilst many thousands, maybe 100s of 1000s have read much of Knuth's tomes, the percentage of those that really understood his notations is much less, and many of those that did are only writing code in academia.
Just as there are only a handful of people in the world that will ever see the flaw in Wiles proofif there is one. It falls to a pretty select group of people to find the limits, flaws and constraints on Knuth's work. Beyond the typos that he pays a peice rate for, I wouldn't mind betting that he personally has made more corrections to his own work than all the informal users of it combined.
Examine what is said, not who speaks  Silence betokens consent  Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco.  Rule 1 has a caveat!  Who broke the cabal?
"Science is about question the status quo. Questioning authority".
The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
 [reply] 

I've seen plenty of mathsy comp sci that was very much rooted in reality. A good example was a graph search algortihm for searching graphs which require 10 of gigs to store (DNA matching is one practical example). This algorithm took into account disk speed, memory speed, cache speed etc.
Many researchers developing these algorithms are also using them too. They can't ignore reality.
As for using symbolism. It's quite like the difference between talking about writing a complex program and actually writing one. It all seems so simple when you start but when you get right down to the details of what do I need to pass to ths function and where will I get it, you start to hit problems that you didn't see before. Similarly, analysing an algorithm mathematically and symbolically (hopefully) prevents you from skipping any details so although less people will understand it, those that do will be able to poke holes and find mistakes much more easily than if they had to perform all the analysis independently themselves.
Of course it's also a good idea to describe the algorithm well in a natural language but we'd all be sitting in the dark if Maxwell had just said "we have these waves, electric and magnetic and they go up and down and they're always perpendiular to each other..."
 [reply] 

 [reply] 

Most realworld code is dominated by interactions with external events.
We're painting with pretty broad strokes there aren't we? Maybe that would be better phrased as "In my limited experience, I find a lot of code is dominated by interactions with external events. Although I've heard rumors of old fogies using C and Fortran and running compute intensive simulations for hours and days and months. But its just a rumor, so you can safely discount it."
 [reply] 

Hmmm. Let's see software that deals with external devices and events:
Browsers, compilers, operating systems, databases, communications systems, radar system, weapons systems, guidance systems, mp3 sofware, windtunnel software, engine management systems, video games, avionics, disk/tape/display/CD/DVD/USB/Printer/Network card/etc. device drivers, camera software, picture editing software, spreadsheets, editors, interpreters, Genome analysis, web servers, ftp, network OS, viruses, trojans, XML, stock control, calculators, phone software, microwaves, washing machines, accounting software, central heating controllers, tills, atms, petrol pumps, clocks, satellites ....
Although I've heard rumors of old fogies using C and Fortran and running compute intensive simulations for hours and days and months. But its just a rumor, so you can safely discount it.
Counterpoint?
Examine what is said, not who speaks  Silence betokens consent  Love the truth but pardon error.
Lingua non convalesco, consenesco et abolesco.  Rule 1 has a caveat!  Who broke the cabal?
"Science is about questioning the status quo. Questioning authority".
The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
 [reply] 


 Re: Mathematics eq CompSci by dragonchild (Archbishop) on May 02, 2005 at 12:49 UTC 
I have a degree in both. Did the math side help? Yes, it did. Could I do what I do without it? Yeah ...
Now, here's the question  if you could get a CS degree'd person, that would be preferable. However, if you couldn't, what's the degree you'd take as a substitute? Art? Philosophy? French Literature?
No  you'd take Math.
The Perfect is the Enemy of the Good.
 [reply] 

Could I do what I do without it? Yeah ...
One little disagreement: you couldn't do it without math...
At this point I am being deliberately general and by 'math' mean "...the study of patterns of structure, change, and space" as it is defined somewhere on the Net. In this definition math, as logical thinking, is the basis for the 'intelligent' life. You cannot make an informed decision in life without reviewing gathered data, searching for patterns, comparing them, and choosing between them based on some criteria. And that is math! So, it is needed not just for programming
I realize my opinion might be somewhat biased, but too often I see people who did NOT take math in school trying to become programmers because they want to be well paid. Their behaviour makes me want to say 'those who cannot work with their heads shalt work with their hands'...
P.S. If I couldn't get a CS degreed person, I would choose Physics as a substitute  they know math and they can apply it...

An idea is not responsible for the people who believe in it...
 [reply] 

 [reply] 

I don't quite consider myself a programmer per se, but I write Perl scripts to do certain tasks. That said, my degree is actually in English/Lit. I maintain that for undergrad degrees  a good solid liberal arts degree is very helpful since it quite ofen (not always mind you) teaches you more about how to think around problems (not saying Math/CS couldn't do that as well :)
 [reply] 

Now, here's the question  if you could get a CS degree'd person, that would be preferable. However, if you couldn't, what's the degree you'd take as a substitute? Art? Philosophy? French Literature?
I dunno about that. I've come across a lot of mathematicians who really suck at programming. That step from the abstract to the concrete can be a doosy.
I've also come across a lot of good programmers with a philosophy & psychology background  but that may be a biased finding on my part since I spent a chunk of my early years around AI folk.
Personally I'd pick any engineering or physics degree before maths :)
 [reply] 
Re: Mathematics eq CompSci by zentara (Archbishop) on May 02, 2005 at 12:54 UTC 
Why is it that most books on algorithms use mathematics to explain the underlying concepts? Are there on other way of explaining the concepts?This reminds me of the book "Zen and the Art of Motorcycle Maintenance?. There ARE other ways of "knowing", besides logic and mathematics. However, you still need to know what the words mean, even if you are not expert at the underlying theory. For instance, as a programmer, you probably should have a good idea what the difference is between an integer and a real number( even if it is as simple as one has a decimal point and one dosn't). I have been fortunate to have been given the chance to become well aquainted with math and engineering, even though I'm not an expert at it. Sometimes this makes me question whether my "view of reality" has been "comprimised", for instance is the "real world" really a base10 system? We have grown so accustommed to counting in 10's, but maybe it's all just a human illusion.( There is some wild philosophical thought, that humans are a "reflection" of the universe, so maybe there is something to having 10 toes and fingers? :) ) So how would you grasp the functioning of systems, whithout a mathematical knowledge of it's engineering? You can "feel it". Like the "zen mechanic", who can feel the power generated in the engine, and observe that so much power, will break a small transmission chain, and conclude the chain must be "stronger". So he goes and buys a bigger chain. Everything in the material world can be thought of in terms of "energy and time". Power is the amount of energy flowing per unit of time. In computing, you add "patterns" to the energy, we call it "information". Networking just is
the art of transferring those "energy patterns" from point A to point B.
So if you look at programs like little black boxes, where
information(of one energy pattern) is fed in, and energy of a different pattern flows out, you could be just as good as a programmer who describes the actual bit values in 1's and 0's. Anyways.....yes there are other ways of looking at computing, but "managers" play the odds....they know that someone with a math background will "probably" have an easier time understanding what is actually happening, but it is not always the case. Look at autistic genius sees numbers as shapes I would just love to see how this guy sees a program in his head. But managers are not going to hire on the basis of "promised genius"...they want people who will "toe the line"...be organized and part of a regimented team etc.
I'm not really a human, but I play one on earth.
flash japh
 [reply] 
Re: Mathematics eq CompSci by samizdat (Vicar) on May 02, 2005 at 13:04 UTC 
Most of the "other ways" of describing algorithms or data structures are really math in disguise, and it's easier to make the connection than it is to try to disguise it. I have only a little formal math training, but gobs of math book absorbtion. About the only things in CS that aren't really mathoriented are things such as BackusNaur grammar descriptions for parsing, but that's only because they are application of simple declarative principles (i.e., 'formal logic') carried to a high level. Likewise, logic programming such as Prolog is very far removed from math, but only because it depends on math for its underpinnings.
As to whether a degree is a necessary thing, the answer is 'very rarely', unless your employer's customer is degree conscious, in which case it's the paper, not the understanding, that matters.  [reply] 
Re: Mathematics eq CompSci by samizdat (Vicar) on May 02, 2005 at 13:31 UTC 
<rant>
I cannot emphasize enough that most programming jobs depend far more on the ability to listen to and interpret user requests and unstated wishes than they do on algorithmic competency. Those of you who do not have CS degrees should not hesitate to put your nonmathematical skills forward as equally valuable to your prospective employer.
</rant>  [reply] 

Hm...I think the reality is such that if the person doesn't have a degree in CS or Mathematics, chances of her being shortlisted for an interview aren't going to be high.
What might happen, though, is that the person develops considerable experience and expertise in programming whilst holding a job that isn't about programming. For example, the person could be doing some research work but makes use of programming to solve the problems at hand. Provided she has become competent in programming as a byproduct, she can then market herself as a Programmer even though she doesn't have the background in CS or Mathematics.
 [reply] 

I think two factors are at work here. Because of the availability of overseas coders, native coders are being expected to meet higher standards. I also think that CYA principles are being applied by HR personnel and managers, i.e. bureaucrats. If they can point to a degree, they can't be faulted. It is rarer and rarer that a boss is a programmer.
That said, I have never had a problem getting a job in either EE or CSrelated fields in spite of the fact that my academic career stopped with a BA in Sociology from a midrange state university. I have been denied the chance a number of times, so degreeconsciousness IS a factor at many companies. What I am ranting about is that it should never be a reason not to be proud of one's abilities or to try for a position. IMNSHO, the companies that have hired me have been far better off for doing so, and, yes, I have taken jobs away from degreed programmers several times.
 [reply] 

 [reply] 

To be fair, we have two separate words just for Computer Science.
Yoda would agree with Perl design: there is no try{}
 [reply] 

 [reply] 

"... looking for a Programmer with Perl and MySQL experience"
??? Funny how people see different questions. Do I detect a bit of noseintheair, Mr. AM?
At any rate, abstraction is a discipline in itself, whatever framework/notation one uses.
I was in a 'gifted' program in high school ('73) where I visited with a junior math professor at the university, and we spent Monday afternoons discussing equations and their solutions from both mathematical and algorithmic perspectives. You're correct in that it wasn't about programming.
A more pertinent question would be, "was it useful?" Since the OP's specifics were about a job requiring a degree, it would seem to me that that would be the question to ask. It was useful in that it stretched my brain, but I wouldn't say that I have ever gotten close to that kind of algorithmic expression again.
Which is not to say that I don't value the fields of computer science or math... if you look at my posts, I've repeatedly stated that I have read gobs of both, among other things. What I object to is the blind assumption that someone with an undergrad degree in CS or math (or anything else except perhaps an engineering degree) is going to be better at a {name your specialty} computerrelated job than a nondegreed person.
 [reply] 
Re: Mathematics eq CompSci by Tanktalus (Canon) on May 02, 2005 at 14:07 UTC 
Just as a side note, in some universities, Computer Science is merely a department of the faculty of Mathematics. Thus, you can't get a "BSc in Computer Science". You can only get a "BSc in Mathematics" specialising in Computer Science.
 [reply] 
Re: Mathematics eq CompSci by demerphq (Chancellor) on May 02, 2005 at 15:15 UTC 
Id just like to mention that you are basically begging the question by using the term compsci in the first place. CompSci is more or less defined as being the mathematics of computing so by that it would seem you have your answer.
But I dont think you meant to ask that question, mostly as it isnt that interesting a question. The question i suspect you really are asking is whether we consider math and programming to be the same thing. And i think the answer is quite clearly not at all.
Most programming tasks that I see require almost no advanced mathematical skills, instead they require a wide range of other skills and knowledge that are specific to the world of programming. For instance having an intimate knowledge of SQL syntax for various DB's is not a skill that almost any CS or Math course is going to impart on you. Having experience in coding means that you will implicitly make design decisions about your code that are superior to what a less experienced but better educated Math type would do. You can almost guarantee that the code quality from a 17 year old whos been programming open source C for two years will be superior to a PHD Math graduate whos primary programming experience is Fortran and Maple.
An analagy with automobiles that has been made elsewhere feels apropriate to this thread: in the automobile business you have three groups of people involved in the process of making cars (leaving out the management/marketers :), Engineers, Assembly Workers and Mechanics. The Engineers are responsible for a lot of things. Designing the parts, the assmebly line, selecting materials, studying the system, and etc. IOW they do all that highbrow stuff. The Assembly workers generally require minimal skills, the engineers should have already solved most of the issues involved in the manufacturing process. That leaves the mechanics. Now these folks are responsible for fixing your car when it breaks. They need sufficient skills to read the techspecs on the parts they work on. They need to know how to use the appropriate diagnostics equipement and the like. But they definately dont need to be engineers. They almost certainly will never have to select the exact alloy that will be used in an engine block.
To bring this back to programming, the point is that most programmers are mechanics. We reuse libraries that others have written, we know about the resources available to us, we know that despite the advertisments using product A with product B is a bad call. We know how to read the abstracts of the papers that the CS folks write, Etc etc.
Now the mathematicians will say that they are the most important part of the pie. But the fact is that it isnt true. There just arent that many places to get a job being an algorithm researcher. There arent that many places in R&D in computing in general. But there is an awful lot of call for mechanics that can change the spark plugs and put on a new muffler. IMO a lot of math types get upset by the fact that many nonmath types can outcode them with their eyes closed. The reason of course is the same reason that a kitchen assistant can often chop vegtables faster than the chef. (Recent experiece.) Writing code and doing mathematical analysis and proofs are two different things that only rarely occur in the same job or project at the same time.
 [reply] 

Id just like to mention that you are basically begging the question by using the term compsci in the first place. CompSci is more or less defined as being the mathematics of computing so by that it would seem you have your answer.
There's also the issue that we're talking about CS degrees  not CS in the abstract. There's an enormous variation in subject matter in CS degrees  from the ones that are just a sideline of a pure maths department (and would prefer that those messy lumps of silicon didn't get in the way of all the nice theory), to those that are almost vocational training (and think bigO notation is a bit highfaluting).
An analagy with automobiles that has been made elsewhere feels apropriate to this thread
I can feel my pathological hatred of software development analogy/metaphor coming on :)
 [reply] 

There's also the issue that we're talking about CS degrees  not CS in the abstract.
Agreed.
I can feel my pathological hatred of software development analogy/metaphor coming on :)
Yeah, i can understand that. I hope the analogy worked for you more or less. All I was trying to get at is that not knowing the algortihm to calculate sin() correctly and efficiently on my favourite CPU doesnt stop me from using the function when its provided by the standard libraries to solve simpler problems like whether that tree in the back yard will fall on my house when it gets cut down.
As an aside does anybody know if Shell sort has been fully analysed yet? I recall reading Knuth where he said that Shell Sort has stubbornly resisted complete analysis. (IE its not know what the optimal intervals are for the different passes over different data sizes etc....)

$world=~s/war/peace/g
 [reply] 


 Conflation of Two Subjects [was: Mathematics eq CompSci] by Anonymous Monk on May 02, 2005 at 15:27 UTC 
The main problem as I see it is that computer science is so new (relatively speaking) that it is easily confused with unrelated subjects that bear a superficial resemblance. Writing CGI scripts is not computer science, no matter that it does involve computers. Novelists and librarians both require literacy, but nobody would suggest that both endevors are essentially equal. Same is true between programmers and computer scientists.  [reply] 
Re: Mathematics eq CompSci by tlm (Prior) on May 02, 2005 at 22:20 UTC 
 [reply] 

"I often say that when you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meagre and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely in your thoughts advanced to the state of Science, whatever the matter may be." Lord Kelvin
 [reply] 

I wonder if he could express that sentiment in numbers? And if he couldn't, would that mean he didn't know what he was talking about?
 [reply] 
Re: Mathematics eq CompSci by dfaure (Chaplain) on May 03, 2005 at 00:03 UTC 
Practically speaking, the job ad degree requirements (particularly math) are inversally proportional to the experience years expected for the candidates. It denotes easily the volatile nature of theorical notions.
In fact, using math and weird notations is often an easier way of teaching algorithm concepts.
____
HTH, Dominique
My two favorites:
If the only tool you have is a hammer, you will see every problem as a nail. Abraham Maslow
Bien faire, et le faire savoir...
 [reply] 
Re: Mathematics eq CompSci by adrianh (Chancellor) on May 03, 2005 at 15:18 UTC 
A while ago, I saw a job ad in the paper looking for a Programmer with Perl and MySQL experience. A couple of weeks later, the same ad appeared but this time round, the requirements say: Degree in Computer Science or Mathematics.
I would imagine this has almost nothing to do with a CS or Mathematics degree being necessary for the job in question. Instead it has everything to do with filtering out the incompetents in the big pile of CVs that the first job advert produced.
What they really need is somebody better at writing job adverts.
 [reply] 

Not sure of the big piles of CVs, it could be the opposite...
But they were very specific when they asked for Perl and MySQL skills, which suggested that they knew what they were looking for.
The second ad (requiring a degree in Computer Science or Mathematics) gave the impression that only persons having one of those qualify for the job.
But if it's a programming job and it could be done with Perl and MySQL, it puzzles me that they should specifically seek persons with a degree in CS or Mathematics.
From the general reading I get from the above, while a degree in CS or Mathematics certainly helps, it's not a prerequisite in some areas of programming.
 [reply] 

But they were very specific when they asked for Perl and MySQL skills, which suggested that they knew what they were looking for.
To me "Perl and MySQL skills" isn't very specific. What kind of MySQL experience? What kind of Perl experience? What kind of application needs to be developed? What kind of other skills need to be developed? Etc.
This could be anything from moving a bunch of data from some Excel files to a MySQL table all the way up to building something like Amazon.
But if it's a programming job and it could be done with Perl and MySQL, it puzzles me that they should specifically seek persons with a degree in CS or Mathematics.
I don't know for sure  we'd have to ask to be certain :) It could be something as simple as a degreeonly hiring policy.
However my bet would be that when they wrote "Perl and MySQL skills"
what they got was a bunch of CVs from people who didn't have the necessary experience for the task at hand. So they chose the shortcut of specifying a degree as a quick way to winnow some wheat from the chaff. Of course by doing this (and sticking to it) they'll also throw away a lot of wheat and keep some chaff  but they only need one good grain so they don't care.
From the general reading I get from the above, while a degree in CS or Mathematics certainly helps, it's not a prerequisite in some areas of programming.
Oh I agree completely. But just because it's not a prerequisite for doing the job doesn't mean it won't be a prerequisite for getting the job. Sad, but true.
 [reply] 

Re: Mathematics eq CompSci by TedPride (Priest) on May 03, 2005 at 16:56 UTC 
Algorithms are just number manipulation. While not all mathematics is algorithms, it could be debated that all algorithms are math  and people who are strong in one subject are usually strong in both, since mathematics and programming draw upon the same talents of logic and spatial thinking.
I'm sure anyone with a degree in mathematics would be able to learn Perl and mySQL to an adequate level within a week or two. Perl isn't really a difficult language to program in, as long as you aren't trying to write CPANlevel modules.  [reply] 
Re: Mathematics eq CompSci by Anonymous Monk on May 04, 2005 at 18:08 UTC 
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 selfconsistancy; 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
 [reply] 

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).
 [reply] 
Re: Mathematics eq CompSci by Eyck (Priest) on May 08, 2005 at 20:06 UTC 
Anyone who cannot cope with mathematics is not fully human. At best he is a tolerable subhuman who has learned to wear shoes, bathe, and not make messes in the house. ~Robert Heinlein, Time Enough for Love
And to answer your question  yes, it is typical to hire people without qualifications or training for mysql jobs, so it's rather strange for the company to change their policy from 'mysql experience' to 'Math/CompSci degree wanted'. Maybe they figured out they need someone generally good,
and not just for this single task they had in mind.
 [reply] 
Re: Mathematics eq CompSci by planetscape (Canon) on Jun 20, 2005 at 17:59 UTC 
 [reply] 

