26
$\begingroup$

I'm a freshman in university and I'm studying Computer science and engineering. This will be my second year of studying. We don't have Calculus as a mandatory class but I can take it from elective classes.

More senior students are telling me calculus is a very hard class and I shouldn't take it. Should I take easier classes just to pass? Or should I take it anyway even if I'm really bad at math but enjoy math a lot?

Is calculus necessary for my future as a student and would it help me in data science or AI? That's what I'm really interested in and I want to work for either of them. Would Calculus make my education easier in the future and in my work or should I just take something just to pass? In my next semesters, I want to take just AI and DS classes (Data mining, Data Science, Mechanical Learning, etc).

Thanks for your time reading and answering my question.

$\endgroup$
12
  • 11
    $\begingroup$ May be more suitable for Mathematics Educators. My opinion is that while not necessary (you can clearly opt not to take it), calculus is certainly very applicable, and can help you think about certain problems. $\endgroup$ Aug 10, 2019 at 23:19
  • 2
    $\begingroup$ initially, no because the low level courses are taught without the theory in mind (multivar calc and complex analysis). but if you want to do research you do need multivariable calculus or complex analysis which require calculus I as prerequisites. Calc I may not even be applied directly but the concepts are anyways. $\endgroup$
    – user29418
    Aug 10, 2019 at 23:20
  • 3
    $\begingroup$ If you want to do AI, calculus is absolutely required. It's also important for data science, because without calculus you won't understand what machine learning algorithms are doing under the hood. Also Calculus is a delightful subject. $\endgroup$
    – littleO
    Aug 10, 2019 at 23:39
  • 3
    $\begingroup$ "More senior students are telling me calculus is a very hard class and I shouldn't take it" -- I would be surprised if those are computer science and engineering students with an interest in data science and AI. Don't let the questionable opinions of the math phobic dissuade you from learning something which in the grand scheme of things is not particularly hard. $\endgroup$ Aug 11, 2019 at 13:17
  • 3
    $\begingroup$ Don't let anyone convince you that calculus is "hard"... Millions of people have learned how to use it. It may be true that an instructor arranges that their course in calculus is taught in a brutal/difficult fashion, and is graded harshly. That's a very different thing! Even if you feel that you're only manipulating discrete entities, the amazing fact seems to be that continuous approximations are sometimes much, much easier to manipulate by human beings... ergo, calculus. $\endgroup$ Aug 11, 2019 at 21:11

9 Answers 9

37
$\begingroup$

A software engineer probably does not need to study calculus, and it is less likely to be useful than graph theory, elementary logic, study of algorithms, etc. Of course, if you are implementing algorithms for use in science and engineering, calculus and numerical methods for approximating calculus operations will show up all of the time.

AI, on the other hand, is all about calculus (despite the best attempts of the machine learning community to "rebrand" concepts like numerical optimization, the chain rule, gradient descent, etc.) It's hard for me to imagine a successful data analyst or AI researcher who doesn't know at least the basics of calculus.

EDIT: In response to the answer suggesting you do not need calculus to be a data scientist at a company like Google, consider this blog post from a Googler with advice on the job search:

Math like linear algebra and calculus are more or less expected of anyone we’d hire as a data scientist

$\endgroup$
2
  • $\begingroup$ +1. For general Computer science, Linear Algebra is probably enough. For Data Science, you'll want both Calculus and Linear Algebra -- though Linear Algebra is more important if you can only take one. $\endgroup$
    – Wayne
    Aug 11, 2019 at 12:39
  • 2
    $\begingroup$ @Wayne Linear algebra without calculus is like decaffeinated coffee - all the best bits have been removed. The bottom line is, if you choose not to learn calculus, you have shut yourself out from a lot of employment opportunities for the next 40 or 50 years after you graduate - and nobody knows what will turn out to be the hot topics in CS in that timescale! $\endgroup$
    – alephzero
    Aug 11, 2019 at 18:23
21
$\begingroup$

Calculus is a fundamental mathematical science - Learn it to broaden your mind and not necessarily to be graded at.it. It is fundamental for scientific computing. Programming in scientific filed specially engineering require background. I am surprised that you are studying engineering without calculus!!!

$\endgroup$
6
$\begingroup$

I’m a CS student myself so I can relate to what you’re asking. First of all, it really matters what branch of CS you’d like to pursue. For example, if you want to do cyber security(more specifically, cryptography), you will definitely need to know a lot of number theory. In your case, you’re interested in AI and data science but that’s still a bit vague; most people who’d like to do AI/data science, don’t really care about what’s going “under the hood”(which is not really that bad) and use libraries such as Pytorch, Tensor Flow, etc(but note that these people aren’t just AI enthusiastics; many of them work for big companies and are rather successful in their respective field). But there are people that are trying to make new, cutting-edge algorithms and write papers and in that case, you definitely will need more than just high school level math(university level calculus, linear algebra and statistics mostly). So if you are one of the former, high school level calculus, some university-level linear algebra and statistics(first year) would suffice. But if you’re one of the latter, you will need a lot more than just high school calculus and basic university linear algebra and statistics.

To sum it up, most people who do AI(again, not just enthusiastics; people who work for Google, Facebook, etc) do not always understand what’s going on in a library/module. The people who write these algorithms and papers do that. But if you have the time, try learning calculus, linear algebra and statistics so you’ll get a better understanding of what’s going on and maybe even you can make new algorithms that change the AI industry:)

EDIT

I think some people mistook what I said about some people not knowing how something works in AI: Does every successful data scientist know how regression works? Of course they do! How and why batch gradient descent works? 100%(you need calculus for these)! But do they all also know how restricted boltzman machine works? Probably not. Do they all understand VBEM? Of course not! The point is, I didn’t mean that people working for Google don’t know calculus or how an algorithm such as deep neural nets or NLP works; I just meant that you don’t need to be as good as most math students at calculus. Good luck!

$\endgroup$
3
  • $\begingroup$ It's funny that in case of AI, your answer seems like opposite of the other answer provided, in particular when you read his second paragraph. $\endgroup$
    – imranfat
    Aug 10, 2019 at 23:46
  • $\begingroup$ @imranfat I actually agree with Borna that many users of libraries like TensorFlow do not fully understand (and do not need to fully understand) what they are doing under the hood. But even if you are not a research-level AI specialist, some basic understanding of how e.g. back-propagation works is expected. $\endgroup$
    – user7530
    Aug 10, 2019 at 23:50
  • 2
    $\begingroup$ @user7530. I see. My answer is in reference to one of my family member who is pursuing a PhD in AI, and he talks about Calculus and Linear Algebra ALL THE TIME. I am just a math dude, but I can see AI alive and well when watching the video clip "Paranoia" by the Art of Noise. Lots of Linear Algebra going on over there as well (Max Headroom), and that was in 1986! $\endgroup$
    – imranfat
    Aug 10, 2019 at 23:54
2
$\begingroup$

Mathematics needed in Computer Science (Graph theory, Boolean algebra, Number theory) Vs Mathematics for other traditional Engineering disciplines is usually contrasted as Discrete Vs Continuous mathematics.

That is a correct, best, and shortest description of the contrast. So one can find people who have not yet learnt any serious calculus excelling in Programming and in software. This depends on the nature of applications one wants to handle as a software professional. If you want to be in software working for modelling financial markets or sending rockets to space Calculus is the way.

(Self-Promotion): I have written an article in a Science Education Journal on this aspect analyzing what aspect makes it to work in some application domain and fail in another. Here is the link

$\endgroup$
2
$\begingroup$

Calculus (and analysis) is actually far more useful in computer science than one may think. (Also: computer science $\neq$ programming.)

I need not mention that machine learning (especially learning theory) is all about analysis, probability theory and topology (usually on Euclidean spaces), all of which require calculus. Information theory requires knowledge of measure-theoretic probability theory. Robotics requires calculus for movement planning, etc. Computer graphics require a lot of analysis and even some knowledge of differential geometry, which could not be studies without a solid knowledge of analysis.

Even in fields that seem unrelated to analysis, it can still be useful. Let's use my field of research, programming languages & logic, as an example.

Infinite-precision computation, for example, uses many important concepts in real analysis. Note the fact that all computable functions on $\mathbb{R}$ are continuous. Using this insight, problems about infinite-precision computation can easily be transformed into problems about properties of functions on and the topological properties of the Euclidean spaces $\mathbb{R}^n$ (see, e.g. this talk and this paper). The paper was published in Logic in Computer Science 2018, which has little to do with analysis!

Of course, many other related fields of research require knowledge about analysis, for example the design and semantics probabilistic programming languages, which requires knowledge of measure theory. Not to mention that studying calculus and analysis is quite fundamental in building up mathematical maturity that is required for advanced mathematical topics required for computer science, and analysis can be an important pathway to more advanced topics of practical value in computer science, such as probability theory and topology. (You can study topology without real analysis, albeit that makes it much harder. You definitely cannot study probability theory without calculus.)

$\endgroup$
2
$\begingroup$

It depends what you mean by calculus. Do you need to know basic differentiation/integration? Definitely, I don't know how you could take a class such as digital signal processing (which I assume would be part of a CS and engineering degree) without that. Do you need to learn loads of methods for solving tricky integrals/differential equations, or do a rigorous course in real analysis? No, unless you want to specialise in related areas.

$\endgroup$
1
$\begingroup$

The short answer is that it really depends what level of calculus you already have and what field of CS you're interested in. If you know the fundamental theorem, common integral/differential identities, the chain rule, product rule, and so on (basically, simple high school calculus), you've got enough calculus for CS in general, but for some parts of AI you'll want more, and in some application domains (anything involving control theory in the EE sense, quantitive finance, all sorts of heavy numerical engineering-related SE work) it is likely to be useful.

I've probably regretted not studying more formal algebra, graph theory, number theory, etc. more often than I've used university-level calculus, but most universities seem to demand it for CS students.

You'll need a whole load of statistics and probability (Bayes's Theorem and so on) for AI but you'll probably cover that in a CS-coded course.

$\endgroup$
0
$\begingroup$

Take a look a the degree requirements for a CS at your school. In addition to the classes that deal with CS, there are classes that have nothing to do with the field, but they are still required for your degree.

It's certainly true that some of these courses help ensure that you're intelligent enough overall for working in a modern economy, but much of the justification is that it makes you well-rounded (whatever that is). In my case I have classes in German, sociology, public speaking, biology, environmental science, history, and what-not, none of which contribute to what I do as a professional developer (except perhaps to give me something to talk about at lunch that isn't work-related).

So given that there are courses that are not necessary at all to be a good software developer, and yet are still required for the degree, then it stands to reason that anything which is not required must be entirely superfluous.

In the case of calculus, it is certainly nice to know. Integral calculus, in particular, requires a good deal of imagination, which is definitely a plus when solving problems in any field.

$\endgroup$
0
$\begingroup$

Computer science is not programming. Complexity theory and algorithm analysis are unthinkable without analysis. Look up the "master theorem" of complexity theory and a few examples of its application. Apart from algorithmic analysis, a lot of programming tasks revolve about a problem space described with mathematical analysis. AI is determined by methods like the simplex theorem, gradient descent, and things like neural networks with learning dynamics described by differential equations. Recognition tasks are done using theories of neural fields and their dynamics described, for example, with the Amari field equations.

If you decide to forget about analysis, you close a whole lot of doors in computer science for you, and even a non-trivial number of doors for programming jobs that require a bit of problem analysis and algorithmic planning.

$\endgroup$

Not the answer you're looking for? Browse other questions tagged .