Hacker News new | ask | show | jobs
by kirinan 4846 days ago
Computer Science is a very interesting degree. Having done the program myself, you learn math you will never use* and ton of other things that can be counted as useless, however I am better for it. Calculus taught me less about how to do Calculus (I don't remember how to do an integral, but I don't get paid to do that), but it did teach me how to study properly and that grinding (hard work) really can solve some issues you have. Discrete Mathematics taught me to look deeper into things, and not just observe the first thing you see as the conclusion. Overall, I went into Computer Science wanting to learn how to program and left not learning how to code from the program (I worked full time as a software engineer through school) but I learned valuable skills that have helped me get where I am today. If you are thinking about not going to college (college is not for everyone*), I suggest you do. College isnt about what books can teach you (you can read those), its about the experiences that you gain (like my stories above), the people you meet and the bonds that you make. That is what makes it all worth it!
5 comments

I'm going back to for a CS degree after a 6 year hiatus. I completed about 90 hours of a history degree before I dropped out to start programming.

Going back has made me rethink almost every negative thing I've ever said about college (at least with respect to STEM programs).

The contrast in what I'm doing now and the history degree I was going for before is completely night and day. The difference in rigor between the departments (same school for both) is shocking.

The biggest specific difference is that Computer Science feels like a coherent program, where each class builds on the previous ones, whereas history felt like I was just taking a bunch of loosely associated classes with no overall goal.

I don't get this at all. I need my understanding of calculus, trig, discrete mathematics, probability/stats and especially linear algebra. Then again I do computer vision, but even building web apps (that do something non-trivial) in my spare time I end up using that knowledge. Basically, build trivial stuff (simple UIs and a RoR backend?) and you probably don't need math. For anything else, you'll be stuck without it. If you can't follow a research paper in computer science or some domain knowledge needed for the job, then you won't be able to do your job.
Being someone who cherishes the ability to do complex maths without a calculator, and having friends who rely on Wolfram, I think that the difference is that when you know the mathematics, you see the mathematics. What you see as a trivial problem that is simply a solution to a homogenous second order linear differential equation, your friend who doesn't know the mathematics sees as an entirely different problem. I'm not saying that you can get by indefinitely without mathematics, but that a lot of problems that have mathematically elegant solutions have other (probably less elegant) solutions, too.
I'm not even talking very advanced stuff. I wouldn't say my math is particularly good. I've forgotten most of the specifics of what was taught in those classes. I totally use Wolfram Alpha when I can, I don't do math for the thrill of doing it, but because I have a problem and I'm trying to find a solution. I think it's more important to have the ability to break down a problem mathematically, and then read up on the parts you need than to remember everything by rote. The problem is that if you've never taken any advanced math, it's very difficult to read up on it and knowing where to start.
I'm not a programmer but. . .unless you're coding an explicitly math-intensive application, aren't there tools that could do any math that's required? Of course, the tool would have to come from a trusted source.
If you don't know the math, how do you see what math applies?
Like I said, might not be a problem for a simple web app, but have you ever tried writing a game? For even the simplest game I end up using a lot of (fairly simple) math, linear algebra and some physics. If you start doing stuff in 3D, you'll need even more.
If you ever do any work in Canvas (SVG) from the bottom up, you'll end up probably using calculus somewhat for things like Bézier Curves[1]. It was one of those times I thought to myself, "I'm glad I took 4 quarters of Calculus." Knowing derivatives and such for making a game is also useful when it comes to Newton's laws and knowing acceleration is just the rate of change of velocity and velocity is the rate of change of distance.

[1] http://en.wikipedia.org/wiki/Bézier_curve

In my experience, Comp Sci grads are among the best prepared employees that we hire for programming careers. It's a great general-purpose education for the kind of work we do, although it's no substitute for hard-gained experience.
I think the value of almost any math class is that it teaches you to think logically, weed out noise (in data). . .both of which are valuable traits for programming.