## Ask Slashdot: How Important Is Advanced Math In a CS Degree? 656

AvailableNickname writes

*"I am currently pursuing a bachelor's in CompSci and I just spent three hours working on a few differential equations for homework. It is very frustrating because I just don't grok advanced math. I can sort of understand a little bit, but I really don't grok anything beyond long division. But I love computers, and am very good at them. However, nobody in the workforce is even going to glance at my direction without a BSc. And to punish me for going into a field originally developed by mathematicians I need to learn all this crap. If I had understood what I was doing, maybe I wouldn't mind so much. But the double frustration of not understanding it and not understanding why the heck I need to do it is too much. So, how important is it?"*
## Advice from a math hater (Score:5, Interesting)

## Re:Think About It This Way (Score:4, Interesting)

I have been hiring IT professionals for years, hardware, networking, security, and software gurus.

If you are hiring IT professionals and gurus, you don't need computer scientists.

I work in the video games industry, inside the guts on game engines. I absolutely need math.

If you are simply working on 3D games you need math through linear algebra and calculus. If you are working on any high-performance graphics processing you will need sharp math skills. When you are talking about a billion polygons per second you don't have the luxury of allowing a computer to do all the work for you; you need to pre-solve everything you can, which in turn means having solid mathematics skill.

If you are working on games physics simulations, all those PDEs in college will look easy. You also better know your stuff from the highest level concepts of math down to the details of getting the most from associative caches. Again, a solid mathematics background is a must.

If you want to get a job as an "IT Professional" writing crappy business software, the math (and really, the whole computer science degree) doesn't really matter.

If you are a business programmer where 20ms means a database transaction, you don't need the math.

If you want to write any kind of scientific work or any kind of high performance software, anything from video games to weather simulations to military simulations to oil and gas exploration, you absolutely need the math skills.

## Re:depends on what you're going into (Score:3, Interesting)

## Re:Think About It This Way (Score:5, Interesting)

While I understand your point, it also has weaknesses.

I worked with a guy who was a math guru - and he was an absolute sh** software engineer. Oh, he could program some - give him a very finite problem to solve and he could solve it very functionally; however, when it came to actual software *engineering* he was an total loss.

Normally we'd replace a guy like that, but like I said, he was great with numbers - so we gave him a sandbox to play in. He never ever, ever, checked in code into our system. He'd finish something and turn it over to another engineer who'd refactor it and check it in.

He was a hell of a nice guy too, but being smart has nothing to do with being a good software engineer (although it surely makes it easier.)

## Re:My solution (Score:4, Interesting)

## Re:depends on what you're going into (Score:4, Interesting)

Yeah, and for this you need not only math, but an intuitive understanding of modern computer architecture. You've discovered, as many previously have as well, that memory is much slower than most computation. Doing a few adds and multiplies is almost always faster than pulling in a fresh cache line. This especially if your lookup table access is sparse and you're paying the penalty of fetching an entire cache line just to look up one number (a float is just 1/16th of a cache line). Sparse table lookup of floats generates 16x higher memory bandwidth that what one may naively expect.

Memory is slow. Adders and multipliers are pretty damn fast. You're also possibly reinventing the wheel [ku.edu] :)

## Beauty of Math; Beauty of Computer Science (Score:5, Interesting)

I work in computing; a meter away is a mathematician.

He knows real math: group theory, complex analysis, Lie algebras, topology, and, yes, differential equations. To him, math isn't about numbers ... it's about rigor, elegance, and beauty.

No surprise that his code is rigorous, elegant, and beautiful. When he showed me how to use Cheetah to build templates in Python, he explained things with an clarity and parsimony. In his world, clumsy coding is as bad as a clunky math; a clear mathematical proof is as fascinating as a tightly written function.

This man is the go-to guy for the 100 person business. Soft spoken and never argumentative, his advice and opinions carry weight. I'm honored to work alongside him; not a week goes by that I don't learn from him.

## Re:depends on what you're going into (Score:4, Interesting)

Skills for game development are fun, but the at best 1% of the software development market they represent is not something a budding programmer should worry about too much.

Getting a CS degree involves a number of things that aren't just software development. Part of the reason degrees are considered valuable is because they prove people are willing to stick to the end of a project even if there are parts that are difficult for them. Almost everyone has something in a solid degree program that's hard for them. I breezed through math but struggled with chemistry. Sucked it up and worked through the parts that didn't come easy, because that's part of what degree programs are supposed to be about.