
Why computer engineering students need to learn advanced calculus? - desushil
I am greatly interested in programming, and I guess I am doing good at it. But at the same time I have tons of calculus and stuffs inside my course studies of bachelor in computer engineering which I think it shouldn't be there. I want to know where will I need to use these calculus in real time programming?
======
dalke
I must say that much as I enjoyed the Bolzano–Weierstrass theorem, Lebesgue
integration, and the other things I learned in my advanced calculus classes,
they haven't proved directly useful for my work. I'm surprised your university
even requires it of computer engineering students since advanced calc is
usually a math-students-only upper-level course. Are you really doing that
sort of advanced calculus, or is it more that you don't know enough calculus
to know what "advanced calculus" means?

The techniques of the intro to intermediate calc classes are more relevant.
That would be up to about Stoke's theorem and partial differentiation, and
some differential equations and numerical analysis to round out the calculus.
Statistics, topology and algebras (like matrix algebra) are different fields
and have different impact on software development, which I won't get into
here.

I don't have much experience with real-time computing, but if you're doing any
sort of real-time machine control then you're dealing with physical systems,
where differential equations and questions of numerical accuracy come into
play. You need to know how your model works mathematically, how that model is
implemented in hardware, and the types of error propagation which come from
both. You'll need to know about feedback loops, and get some feel for how to
understand their stability or instability.

That analysis is best done with the techniques of calculus. For example, how
do you understand a PID controller without knowing calculus?

Now, you can argue that you know what type of field you want to get into and
you know that you'll never need calculus for it. But then you're really asking
about the differences between US-style university, which stresses a broad base
of knowledge, vs. a trade school which emphasizes the study of techniques
relevant to a job.

------
jasonkester
Yes, you use calculus in computer programming. Every day.

Remember back in high school when you'd look at the sky and ask "who will ever
actually use this stuff?" That would be you. You're going to use it, as well
as all that crazy matrix transform stuff they'll teach you next year and the
DiffEq they'll spend the 3 years after that pounding into your head until you
finally get it.

So yes, sorry to break the news, but you're that guy. You've picked one of the
few professions in this world that actually use higher math.

------
impendia
Advanced calculus was the first course where I ran into definitions that I
struggled to understand in a serious way. What does it mean for the interval
[0, 1] to be "compact"? Well, it means exactly what the definition says (e.g.,
every open cover has a finite subcover), but what did that "mean"? This was
the first course where the definitions were pushed beyond the boundary of my
intuition.

Seems like a way of thinking that would be useful for computer engineering, or
damn near anything else.

------
namank
What everyone said. And you'll need it in fourth year no matter what area you
pick to specialize in.

DSP is all calc Control Systems too As our circuits Graphics (more so CS
but...) Embedded Systems - you'll need the rigour math provides. And if you do
anything that hasn't been done before, you'll be reading a lot of papers. Most
formalized concepts and implementations need math to be explained. Same for
Computer Architecture

For that matter, most other options also require advanced calc - one area that
comes to mind is management science.

------
ww520
There are two things an education gives you: knowledge and ability. Math
enhances your ability - problem solving, analytic, composing complex things
from primitives, decomposing complexity into simpler forms, abstraction, etc.
Math gives you a better mind.

------
w1kke
Calculus is in your curriculum to train your way of thought. Namely to improve
your analytical skills and your ability to use abstract ways to formulate
problems. You will need that plenty in real time programming.

~~~
tonyarkles
I absolutely agree. We didn't have a Computer Engineering programme when I
went through school, instead I ended up taking a 4-year Electrical Engineering
programme and a special "take all of the Computer Science credits of a 4 year
degree, without all of the Arts electives" programme on top of it (5 years
total, by taking a ridiculous number of classes). Now I'm just wrapping up an
M.Sc. programme in Computer Science.

Because of the combined programme, I ended up taking 4 calculus classes and a
linear algebra class. Additionally, there were some others that were thinly
veiled statistics classes (digital communication = gaussian statistics). Add
in some signal processing (signals & systems, DSP I, DSP II), an introductory
logic course (from computer science), and two algorithms courses.

Do I use all of these in my day-to-day work? No. I'm mostly doing web and
mobile apps these days (fun, good money, very low probability of killing
anyone). Do the concepts I learned through both programmes influence my
thought patterns every day? Absolutely! Do I get to randomly pull some of this
stuff out of my hat and apply them? Yes, and it amazes people.

Day-to-day, I probably use the linear algebra and algorithms stuff most
frequently (the guys down the hall are doing games programming and sometimes
ask me questions). Next up is probably numerical methods stuff, but that's
mostly because of a cool project we did on contract a few months ago (non-
linear least squares, mmmmm). I occasionally get to use the signal processing
stuff, we did an audio-related project a few months ago, and more recently I
wrote a simple high-pass filter so that we could detect when someone was
shaking their iOS device _quickly_ :D.

Really, there's two important reasons to take all of this stuff: it definitely
shapes your thought process, and it's very handy to have this stuff in your
toolbox (you never know when you'll need it).

~~~
belial
What an intelligent reply! I'm interested in knowing what particular book
would you recommend for someone who is a Computer Science graduate and
planning to enhance his mathematical skills in linear algebra? If there is
more than one, I'll be glad to get them all... So, any suggestions?

------
desushil
Thanks guys for the comments. Really helped me think.

------
aberatiu
Kinda' spoils your appetite to learn, doesn't it? :)

~~~
desushil
Yea, that's what I am feeling now. :(

