Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Programming and math

by kiat (Vicar)
on Aug 09, 2003 at 14:02 UTC ( #282411=perlmeditation: print w/ replies, xml ) Need Help??

Hi Monks

I hope to gather your opinions on the following:

1) Do you need to be good in mathematics in order to program well? In other words, is a solid grounding in mathematics a precondition to being able to program well?

2) Are people who have no training in Computer Science disadvantaged in how far they can get in programming?

3) Are some programming languages more "friendly" to learners who are not mathematically inclined and who received no formal training in Computer Science?

I'm very keen to hear what your responses are to the above thoughts.

Comment on Programming and math
Re: Programming and math
by jeffa (Chancellor) on Aug 09, 2003 at 14:41 UTC
    <speech assumption="general">
    1. No. But it helps. I am horrible at math, i just don't have the patience to work things out like that on a piece of paper that gives no feedback (like a compiler does). Most CompSci heads are actually good at math, but most Math heads are not good at programming (something about i = i + 1 ;)). When i was a CompSci undergrad, i was told that i was "the exception to the rule", because i was one of the top students who couldn't get more than a 'D' in Calculus 2.
    2. I think so. But know that you said 'Computer Science', not programming or software design. CompSci can both improve and hinder your programming and design skills. It's the fundamental difference between Academia and The Real World. For example, you get your Bachelors ... you get a real world job. You get your Masters ... you get a higher paying real world job. You get your Doctorate ... and you get kicked out of the Real World.
    3. Yes, but i don't think it's as "black and white" as you might think. FORTRAN obviously requires some knowledge of mathematical formulas, and BASIC requires little math at all - until the problem involves math. The better question to ask, IMHO, is "Will those with a good mathematical background go farther in programming than those that don't?" And that too depends upon what kind of programming you are talking about. If all you do is fetch database query results and slam them through the HTTP protocol, then no ... you don't really need a strong math background. But, if you want to get into functional programming, then a good knowledge of lambda calculus will surely help. At some point, you are going to have to be pretty decent with Math to move to the "next level". This is why i occasionally brush up on my Algebra, Trig, and Calc skills. While it hurts my brain sometimes, it surely doesn't hurt my programming skills. ;)
    </speech>

    jeffa

    L-LL-L--L-LL-L--L-LL-L--
    -R--R-RR-R--R-RR-R--R-RR
    B--B--B--B--B--B--B--B--
    H---H---H---H---H---H---
    (the triplet paradiddle with high-hat)
    

      From the schools I've been to, and the places I've worked, I'd say many CS geeks barely struggled through Math. I was borderline, was planning a split honours, until I discovered how hard math became in third year. Mathematicians SHOULD be able to program, first, because they have to to do their work, second because thinking analytically, handling all circumstances, etc, should come naturally to trained mathematicians. However, they may not do so well at the aspects that involve daily experience.

      For some aspects of programming, understanding math is usefull, even essential. Obviously things that are mathematical need math; on the other hand, a flight simulator, interplanetary rocket simulator, nuclear controller or simulator, could effectively isolate the math to certain sections. You would need a specialist in mathematical programming to handle those segments, but anyone could do the rest.

      --
      TTTATCGGTCGTTATATAGATGTTTGCA

        Mathematicians SHOULD be able to program, first, because they have to to do their work, second because thinking analytically, handling all circumstances, etc, should come naturally to trained mathematicians

        I'd have to say that while I agree with the second half, very few of the mathematicians that I dealt with while I was in graduate school had any need to program to do their work (and at that time in my life, nor did I).

        Of course there are some (depending on field of interest) that do.

      Lambda calculus for functional programming won't help more then Turing Machine for imperative programming. This is just the simplistic model for proving some theory.

      Update: This is just a comparison. I really do not say that lambda calculus or Turing Machines are useless. To the contrary - as I've explained somwhere else in this thread I believe it is quite importand to know some theory - because only theory would give you sound reasoning why something is impossible.

        Please define help, because some people consider proving theories to be quite helpful. My definition was something along the lines of "it doesn't hurt" - so i will stick to what i said: "if you want to get into functional programming, then a good knowledge of lambda calculus will surely help". That is, of course, generally speaking - YMMV.

        Please don't discourage anyone from learning something new.

        jeffa

        L-LL-L--L-LL-L--L-LL-L--
        -R--R-RR-R--R-RR-R--R-RR
        B--B--B--B--B--B--B--B--
        H---H---H---H---H---H---
        (the triplet paradiddle with high-hat)
        
Re: Programming and math
by benn (Priest) on Aug 09, 2003 at 14:44 UTC
    I'll try to keep this short...:)

    1) My gut instinct is to say "no" (despite the fact that I studied maths to degree level :)). "Programming Well" involves many different skills, some almost orthogonal to the ones traditionally regarded as being mathematical - personally, I'd say that the ability to *spell* is nearly as important as the ability to count. :) The 'higher maths' side of programming is, I think, quite rare in the 'real world' of user interfaces and database munging - even in the wild and wonderful world of 3D graphics etc., familiarity with basic trig. and matrices is about as much as you need. There are many many 'intuitive' programmers out there who can produce wonderful algorithms, but would have great difficulty in showing mathematical proofs for them.

    2) Again - no. Like many things, it depends on what is taught, and how. I have no doubt there are some marvellous CS courses out there...but I often recount the story of when I was interviewing programmers - I had an applicant with an MSc in CS , who got confused when I started asking about boolean algebra. He thought "they might have done something about it" as part of his Visual Basic module...:) 5 years ago, I used to joke about graduates with a degree in MS Word...then I met one.

    3) Perl :) Seriously though, to my eyes, they're all pretty much alike until you get deep enough to appreciate the differences (if that makes sense...). It's a bit like playing musical instruments...if you learn music rather than just a specific instrument, then you'll be able to pick up any instrument and play it - they're all just machines for expressing what's already in your head. Similarily, the process of breaking down a real-world problem into a series of code-able routines goes on in your head, not your fingers. Once you've cracked the problem, you can use whatever language is to nearest to hand, as it were.

    Hope this helps,
    Ben.

Re: Programming and math
by The Mad Hatter (Priest) on Aug 09, 2003 at 14:51 UTC
    1. I don't think it is a strict precondition, but I'm sure it helps. I say this because programming and mathematics are very logical systems that require the mind to think in that manner. A good knowledge of mathematics or any other subject that stresses logic will undoubtedly help in programming.

    2. From my experience (which is limited), I'd have to say no. I know great programmers who never took any kind of CS training, and I know great programmers who took CS training. I personally haven't had any formal computer science education, and as long as one has the motivation to learn (from reading, poking around and trying things out, listening to others in the field, etc), they'll be fine.

    3. Off the top of my head I'd say "no", but I don't really have any information to back that on...

    (BTW, good question! I'll be interested in hearing what the other monks have to say...)

Re: Programming and math
by phydeauxarff (Priest) on Aug 09, 2003 at 16:12 UTC
    1. Good math skills helps and perhaps provides an advantage but I think that good analytical skills are more important. If you can think a problem through logically, then you will likely be a pretty good programmer....some math on top of that will probably make you a better programmer.

    2. Perhaps...but I was an Art/Music major in college and I think I am pretty fair at programming. Again, I think the key is to be a natural problem solver...if you get some formal training on top of that it is icing on the cake. (btw, I am in the process of going back to school to get that formal training...it never hurts to learn new things.

    3. Since I don't have much formal CompSci training, I don't feel qualified to answer that for you..I have programmed in a few languages and as most, tend to gravitate to what I am already comfortable with and know....I think someone with a more formal training in Computer Science who was exposed to a larger variety than I could answer better ;-)

Re: Programming and math
by allolex (Curate) on Aug 09, 2003 at 19:36 UTC

    I think standardized exams like the GRE (Graduate Records Examination) are onto something when they test the verbal, mathematical, and analytical capabilities of potential graduate students. I think most good programmers are people who would have high analytical scores in such exams, with mathematics being much less relevant. Analytical people are often those who understand the intuitive and qualitative aspects of mathematics, but who have trouble with quantitative methods, which require much more work before they become intuitive.

    It is, however, useful for programmers to have a good feeling for arithmetic.

    The limits on how far you can go in programming depend a lot on the direction you are going in. As a linguist, I see this problem a lot in the way mathematicians and computer scientists are taught to think; they tend to look for statistical solutions to problems better-solved by someone with a more thorough understanding of the cognitive processes underlying human language. This is just one example from my area, but I'm sure there are many others that require much more knowledge about the system you are trying to implement rather than about abstractions taught to most mathematics and computer science students (probably many engineering fields, biology, etc.) Luckily for these students, there is still a lot that can be represented in terms more familiar to them.

    So, if you're bad at mathematics, be good at something else. It will pay off in the end.

    --
    Allolex

      I forcefully agree. Programming, although this may seem surprising to many, is far more about verbal than mathematical skill. It is computer sciene (of which Dijkstra said that it “is no more about computers than astronomy is about telescopes”) which requires a mathematical mindset. And obviously, both directions require great analytical skills.

      Makeshifts last the longest.

Re: Programming and math
by liz (Monsignor) on Aug 09, 2003 at 19:59 UTC
    I think anybody who can think logically has it in her to become a good programmer, provided there is enough encouragement by her environment and enough stamina on the part of the would be programmer.

    Having a good memory, some math and visualization skills, are a plus.

    Being able to be consistent, is a plus.

    Having had a formal CS education is a minus.

    All of this of course in general: there are always exceptions to the rule.

    Liz

      Having had a formal CS education is a minus.

      I'm curious about this - since a CS education only makes a developer better in my experience.

      I'm not saying that somebody needs to have a formal CS education to be a good developer, but having it be a "minus" seems a tad strong.

      Of course the individual in question has to want to be a programmer in the first place. If they just went on a CS degree because they heard that the job pays well they're less likely to be competent :-)

      (and if anybody cares my answers to the OP are: No - but it can help. No - but it can help. Mostly no - but some are easier to learn in general than others).

        ...Of course the individual in question has to want to be a programmer in the first place. If they just went on a CS degree because they heard that the job pays well they're less likely to be competent :-)

        It is exactly that. I've been exposed to too many "fast moving" CS students in the past years, who are only in it for the suits and the leased cars. Together with what I think is a sub-optimal, if not sub-standard, CS education in most institutions, makes me say that having had a CS education, is a minus.

        In that respect it's a good thing that the number of new CS students in the Netherlands this year, has significantly dropped. Hopefully, there'll be more students in it for love of the subject matter, than for the great salaries.

        Liz

Re: Programming and math
by chunlou (Curate) on Aug 09, 2003 at 20:12 UTC

    Maybe we could draw some parallelism between mathematician and programmer.

      (Pure) Mathematician Applied Mathematician / Enginneer Programmer
    People skill Teaching Working with clients, coworkers. Working with clients, coworkers.
    Management skill Admin. Conference. Manage project. Manage project.
    Business skill Doesn't necessarily need one Good to have if they want to be their own boss Important if you try to assess if a project is profitable rather than "interesting"
    Logical & analytic skill "What's the best algebraic representation/model for a problem that can help me prove the theorem easiest?" E.g. the Four-Color theorem, whose problem was formulated in many different ways. Turn something in form of human language (fuzzier) into some representation or model that's "well-defined" and unambiguous. E.g. coming up with some sensible database schema, logical data flow, class diagram, etc.
    Math skill: "algebra," "discrete math," etc Some mathematicians are more into group theory, graph theory, combinatorics, etc. Optimize traffic flow, flight crew scheduling; make realistic landscape with fractals on movie, etc. Coding replies on group/field theory; cryptography on number theory, optimization on combinatorics, etc.
    Math skill: "calculus," "analysis," "continuous math," etc. Others more into ordinary/partial differential equation (ODE/PDE), fourier/wavelet analysis, etc. Model weather, ocean flow with PDE. Digitize analog signals, etc. You'll use a lot of fourier/wavelet analysis if you deal with "signals"
    Programming language used None, or mathematica, etc. Matlab, SAS, Splus, GIS, spreadsheet, etc. A lot.
    Other science (physical or human) skill Doesn't necessarily need any, though many know some by association of the math problems they deal with Too numeric and diverse to list "Human factor" is important to know (by training or instinct) for GUI design. You use quite a bit of physics if you do animation. Biology of course if you're in bioinformatics.

    If you're going to be a programmer, you're going to need skillset that's shared by mathematicians and engineers, even though they may not feel like they're doing the same things. The differences vary probably more by what you actually do than by the nature of your discipline alone.

    Many people from arts and social science fields did become good programmers after much practice and persistence.

    Java is probably the most resources-rich and popular among beginners (partly due to its successful marketing). Eventually you'll decide for yourself which tools you feel most comfortable to work with.

Re: Programming and math
by Anonymous Monk on Aug 09, 2003 at 21:26 UTC

    Quite simple really:

    1. Depends what you're programming.
    2. Yes, but most people don't get that far anyways.
    3. Definately yes.

    Common rule: the higher level of abstraction, the less you need to know. Executable pseudo-code requires less knowledge to program effectively in than portable assembler. The more theoretical the work, the more a math background helps. And if you want to mathematically prove your code is correct, then you'll definately need at least an undergrad level of understanding.

    Don't forget the old saying: biologists want to think they're chemists, chemists want to think they're physicists, and physicists want to think they're mathematicians. Personally I don't think computer scientists really exist, they're just script kiddies who are starting to learn math ;-)

    The only advantage in making computers understand English is that it will prove once and for all that programmers can't write English. - Mike Taylor

      I forgot something: whenever you ask a question like this you'll get two types of answers:

      1. It's very important if you want to fully comprehend what your code is doing. - These are the people who study math.
      2. It's not that important as long as you think logically. - These are the people who haven't studied math.

      So it all comes down to who you want to believe: the arrogant mathematicians who are trying to artificially inflate what they do, or the non-mathematicians who are commenting on something they don't fully understand :).

Re: Programming and math
by antirice (Priest) on Aug 09, 2003 at 23:57 UTC
    1. Nope. However, is extremely helpful for certain situations.
    2. Nope. I have a few programmer buddies who are entirely self-taught. One even majored in modern dance at university.
    3. Yep. ASM could drive some people to suicide. On the other hand, there's COBOL. You could write an essay on the algorithm you wish to implement and have a slight chance that it might compile.

    Hope this helps.

    antirice    
    The first rule of Perl club is - use Perl
    The
    ith rule of Perl club is - follow rule i - 1 for i > 1

Re: Programming and math
by Dog and Pony (Priest) on Aug 10, 2003 at 00:47 UTC
    1. No, I don't think so. You need a logical mindset, which is not the same at all. I kinda liked maths and was pretty good at it at school, but only in certain areas. I excelled in boolean logic and trigonometry for instance, because those were areas I could directly apply to programming tasks in those days (making demos on the C=64) - other areas I couldn't grasp at gunpoint. I think I'm a pretty fair programmer, but I'm by no means good at maths. What I am good at, is problems solving and logic. Those are the main parts you need if you ask me. Just like people score insanely high at IQ tests without any formal education (I probably don't ;-)).

    2. Some may disagree, but I say a CS degree has nothing to do with it. It may have something to do with how far you can get in your career, but most probably how fast you can get there. But as for what you can accomplish in the end, it has no bearing at all. Either you have it in you, or you haven't. In my opinion, CS educations, just like any chef school or whatever, is completely wasted unless you already has it in you. If you are fit for the task, you may benefit (but you will not learn anything you can't get from another place). If you aren't cut for it, you can go to any amount of schools and you will still suck.

    3. Again, mathematical doesn't have as much to do with it as logical has IMO. And again, I think that either you got it or you don't. Some languages are easier to learn, and of course there might be differences according to what background you have. But it all boils down to if you are a "born" programmer or not, when push comes to shove. On one hand, people with no talent at all can do working programs in Visual Basic or some lame games in flash, but it takes a programmer to go from there.

    You are asking tough questions, but I think that no matter what language, platform or area you choose, there are no real shortcuts. To be good, it will always take hard work and at least some natural grasp of the task at hand.


    You have moved into a dark place.
    It is pitch black. You are likely to be eaten by a grue.
Re: Programming and math
by perrin (Chancellor) on Aug 10, 2003 at 02:36 UTC
    There are certain kinds of programming that you will never be able to do without advanced math skills. Lucky for me, web programming is not one of them.
Re: Programming and math
by didier (Vicar) on Aug 10, 2003 at 08:49 UTC
    1) 2) 3) It's necessary to know some words to write poetry.
    But when you write poetry, you are speaking about soul.


    1) .. 3) Math as a tool for your work give you shortcut.
    To be a good programmer need programming xp-rience and insight.

    1) In mathematic field yes, in real word you just need to be able to describe formally a problem. Solutions can breaks some rules, math cannot (do you use strict:))

    2) They will get a better salary for sure!
    All algorithm doesn's need an hardware knowledge

    3) You should get a look at Perl :)

Re: Programming and math
by Vorlin (Sexton) on Aug 10, 2003 at 21:45 UTC

    I would tend to think the following:

    1: One would have to have some level of math to be able to understand and write programs that require numeric, algorithms, and other mathematical computations. A solid foundation of mathematics will definitely help in programming but by no means is it the only arena that programming covers.

    2: Yes and no, IMHO. Those who have straight experience without formal training will be hindered to a degree because they wouldn't have the beginning knowledge of basics and whatnot. However, while they don't have the formal training, they also gain a better idea of figuring out different methods that those bound to formal knowledge might overlook or not think of. The two in a team would complement quite well, I think.

    3: Yes. Doing math in perl is a lot easier and more conducive for those who aren't necessarily mathematically-inclined rather than C, Assembly, etc, simply because of form and modules.

    I also know that even though someone has a lot of Computer Science, that doesn't mean they are intelligent on a programming level, even if they have a lot of math training. I've seen a lot of people with Comp Sci degrees who are a lot less intuitive in many aspects of Comp Sci simply because the formal training gives them blinders that inhibit their expansion and creativity. I've also seen those who are utterly amazing, with degrees and without. It's all dependent on how one can learn, I think.

Re: Programming and math
by blue_cowdawg (Monsignor) on Aug 10, 2003 at 22:26 UTC

    Let me apply my life's experiences to these wonderful questions and hopefully shed some light here.

    Answer to question #1:

        Do you need to be good in mathematics in order to program well?
    In my humble opinion High School level math will hold you in good stead. Of course YMMV depending on how well your High School did in teaching you math and how good you are at applying what you are taugh vs. you being a good test taker.

    Having said that I can think of some programming I did in the past where knowing how to do interpolation and extrapoltation held me in good stead. In fact I don't belive I could have solved the problem without those skills. (Had to do with RF measurement automation)

    In other cases I can think of I had to work with mathemetitians (sp?) extracting from them programming requirements for a project. Without a base knowlege of math I would have been lost.

    As to question #2:

        Are people who have no training in Computer Science disadvantaged in how far they can get in programming?
    again a classic case of YMMV. I do not have any formal college level training to speak of. Yet I can program far better than a lot of my peers who are/were CS majors. Ironically enough I did a stint as an adjunct professor teaching CS majors how to survive in a Unix environment as programmers.

        Are some programming languages more "friendly" to learners who are not mathematically inclined and who received no formal training in Computer Science?
    I think once you learn how to program in one language learning the next one is just a matter of syntax. Of course this opinion is coming from someone who can program in
    • C/C++
    • Perl
    • Z80 Assembler
    • 680159 assembler
    • 80868 assembler
    • PIC assembler
    • Pascal
    • Fortran (and I'll forget I ever said that if someone tries to make me program in it again!)
    • Pascal (same goes for this languge
    • and I have distant memories of COBOL and PL1
    I didn't list my repetoir of languages to brag but to make the point that I learned those languages as I needed them to accomplish a task building on the knowlege I have of programming in general. Like I say it is just a matter of learning a new syntax and applying a general programming knowlege set and style.

    Now.. if you were to ask me what languages I think I am more productive the list would change somewhat.


    Peter @ Berghold . Net

    Sieze the cow! Bite the day!

    Nobody expects the Perl inquisition!

    Test the code? We don't need to test no stinkin' code!
    All code posted here is as is where is unless otherwise stated.

    Brewer of Belgian style Ales

Re: Programming and math
by Boots111 (Hermit) on Aug 10, 2003 at 23:31 UTC
    kiat~

    <rant>
    1) All programmers should have a basic grounding in math. I have seen way to many programmers who do not know de Morgan's law (!(a && b) )== (!a || !b) and that is not even remotely high level math. I have also seen too many people fail to realize that the converse of a true statement is not necessarily true. One needs a basic understanding of math in order to program well.

    2) All programmers should have a basic grounding in theoretical Computer Science. I have had coworkers refuse to implement more efficient algorithms because they did not understand the concept of a DFA and did not care to listen to my explanation of it. Also one ought to understand why certain things simply cannot be determined by a computer program and what class of things this usually is.
    </rant>

    3) Probably has a lot to do with the inclinations of the person.

    Also, before anyone takes me out of context here I would like to point out that I am only calling for a "basic grounding" in the above. This does not necessitate formal education (although that is the most common method). A person could teach these things to herself; however, it is important that one actually learn them rather then delude oneself into thinking that they are known.

    Boots
    ---
    Computer science is merely the post-Turing decline of formal systems theory.
    --???

      That's not math, that's symbolic logic! (Which, to be fair, a lot of people learn in math classes.) And even though De Morgan probably had some mathematical application in mind, De Morgan's rules are a reformulation of some of Occam's teachings, which (al)most certainly did not have mathematics as their basis. And while knowing about finite state automata may be useful for some applications, I don't really see them as something that can't be learned along the way, should a programmer ever need to know how to implement them. In any case, a lot of smart programmers come up with this kind of thing on their own and are often surprised to hear it has a name. :)

      (That said, possessing more knowledge only enhances your ability to solve problems.)

      --
      Allolex

        Allolex~

        While you are right that De Morgan's law is part of logic, I consider logic to be part of Math. This might be a slightly contentious claim, but I know a few logicians who agree with me about this. Plus you can prove some nifty isomorphisms between abelian algebras and various logics.

        But I have a fairly wide view of what qualifies as Math...
        Boots
        ---
        Computer science is merely the post-Turing decline of formal systems theory.
        --???
        Argh
Re: Programming and math
by YAFZ (Pilgrim) on Aug 11, 2003 at 10:45 UTC
    1) If your programming is related to some engineering project, some kind of calculations, modelling some real world events, etc. then handling symbolic stuff and being able to go from them to working code would be an ovbious advantage.

    Or if you want to develop new algorithms and data structures then mathematics and symbolic analysis are going to be useful for you.

    However, the world of programming is so diverse that you can spend decades without seeing any math at all. Think about building a web based content management system, think about programming a commuminty message board, routine SQL programming, etc.

    2) It depends. Just like the first question, the important thing is which field of programming you are working in. If you are into the algorithm development, doing theoretical work, building some security protocol, cryptography, etc. then formal CS education can be the right place to start. But never forget that there are thousands of programmers who don't have any formal education in CS. Maybe the problem is with the meaning of the word "programming", it is too wide! :) I'm doing very high level web programming, Linus Torvalds is doing very low level multitasking, multiuser operating system programming. We are both programming, but are we doing the same thing?

    3) Well you must change the question: Are there languages who are more friendly to the mathematically inclined? ;-) I don't think well known, procedural (imperative) programming languages look like "mathematical".
Re: Programming and math
by zby (Vicar) on Aug 11, 2003 at 11:29 UTC
    Answering 2). If someone have no such training he can allwayas get one. I believe you need to know some theory to be a good programmer. The most value in such knowlege is that only it can give you negative answers - i.e. if something cannot be done.
Dragonchild's requirements for programmers
by dragonchild (Archbishop) on Aug 11, 2003 at 13:25 UTC
    There are four preconditions to being able to program well, none of which requires mathematics.
    1. Symbolic Logic. This is not something which is only taught in Math. I received better instruction in Logic taking a Philosophy course than in my degree in Math.
    2. Giving directions. Remember - a computer is an idiot that will remember everything you tell it and do it as long as you want it. If you can't tell someone how to get from your house to the movie theater, you cannot program
    3. Abstract thought. You have to be able to think in meta-terms, at least if you want to have re-usable code. (Remember, re-usable means that it's not specific...)\
    4. Patience / perserverence. You will, on a weekly basis, encounter that bug that just won't be found or that design that just won't be finalized. If you cannot deal with that, you will have an ulcer before you're 25.
    If you have those capabilities, then you have the capacity to be a good programmer. If you do not have those, then don't even think about a career in development. Period.

    ------
    We are the carpenters and bricklayers of the Information Age.

    The idea is a little like C++ templates, except not quite so brain-meltingly complicated. -- TheDamian, Exegesis 6

    Please remember that I'm crufty and crochety. All opinions are purely mine and all code is untested, unless otherwise specified.

Re: Programming and math
by Abigail-II (Bishop) on Aug 11, 2003 at 13:48 UTC
    That's a very broad question, and specific answers cannot be given. It all depends. Most of all, it depends what programming do you consider? If it's a simple script that takes the input of a form and returns some HTML (after perhaps consulting a database), there isn't much skill involved, let alone math skills.

    But if you are programming the automated pilot of an airplane, the robotic arm that allows a surgeon to perform an operation at a distance, a program that interprets the data from a seismologic experiment of an oil company, we are talking a totally different game. Then you do need skills, lots of skills, and math skills can be very useful.

    As for question 2, I do believe that people with no education in Computer Science have a disadvantage. Again, for you garden variety programming, it hardly matters. But it does matter for more advance programming. Compare it with driving a car and knowledge of car mechanics. For your average commuter, it hardly matters whether you have knowledge of car mechanics. But if you look at the Formula-1 or NASCAR drivers, you'll see that most of them have quite a lot of knowledge of car mechanics.

    As for question 3, about programming languages that are more friendly towards those who don't have a mathematical or computer science education, the classical answer is "COBOL".

    Some languages that will appeal more to mathematical people that to others are, IMO, Lisp, Haskell, Fortran and SQL.

    Abigail

Re: Programming and math
by kiat (Vicar) on Aug 11, 2003 at 14:31 UTC
    Hi Monks,

    Thanks to all for sharing your opinions on the above questions I have regarding programming and its relationship with Mathematics and Computer Science.

    I had some thinking about those issues before posting them and I'm now quite convinced that I'm not alone in my views on them.

    1) While having a good grounding in Mathematics is definitely a plus in one's mastery of programming, its relevance/contribution to programming is dependent to a large extent on the nature of the programming task. The more arithmetic the task, the more Mathematics is required. Certain programming tasks like coding a forum script has little to do Mathematics.

    2) Again, while it's good to have a formal training in CS, it's not necessarily an advantage. Practical experience, logical thinking and other factors come into play.

    3) I think perl is one such langauge to me - not that I know a lot of progrmaming languages. But I think it helps that Perl's creator, Larry Wall, is a linguist :)
Re: Programming and math
by bwelch (Curate) on Aug 12, 2003 at 15:01 UTC
    In two areas I've wandered these years, mathematics has been extremely helpful: data mining and bioinformatics.

    1. Yes and no. The math I learned in college was not that useful. If I'd gotten a minor in statistics and emphasized matrix math several jobs would have been much easier.

    2. Some computer science programs are useful in the real world, others teach bad habits that need to be broken later. It depends. The best developer I've ever met hated computer science and dropped out of college.

    3. I think the most abstract languages are easier in some ways, but that might depend on the individual.

Re: Programming and math
by oRg (Initiate) on Aug 14, 2003 at 06:01 UTC
    My opinion is a good foundation in mathematics is key is being succesful with computer programming languages, and having some computer science classes under your belt can't hurt. On the other hand though I do have friends that have learned Perl, Java, C++, and HTML with only a high school diploma. With the internet the way it is today alot more people are now teaching themselves programming skills and mathematics. In my opinion, based upon experience and connections, I would say that it all comes down to determination, and focus. Many tutorials are available on the net to learn almost any programming languages out there, whether it be SSL, AppleScript, PHP, or Fortran. So as long as you know some basic calculus that you get in high school you can get a good basic knowledge of how most programming languages work._____________________ 01101111 01010010 01100111
Re: Programming and math
by husker (Chaplain) on Aug 15, 2003 at 15:25 UTC
    I began pursuing a BS in Mathematics while I was working at a college as a programmer (had a BS in Comp. Sci. already). I found developing my math skills helped my programming, and my programming skills helped my math.

    Math proficiency helps you develop the mental discipline and rigor that really helps solve a problem ... whether a problem on paper, or a problem in magnetic storage. Most computer applications involve transforming some set of input (input from the user, a database record, a real-world event) into some related set of output .. a report, a transaction, a web page. Math is all about transformations too. It's also about "following the rules". You can't take shortcuts in math, or be sloppy, and get correct results. The same is true for programming. Leave out a detail, make a wrong assumption ... in math, you get the wrong answer. In programming, you get the wrong output.

    As others have pointed out, thinking up a solution to a problem (analysis) and implementing it (programming) are two separate things. I think math skills definitely help you with the analysis. It helps with the programming skill too, since math aptitude gets you comfortable working with formal grammars and symbols ... something you'll need to be able to do when you work with any programming language.

    As far as not having a BS degree, it may limit you in career advancement from an HR perspective, but it should not limit you in how good an analyst or programmer you might be. Getting a BS just means you learned some stuff in the classroom. If you can learn the same things in your living room or your office, that knowledge is still as useful. You may learn things in different order, or it may take you longer (since you'll sometimes have to go search out knowledge, instead of being told to read chapters 4 and 5 and do the programming exercises when you're done). But in the end, a non-degreed programmer is just as capable of producing working code as a degreed one.

    As for which languages are "easy" ... well, for novices, complicated syntax will become a discouraging obstacle. The two easiest languages I learned were BASIC and COBOL. Neither language is very "powerful" in their base implementations. COBOL was made for the business world so that non-CS people (like accountants and managers) could read the code and help the programmer decide if the code was solving the problem correctly. For this reason, novices often find it easier to read and write. BASIC is similar. It doesn't have a bunch of complicated operators or constructs. (I'm talking the original BASIC here, not Visual BASIC or whatever).

    Both these languages are easy on the novice but still allow you to write functional programs. If you're just starting out, that's your main goal .. just to figure out if you have the smarts to solve a problem (analysis) and then implement the solution (write a program).

Re: Programming and math
by poqui (Deacon) on Aug 18, 2003 at 16:30 UTC
    Good question Kiat

    I came to programming through math myself. In highschool, I found that I enjoyed the proof process in Geometry. Later I had a friend who was in the math club and he had time on the school's computers. He showed me his implementation of "Single Pile Nim" on punched paper tape, then told me about Basic programming. I immediately went to the library and started looking at Basic books and was struck at how the structure of programming was like the structure of proofs.

    I was hooked. I began pestering math teachers for computer time, and was able to get an entire semester of lab time without having to take a class. Next semester though, I had to take a class to get more lab time.

    So, at least for me, it was the synchrony of having had Geometry, and then going to a school which had computers which got me into programming.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: perlmeditation [id://282411]
Approved by BazB
Front-paged by allolex
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (9)
As of 2014-11-26 10:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (166 votes), past polls