top | item 2792610

Why computer engineering students need to learn advanced calculus?

7 points| _pcpe | 14 years ago | reply

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?

11 comments

order
[+] dalke|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
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|14 years ago|reply
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).

[+] _pcpe|14 years ago|reply
Thanks guys for the comments. Really helped me think.
[+] aberatiu|14 years ago|reply
Kinda' spoils your appetite to learn, doesn't it? :)
[+] _pcpe|14 years ago|reply
Yea, that's what I am feeling now. :(