3 ms·
You may be able to code some stuff without math. However, you need math for a lot of computer science, computer engineering, and programming. If you want to do
by gersh 16y ago
You may be able to code some stuff without math. However, you need math for a lot of computer science, computer engineering, and programming.
If you want to do 3d animation or vector graphics, you really need to know vector calculus. If you want to work with a codec, or do video processing, you need math for the encoding algorithm. Analytics are useful for a lot of things. It helps if you understand the standard deviation, and such. Encryption and hashing algorithms use a lot of math.
Have you tried programming in Scala? Have you used generic functions? A lot of this stuff ties back into Abstract Algebra.
I haven't started with talking about discrete math. Are you going to literate enough to understand the difference between a hash-table and a b-tree?
I think it is a lot easier to teach yourself to code, than to teach yourself math. Thus, universities should focus on teaching math. If you know math and some basic programming, you should be able to learn the rest by reading the coderature of good open source projects.
- deanchen 16y agoDefinitely agree with you regarding the fact that math is used extensively in many projects but just wanted to point out that the math is very different for 3d animation vs video processing and only a very small subset of software engineers or computer scientists will every need to know it. I am able to fully understand the uses of and apply hash tables, btrees, kd-trees or any data structure. Ex. although I can't prove to you the correctness or to create a good hash function that still doesn't prevent me from understanding basic concepts such as hash collisions due to excessive entries or the look up speed O(1) of hash vs O(log(n)) for btrees. On the other hand, if I actually were to implement search for a project I would just use MySQL(I don't need to understand set theory at all to be able to write efficient queries with a firm understanding of the role of indexes). Never tried programing in scala, but I have no problems with functional programming concepts like map/reduce(currently doing a lot of new projects in couchdb because I think its more interesting to writing sql queries). I also would like to point out that none of the example you gave require calculus, which was the requirement that I found to be a bit ridiculous and all of your examples involve very different branches of mathematics with very little overlap and most computer algorithms can be applied to great effect without a perfect understanding of the mathematical foundation or proof of correctness. At what point do you stop and ask whether you are teaching too much math and not enough computer science? I would agree that its easy to pickup how to code but nearly impossible to become a good coder on your own without criticisms and feedback from others. The quality of code I've read some really atrocious code from cs graduate students or engineers all of whom have a extremely good understanding of math. And I would also argue that it is very unrealistic to expect someone to download and read tens and thousands of lines of open source code and hop on IRC to discuss why things were done certain ways with the maintainers. I would also argue that a firm understanding in math does not mean that you can just get map/reduce, MVC, design patterns, web services, distributed computing, multi-threading, event driven programming and many more fundamental concepts that programmers now a days need a firm understanding of to do anything significant.
- gersh 16y agoIf you want any sort of physics in your 3d, you pretty much gotta know some calculus. You need calculus to understand acceleration, gravity, etc. Statistics also uses calculus. For example, the normal distribution, is \integral{e^(x^2)}. If you want to do any A/B testing, regressions, machine learning, etc. you will need it. Map/reduce comes out of algebra. Is your operator associative? If not, you better be careful how you map-reduce algorithm executes. If you don't understand, associativity and your operator isn't associative, it can cause problems. Finite state machines are important too. It can be really hard to write a parser, if you don't understand FSM. I suppose that ties in with design patterns. If you can write a good proof, I don't see how can be that terrible of a programmer. How many CS graduates do you know, who can write a good proof, and aren't good programmers?