It depends what type of computer programming you're doing. For a lot of programmers, the challenging part of the job is figuring out what problem actually needs to be solved, convincing the rest of the team that it needs to be solved, reading through legacy code to find the right place to make the change, and consulting with other programmers who are familiar with the legacy code. Then you get to spend a few minutes coding up the solution, after which you write some tests, document the solution, and so on. Most of those tasks involve skills other than math and algorithms.
Basic knowledge on mathematics, discrete mathematics, Boolean algebra, linear algebra, differential equations if you want to do scientific computations, numerical methods, etc.
It depends what type of computer programming you're doing. For a lot of programmers, the challenging part of the job is figuring out what problem actually needs to be solved, convincing the rest of the team that it needs to be solved, reading through legacy code to find the right place to make the change, and consulting with other programmers who are familiar with the legacy code. Then you get to spend a few minutes coding up the solution, after which you write some tests, document the solution, and so on. Most of those tasks involve skills other than math and algorithms.
I'm not a specialist in either mathematics or programming but suppose all the following branches in mathematics constitute the important basis of programming:
University of Nottingham, MSc Computer Science focuses on the fundamental mathematical concepts that underlie modern programming and programming languages, including aspects of recent and current research. Example topics include:
I am surprised that dear researchers suggest all branch of mathematics as foundation of programming!. How many mathematician do we know who are expert in all branches of mathematics, let alone the programmers.
The foundation of programming is to think logically and consider all cases for debugging the programming , to know design of algorithms. I think mathematical logic, theory of computation and simulations are the necessary mathematical courses for good pragrammers?
The theory of computation can be considered the creation of models of all kinds in the field of computer science. Therefore, mathematics and logic are used
Programing can be done mathematicallly in many programming languages. There is a duality between Specification and Program derived from it. Many mathematical theories can be used, for instance Calculus of Relations, which is also a foundation of mathematics, see a paper by Tarski.
For programming logical mathematics is mostly required. Also, programming need mostly the final results obtained by complex mathematical derivations. In many cases, it can be mathematics which really makes the foundation for programming.
Could you please elaborate a bit on what exactly do you mean by programming and why do you ask this question? The reason for why I am asking this is the following briefer on this topic.
What exactly is programming? (cf. https://www.google.se/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=definition%20of%20programming), presents a wide definition that does not tell us a lot. In psychology, there are more precise definitions (cf. https://www.cl.cam.ac.uk/teaching/1011/R201/ppig-book/ch2-4.pdf).
Now, what mathematical aspects are the foundations of programming depends on your perspective. An non-exhaustive list of issues that are related to programming are:
Developing artefacts for programming
Using methods for programming
Learning methods for programming
Verifying and validating correctness, usefulness, meaningfulness etc. of an artefact such as a program.
In 1 & 4, proving correctess (program safety & program liveness) of critical parts are of essence and hence logic, predicate calculus, proving are important. In particular, for critical systems (e.g., safety critical, mission critical). In 2, it is domain dependent; for example, in databases, set theory, relations and functions are of importance; in programming at the large type theory is of real importance. In 3, it depends on the individuals, the topic in focus etc.
SO, if you ask what mathematics is the foundations in general, then everything that can be applied is a foundation. If you want to know how to design a curriculum, then you need to look at what topics that are being addressed and choose relevant mathematical topics here (see curriculum from ACM and IEEE for suggestions). Is it in a particular domain? Is it from a particular perspective (requirements engineering, design implementation, testing, reviewing, verification and validation)?
There were mixed answers regarding the question, as the question was mathematics @ computer science, not programming @ computer science.
I would say that mathematical discipline called "discrete mathematics" is the issue.
" Think integers, graphs, and logical statements—things we use a lot in programming. Discrete math can be used for software design specifications, analysis of algorithms, and other practical applications, but it's really a great tool to develop as a programmer. Put simply, it's a building block for logical thinking."
Beside Numerical Analysis (explained in my previous post, understanding of Matrices is also beneficial as foundation to Programming. The latter usually covered alongside Numerical Analysis, however.
Thank you for your response. What do yoy mean by "All mathematics are necessary for programming. I believe there is a correlation between understanding mathematics and programming"
Your sentence and using the word necessary implies that programming can not be done without knowing all branches of mathematics. There are many excellent programmers who do not have expertise in all branches of mathematics.
Computer programming involves computational modes of thinking, it will help to have some mathematical and logical aptitude. Therefore I understand the importance of mathematical logic thought in discrete mathematics, and (simulations, numerical methods) for programmers in science and engineering.
In iran, all engineering students take the programming course and the prerequisites for the course are numerical methods and differential equations (taken after Math I and II).
Dreams occupy your mind of perception and make achievable in the future, it has no limited border. Goals take over your reality and your actual daily activity to achieve your vision .
Plz. find answer to the query after having discussed with a friend of mine who had been helping me during the last over 6 years in my computational work:
[[ All information in digital domain is stored in the form of “1” or “0” i.e. in binary form. Therefore, knowledge of binary and other number systems such as hexadecimal or decimal systems is necessary. Of course, knowledge of basic mathematics such as addition, subtraction, multiplication and division etc. is essential. In Graphics etc. knowledge of basic trigonometric functions is required.]]
When I was a student, there was FORTRAN and COBOL programming, which I found quite boring, although challenging. Nowadays, programming is much stronger and different, but probably the basics are more or less good logic, impecable rationale thinking and reasoning; understanding mathematics, from theorems, corrolars to differential calculus and trigonometry is a very good training, maybe critical. But I tend to agree that good linguistic, grammar and communication skills are very important as well...
Maybe a better question to ask would have been "what is essence of computer programming or best coding practices?" In steps towards good programming we need to design algorithms and flowchart and Pseudocode. The development of an algorithm (a plan) is a key step in solving a problem. Once we have an algorithm, we can translate it into a computer program. Write the manual steps as comments or pseudo-code.
I initially was believing the many role of programming was to LOAD and STORE :) High end and exhaustive Solvers , Eg: Optimization problems (Convex /Concave /Combinatorial ) that are NP- hard /soft ...
Signal processing : for filters / transformation / image/audio (all the math behind the theory )
Modelling , Matrix theories (Control systems ... )
Essential to instruct machines to perform a task , order is needed and that needs math ...
Except if you are are trying to solve a science problem or writing a technical software, you don't need maths you learn before you are 16.
In seventies and eighties (of twenty century) everybody looked at computer and programming to cut the time spent to do any work. At these times programming became a hot topic and programmers wages were the source of envy for the rest.
The interesting things was most of these in-demand programmers didn't have even high school diploma or were school drop outs. These people had a brain but they never employed it before picking up the job of programming. There were also people with the university degree, but not relevant one. Of course there were programmers with what you might say with the relevant background.
What had happend in nineties was that these new generation of programmers priced themselves out of the market and their job were outsourced to India. Indian programmers, all have a degree in engineering or such. Perhaps, the native programmers needed a bit more maths to calculate how much to demand.
For programming you only need some primitive logic and being able to add up, and an enormous ability to fight back boredom.
What is offered in Massachusetts Institute of technology (MIT): one of the best universities in the world:
Course: Mathematics for Computer Science
This course covers elementary discrete mathematics for computer science and engineering. It emphasizes mathematical definitions and proofs as well as applicable methods. Topics include formal logic notation, proof methods; induction,well-ordering; sets, relations; elementary graph theory; integer congruences; asymptotic notation and growth of functions; permutations and combinations, counting principles; discrete probability.
“How much math do I need to know to program?” Not That Much, Actually.
"Math and programming have a somewhat misunderstood relationship. Many people think that you have to be good at math or made good grades in math class before you can even begin to learn programming. But how much math does a person need to know in order to program?
Not that much actually. This article will go into detail about the kinds of math you should know for programming. You probably know it already...
There's a few areas of programming where some additional math knowledge might be needed (but for 95% of the software you'll write, you don't need to know it.) 3D games and 3D graphics – 3D stuff will usually involve knowing trigonometry and linear algebra (that is, math dealing with matrices)..."
Well said. I am happy somebody else upheld my view. One can't be more than this clear.
In my post I related my actual experience working with programmers ( business software) who didn't have schooling very much beyond the compulsory level. I am not saying that they were not intelligent, but they didn't know much advance maths beyond using their fingers.
In universities everybody does his/her own programming; hence, you would never know how much they are using their maths background. After all they are involved with programming something seintific which is maths in disguise.
In software houses there is a layer above programmers who are known as "system analyst". These people are the brain behind the software. They will layout for the programmers what to do. I guess in gaming software there must be some sort of analysts.
Having been associated with Computational Chemistry( not the programming) for the last over 6 years, I think there is a correlation between understanding mathematics and being able to "think algorithmic ally".
I, reproduce, in verbatim the experience from a programmer( certainly not Indian) for your kind perusal and will request my friends to read in between the lines of his last paragraph:
“I started programming when I was about 9 years old and it would be a stretch to say I had learnt much mathematics by that stage. However, with a bit of effort I was able to understand variables, for loops, goto statements (forgive me, I was Vic 20 BASIC and I hadn't read any Dijkstra yet) and basic co-ordinate geometry to put graphics on the screen.
I eventually went on to complete an honours degree in Pure Mathematics with a minor in Computer Science. Although I focused mainly on analysis, I also studied quite a bit of discrete maths, number theory, logic and computability theory. Apart from being able to apply a few ideas from statistics, probability theory, vector analysis and linear algebra to programming, there was little maths I studied that was directly applicable to my programming during my undergraduate degree and the commercial and research programming I did afterwards.
However, I strongly believe the formal methods of thinking that mathematics demands — careful reasoning, searching for counter-examples, building axiomatic foundations, spotting connections between concepts — has been a tremendous help when I have tackled large and complex programming projects”.
Great!, we went from all mathematics to very little mathematics in this page.
Yes, everyone can do programming with little math, the question is how good , effective and optimized are the written codes.
All my graduate students have done some programming for their thesis.The best programs are written by students who have a solid math background (as evidences by good grade in advanced engineering mathematics which I teach). I still believe that one does need to have a logical mind and good problem solving skills to be a good programmer and that math courses provide or strengthen these necessary skills.
Having gone through thoroughly ( a bad habit with the old people) so as to find what is written in the attachment shown in the answer given by one of our respected RG colleague is summarized as follows. I leave it to my friends to judge the level of proficiency reqired in Mathematics:
FOR GENERAL PROGRAMMING :
Addition, subtraction, division, multiplication, mod ;
the even/odd mod test tric;
to get a percentage of a number;
know what negative numbers are;
know what a Cartesian coordinate system is ;
know the Pythagorean theorem ;
know what decimal, binary, and hexadecimal numbering systems are
ADVANCED MATHEMATTICS IN SOME AREAS OF PROGRAMMING( IT IS NOW COMMON)
[1]3D games and 3D graphics,
[2]2D physics and 3D physics – To do programming that involves physics, you’ll need to learn some physics equations and formulas :
(specifically mechanics, which is the type of physics with springs, gravity, and balls rolling down inclined planes.)
{{ However, there are several physics engines and software libraries }}
I endorse all that has been said and just to add that being able to think logically would be key foundational skill in being able to identify steps necessary for solving the problem.
All kinds of mathematics and different algorithms are needed for programming, mainly using mathematical logic and algorithms that encode the linguistic part as semiotics, semantics and syntax in artificial intelligence programs.
Numerical Mathematics is the foundation of computer programming. Further, operation research can only be done efficiently though computer programming. So, the two branches of Maths can be thought as the base for programming.
In my phd thesis concluded in 2009, with title "Foundations of Program Refinement by Calculation", I used the relational calculus as a foundation for programming. The relational calculus was presented by Tarski, after the presentation of the lambda-calculus by Church.
Discrete mathematics is the study of mathematical structures that are unique (aka discrete). Think integers, graphs, and logical statements—things we use a lot in programming. Discrete math can be used for software design specifications, analysis of algorithms, and other practical applications, but it's really a great tool to develop as a programmer.
Calculus and numerical mathematics can be the first foundation for programming. Programmers need to be aware of the mathematical structure for any problem to solve it.
The foundation of computer programming requires an understanding of simple arithmetic, theory of equations, Boolean algebra, statistics and iterative formulae for nested loops.
Advanced programming may use all or any of the elements of mathematics depending on what the program is intended to do.
The most important part of programming is having the knowledge and basic data with which to analyse what the problem is and then decide how to go about solving it.