<p>We actually used integration to derive big-O complexity in an upper-level course on complexity theory. I remember being quite impressed at the time, because no, I <em>hadn't</em> used it in any of my prior CS classes. Unfortunately, I don't remember the details -- it's been a very long time.</p>

<p>If I'd gone into modeling and simulation, or if I'd stuck with graphics, I'm quite sure I would have used it more.</p>

CC BY-SA 4.0
2019-04-30T16:06:34.370Z
2019-04-30T16:06:34.370Z
jeffB
<p>During my CS course, I developed the rather cynical theory that the CS faculty were using the Math faculty to fill out their curriculum. It saved them time and effort and so it was that we taught some really hairy math which I can't imagine ever being of use to me. 3D integration anyone? </p>

<p>If I ever were to be working on a project that needed such things, I'd expect a subject matter expert to be providing the requirements, just as I'd expect a botanist to be writing the specification for controlling an asparagus greenhouse. Of course some math is valuable, but I think it lingers in CS just because it was often the mathematics department that originally had to teach computing to undergraduates.</p>

CC BY-SA 4.0
2019-04-29T23:37:05.543Z
As a working developer who was assigned a task that required ML techniques to do well in a shop where the data scientists were all busy with more directly revenue-producing tasks, I wouldn't suggest betting on domain-expert availability when those domain experts are more specialized / harder-to-come-by than you. And, of course, having that expertise entitles you to *become* one of those domain experts, with the extra job-market pull that implies.
Charles Duffy
CC BY-SA 4.0
2019-04-28T19:03:23.203Z
2019-04-28T19:03:23.203Z
Wildbill
<p>Calculus is a hard and rigorous sequence of courses amounting to 12 to 15 semester credits. It is readily available in most any college so it was easy to include in the requirements in the 60s and 70s which established momentum for it. Taking it you learn skills of organization and time management as much than anything else. You learn how to think and absorb information at lightning speed. If you can learn Calculus then the similarity to what you need for computer science will very likely carry over. These skills are useful for a programmer.</p>

<p>I speak of my own experience taking Calculus while studying Computer Science at the university.</p>

CC BY-SA 4.0
2019-04-29T03:07:28.707Z
2019-12-17T04:04:53.360Z
2019-12-17T04:04:53.360Z
Galaxy
<p>As Computer Science students, you should know the fundamentals of university mathematics, for the further development of your own skills.</p>

<p>I believe that all science-oriented persons must study mathematics. For one thing, that study helps you to learn both of your subjects. And fundamentally, philosophically, I don't think that the two subjects are divided. Which is mathematics, and which is science? They are of a piece, essentially—they form an undivided unity.</p>

CC BY-SA 4.0
2019-04-28T03:45:05.107Z
2019-05-03T17:15:48.870Z
2019-05-03T17:15:48.870Z
Lee
<p>It's certainly of little use in CS fields which centre on databases, OSes, general PC applications, and anything like that.</p>

<p>It's somewhat important in CS fields relating to data transmission. Whilst this is mostly centred on OSI layers and the like, there is theoretical work by Nyquist and Shannon which underpins it, and the theory is ongoing.</p>

<p>However calculus and extensions from it are critical for a number of other major CS areas. Off the top of my head:</p>

<ul>
<li>Digital signal processing for audio</li>
<li>Digital signal processing for graphics</li>
<li>Computer modelling of processes</li>
<li>Optimisation of processes</li>
<li>CGI</li>
<li>Games with objects moving (most obviously in 3 dimensions, but even working out position changes for a varying speed in 1 dimension needs calculus)</li>
<li>Computer vision</li>
<li>Electronic control systems for anything that moves (cars, planes, missiles, machinery, ...)</li>
<li>Some forms of data compression, especially lossy data/audio compression</li>
</ul>

<p>All of these either use calculus directly, or use further maths which is derived from calculus.</p>

CC BY-SA 4.0
2019-04-28T21:09:08.970Z
This is all true.  Plus, things change in the industry.  A different answerer here says she never used linear algebra.  Boy is that changing now in the AI/ML revolution. Most of number theory seemed pretty useless to working programmers. Until RSA appeared and remade crypto. Plus, I didn't study category theory as a mathematics major in the 70's.  Don't even remember it being offered.  But given my strong interest in programming languages and software engineering I sure _now_ wish I had. In the future there may be _more_ uses for calculus by programmers than you've listed already.
davidbak
CC BY-SA 4.0
2019-04-29T08:52:07.780Z
I'm not an educator, but I am a CS major. What I've found is that you might not need calculus just for "general CS tasks", such as programming, software design, etc. But you absolutely DO need it in many cases when the company you're working for requires you to build software that revolves around calculations. It's far easier to do so if you do understand yourself what the math is supposed to look like, instead of trying to just copy whatever the engineers/math people tell you to.
tfrascaroli
CC BY-SA 4.0
2019-04-29T10:54:49.980Z
@tfrascaroli Indeed.  I spent roughly 15 years in embedded software engineering having never needed anything more complicated than a simple 1st-order filter.  Then I started my current job.  Over the last few years (and still on the to-do list) are filter design and implementation in fixed-point FPGA code, multi-stage PID control for position and velocity (with acceleration potentially in the mix later), feedforward trajectory shaping, and multi-axis cubic-spline position linearisation.  I've used more maths in the last 5 years than in the entire rest of my career!
Graham
CC BY-SA 4.0
2019-04-29T11:01:51.400Z
@tfrascaroli ... What just occurred to me too is that when I was learning this stuff at uni, they never made it seem relevant.  I actually had a conversation at uni with the engineering department head where he said "This is not supposed to be a practical course.  We're teaching you what you think you should know, not what will help you in your job." Of course he was kind of right, but it was also an epic fail.  Engineers are hands-on people, and if you can't show us an application then it's not likely to stick.  This does lead to the OP's problem of finding relevance, if your teachers can't.
Graham
CC BY-SA 4.0
2019-04-29T12:36:18.320Z
@Graham That is the problem, yes, not that calculus is somehow irrelevant. That, and teachers who don't even know themselves the practical applications of what they are teaching. They (mostly in my case) are mathematicians who know nothing about application and programming. I'm not saying they ought to, they are theory-people. That's precisely not the kind of teachers you need in CS.
tfrascaroli
CC BY-SA 4.0
2019-04-29T17:19:31.503Z
@tfrascaroli Precisely.  My combinatorics class was exactly like that.  All of the examples were like, "If Bob can't stand next to Steve, how many ways are there to arrange 10 people for a photo?"  For the entire semester, my thought was, "Who cares?!  Just line them up, separate the fighters, and take the picture already!"  Then a substitute CS professor during dead week finally made it click.  It's not about lining people up for a photo; it's about calculation effort for a given algorithm.  Seems like the departments need to talk to each other a little better.
AaronD
CC BY-SA 4.0
2019-04-30T08:26:58.863Z
The difficult bit is not in changing the educators, but getting the students to understand: _If you know about something, then you may apply it, but if you're ignorant of the concept, you can't._
D Duck
CC BY-SA 4.0
2019-04-30T10:10:09.093Z
@DDuck If educators can't explain the relevance of a concept then either they don't understand the concept or they don't understand how to educate. For school teachers, it's often the former. For university lecturers, my experience is that the vast majority couldn't teach a child to tie their shoelaces. Either way, if students are still ignorant of the concept after taking the class, the educator has failed abjectly and it's the educator who needs to change.
Graham
CC BY-SA 4.0
2019-04-30T19:50:01.957Z
@DDuck That's not my experience at all.  When I'm tutoring, if my student doesn't understand the application of what they're learning, it's because I haven't taken the time to understand how it applies to them.  The same was true at the university level, especially for CS and EE students, where they are extremely application-oriented and could care less about theory that will never apply to them.
Kristen Hammack
CC BY-SA 4.0
2019-04-30T20:19:15.907Z
@Graham: It's an important general intellectual skill to be able to take something you have learned in one context and recognize *by yourself* its relevance in a different context.  (If it wasn't for this skill, humanity would never figure out anything it hadn't already known.)  The point of math classes is to give you a chance to practice this skill - because math is precisely the discipline of taking facts out of context so they can be generalized.  This begins with 2+2=4, where we generalize adding two apples to two apples and walking two miles followed by walking two miles.
Alexander Woo
CC BY-SA 4.0
2019-04-30T22:11:12.587Z
@AlexanderWoo That's true enough, but you've given a good example of how critically important it is to have the concept taught in at least one recognisable context. You can only generalise a concept you already understand. The idea that you can teach out of context and then parachute in the various contexts has long been proved to not work. Students who do learn, learn *in spite of* this so-called "teaching", and always by finding themselves some practical application which ties the concepts to a context.
Graham
CC BY-SA 4.0
2019-04-30T23:28:59.367Z
@Graham: I find that I *cannot* learn a concept in the context of an application, because any application worthy of the name inevitably has many distracting details which obscure the concept.  Also, in the context of an application, it's very hard to tell what it is in the application makes the concept not apply perfectly, so you never get the pure form, only an approximation.  I can *only* understand a concept completely in a toy situation.  But, then again, I'm a pure mathematician.
Alexander Woo
CC BY-SA 4.0
2019-04-30T23:50:31.857Z
@Graham: I should add - back when I worked in technology consulting, it was precisely the people who could not learn in an abstract setting who could not jump into a project and contribute on day 1 - they needed to spend a month learning the whole context of the project and the technologies used before even doing a relatively independent task.  Given that the projects might only be a month or two long, people like that were mostly useless - and tended not to stay with the company.
Alexander Woo
CC BY-SA 4.0
2019-04-27T22:35:24.040Z
2019-04-28T02:13:10.510Z
2019-04-28T02:13:10.510Z
Graham
<p>There are several answers:</p>

<h3>Answer 1: Not all CS programs</h3>

<p>First, not all CS programs require calculus in order to get a bachelor's degree. The Bachelor of Arts (BA) program at Mills College, where I teach, does not require calculus. Instead, we require two semesters of discrete mathematics, which we consider far more useful to computer scientists, because it (at least the way we teach it) includes:</p>

<ul>
<li>inductive proofs</li>
<li>Boolean logic</li>
<li>proof by contradiction</li>
<li>sets</li>
<li>combinatorics</li>
<li>basic probability</li>
<li>recurrence relations</li>
<li>graph theory</li>
<li>matrices</li>
<li>regular expressions</li>
<li>finite state automata</li>
<li>formal languages</li>
</ul>

<h3>Answer 2: Scientific foundation</h3>

<p>That said, getting a Bachelor of Science (BS) degree from Mills or just about any other school requires calculus as part of general scientific knowledge, along with introductory chemistry, biology, physics, etc., none of which we claim someone will necessarily be useful to a computer scientist. These courses are part of the college-wide BS core, not specified by any individual department. The idea is that anyone holding a BS degree should understand the fundamentals of major scientific fields even if they will never apply them in their careers. (Similarly, most colleges require students to take classes in history, even though they are unlikely to become time travelers.)</p>

<h3>Answer 3: Historical reasons</h3>

<p>Computer science as an academic discipline has not been around that long. Most CS programs started within either Mathematics or Electrical Engineering programs. Both of those fields legitimately require calculus. I went to MIT, where CS was added to the EE department. All CS majors were required to learn both digital and analog electronics, the latter of which requires calculus.</p>

<h3>Personal thoughts</h3>

<p>In my decades as a computer scientist, including in industry, I never used any of what I learned in the required calculus (I, II, and III), linear algebra, or differential equations. That said, they did give me the background to go into computer graphics, electrical engineering, or machine learning, had I later chosen to.</p>

<p>Whether programs <em>should</em> require calculus is another question. </p>

CC BY-SA 4.0
2019-04-27T20:29:03.713Z
I'll note that some of the things you learn in elementary calculus are in your "answer 1" list: sets, logic, especially quantifiers, and proofs. I'll also note that you had a dilemma a while back about something you wanted to do with your advanced students that became more complicated because they hadn't had calculus. I can't recall the details.
Buffy
CC BY-SA 4.0
2019-04-27T20:32:51.073Z
@Buffy I hadn't realized that those topics were taught in calculus. I don't think that's universally true. I believe our students' not having calculus was a problem when we wanted to teach electives on computer graphics and machine learning.
Ellen Spertus
CC BY-SA 4.0
2019-04-27T22:52:58.763Z
This. Definitely this. But to have the flip answer down as well, I'm physicist by training and a programmer by trade and I *do* use my calc/diff-equ fairly regularly. Mostly *not* to do raw numeric work, but to reduce the domain problem to something more suited to programatic solutions (that is, I do analytic solutions to improve the computability of the way we express the domain problem). So there are corners of the programming world where that stuff is useful, but it is certainly not a large part of the wider field.
dmckee --- ex-moderator kitten
CC BY-SA 4.0
2019-04-27T23:58:42.277Z
with the exceotion of inductive proof and matrices those were not in the calculus course I did, but rather (witht ehfurthe exception of probability) were in the "discrete mathematics" course (which was a requirement for CS)
Jasen
CC BY-SA 4.0
2019-04-28T01:37:07.373Z
To add to both of your Answer 2's: (a) Generally one wants to develop mathematical maturity, and calculus is 1 way to do this; (b) Many math curricula are set up quasi-linearly, so that Calc I and Calc II are the first courses you take beyond high school math.  At my university they are prerequisites for Discrete Math and Linear Algebra, not because they are logical prerequisites but because we want some baseline of mathematical maturity for students in those classes.
Kimball
CC BY-SA 4.0
2019-04-29T08:04:14.327Z
As an aside: Don't assume "BA == arts".  Cambridge and Oxford only offer BA degrees to scientists and engineers.
Martin Bonner supports Monica
CC BY-SA 4.0
2019-04-29T13:57:27.560Z
A related anecdote: Solving recursive equations into a closed form, which is part of Discrete Mathematics, is curiously similar to solving a differential equation. My knowledge in Calculus saved me here in university, as I could not figure out for the life of me how to do it. Only after realizing the relation to differential equations and applying the Calculus knowledge from my Physics courses did it finally make sense to me. Math is not an island and neither is CS. There is no such thing as useless knowledge.
ComicSansMS
CC BY-SA 4.0
2019-04-30T10:08:05.923Z
@MartinBonner - BA certainly stands for arts, but art here doesn't mean smearing paint, it means highly skilled work as in "artisan", not "artist".
Davor
CC BY-SA 4.0
2019-04-27T20:22:20.967Z
2019-04-29T23:31:27.820Z
2019-04-29T23:31:27.820Z
Ellen Spertus
<p>This isn't really an answer, but I'd like to say a few things about calculus. I think that what is needed by a CS major from that realm and what is needed by a math major are very different. As such, I think that if calculus is taught to CS majors, and to history majors, for that matter, the needs imply that it might be a different sort of course than that taken by the math majors. </p>

<p>First, not a lot of people who have taken Elementary Calculus (i.e. Calc I, II, and III) actually have much insight into what is really the point. It is easy to get lost in details of differentiation and integration and techniques and such without realizing that it is really a study of the relationship between what happens locally with a function (differential calc) and what happens globally (integral calc). It is all tied together by the Fundamental Theorem. </p>

<p>But even the nature of the derivative is poorly understood for a long while - it took me several years of graduate study in math to really grok it. The derivative you study in Elementary Calculus is really only one specific form of a wide variety of possibilities. The limit used in Elementary Calculus could be replaced by alternatives. The difference quotient in the derivative could be replaced by another "average ratio of change". This would result in a different theory. </p>

<p>However, the standard version of Elementary Calculus (note that I keep writing Elementary") is very good for understanding the behavior of well behaved functions: those that are mostly continuous. But aside from Catastrophe Theory (why do bridges fall down unexpectedly?) it is these continuous functions that form the basis of understanding a lot of the applications of both math and CS. Probability, for example, depends on calculus once you get past counting. </p>

<p>So, elementary calculus is useful for applications of rational thought to the real world - which CS folk do a lot of. </p>

<p>However, the "nice" functions of elementary calculus are pretty boring to a mathematician. The interesting functions are those that are misbehaved - even wildly misbehaved - even wildly misbehaved everywhere. A function that is continuous but nowhere differentiable starts to be interesting. A function that is continuous everywhere but zero, but takes on every real value in every neighborhood of zero starts to be interesting. That is where the calculus sequence is headed for math majors, but it probably isn't very useful for a CS person. How about functions not even defined on the rationals. Is that a <em>yummy</em> or a <em>yucky</em>? </p>

<p>So, a good compromise, if a university can arrange it, is to have a single course that is something like Calculus I with some ideas of the derivative and the integral, but focused on why these are important (rates of growth, etc) rather than just computational details, might be worth designing and offered generally to people interested in becoming widely educated, rather than becoming mathematicians. </p>

<hr>

<p>Note that this precise subject was the basis of my doctoral work: variations on the ideas of calculus and the deeper meaning for the study of functions. </p>

CC BY-SA 4.0
2019-04-30T09:35:51.103Z
A function that is continuous but nowhere differentiable starts to be interesting. -- In HS we had a rule where asking a maths question the teacher couldn't answer got a reward equivalent of passing a test. So, in 3rd year of HS (11th grade) that's exactly what I asked: is there a function which is continuous everywhere but is not differentiable anywhere? And I got my reward! I am still proud thirty years later. So yes, that's interesting and unusual.
chx
CC BY-SA 4.0
2019-12-19T19:39:51.047Z
The issues with understanding applications of Math you describe is a common failure of modern education in my opinion. Without educating students on the nature of Physics, it is nearly impossible for them to grasp where the Math they are being taught is originating. However, if you introduce students to the idea that derivation is used to determine acceleration from velocity, and that integration is used to determine velocity from acceleration; perhaps more students would have a stronger grasp of math fundamentals. Especially, for example, when we examine the math for emitting photons.
Travis J
CC BY-SA 4.0
2019-04-27T20:41:00.733Z
2019-04-27T21:15:30.803Z
2019-04-27T21:15:30.803Z
Buffy
<p>In addition to good answers given, some others.</p>

<ol>
<li><p>Plenty of computer scientists do use calculus, and other important math.</p></li>
<li><p>It's good general mathematical training, which is helpful to learn to think rigorously about other topics later on.</p></li>
<li><p>Building on the above, it's helpful for understanding (not just learning to write down, but understanding) some CS topics that might not directly require calculus, like growth rates of functions and big-O notation.</p></li>
</ol>

<p>You could ask a similar question about, say, doctors and organic chemistry, and i think similar answers would apply.</p>

CC BY-SA 4.0
2019-04-30T11:21:14.533Z
I feel like your second point is the one that isn't being stated enough. Being equipped with more tools than you need gives you more options when you encounter problems, the old adage that "when all you have is a hammer, every problem starts to look like a nail" is decidedly truthy. Ways of thinking are tools too. Being able to look at a problem through the lens of someone who can do calculus may lead you to different solutions than otherwise, and that can only be a good thing.
Ruadhan2300
CC BY-SA 4.0
2019-04-27T23:08:04.700Z
2019-04-27T23:08:04.700Z
usul
<p>While it's true that <em>today</em> not all CS programs require calculus, I believe the answer to this question will change due to trends in Machine Learning and Data Science.</p>

<p>First, many topics in Machine Learning -- such as neural networks -- require knowledge of derivatives to really understand common algorithms like gradient descent.  Familiarity with vector calculus, partial derivatives, etc., is essential for this reason.</p>

<p>Second, with the explosion in big data we need future CS grads to understand data science fundamentals -- including a deeper appreciation of probability and statistics than before, which invariably means more calculus.  Deriving the basic Normal distribution, for example, requires integrals.</p>

<p>Therefore, I believe it is <em>now</em> essential that CS grads learn calculus, even if calculus wasn't always required before.</p>

CC BY-SA 4.0
2019-04-29T07:15:18.340Z
Interesting perspective. I agree that we're entering an era where probability and statistics are increasingly important to applications of computer science. However, let me play devil's advocate for a moment.

Do you really need to be able to compute differentiation to understand _rate of change_, as applied to concepts such as Big O?

Do you really need to be able to compute integrals to understand concepts that involve _area under the curve_ such as normal distributions? I have the gut feeling that these essential concepts can be understood without knowing how to calculate them with calc
Kevin Buffardi
CC BY-SA 4.0
2019-04-29T17:53:45.287Z
@KevinBuffardi sure, you can understand them conceptually without knowing the technical side. But the formalism, frustrating as it is, exists for a reason; and to really understand even the simplest ML--not just neural nets--beyond an introductory article requires at least multivariable calculus and linear algebra. I'm about to graduate with an MS CS. and I still plan to spend the next few years learning more math, because I'll need it to actually understand data science as a practitioner.
Tiercelet
CC BY-SA 4.0
2019-04-29T19:37:13.140Z
@Tiercelet I won't contest that there are areas within CS that require sophisticated understanding of calculus. However, the question is why _all_ computer science majors are _required_ to take calculus. Certainly, it makes sense that you have taken advanced calc classes, but what about a student who isn't getting an MS with a concentration in ML? Is there a compelling reason why every CS student should be required to take calculus, whether they want to be a software developer, UX specialist, security analyst, database administrator, CS theory researcher, etc?
Kevin Buffardi
CC BY-SA 4.0
2019-04-29T21:07:33.873Z
@KevinBuffardi Most university CS programs are intended to be preparation for further specialized or academic work--not just a "learn to code" experience. Distribution reqs exist so those who graduate from a program are exposed to its subfields & have a base for future work in a specialization (if any). Someone specializing in UX or computational theory also has no "need" to take a hardware class... Nor does a UX person have need of math--unless they want to work in mobile device sensors, or analyze UX survey results & A/B testing, or...
Tiercelet
CC BY-SA 4.0
2019-04-29T23:10:10.363Z
@Tiercelet I agree that degree requirements are often designed to demonstrate a breadth in the discipline as well as prepare students to be lifelong learners. Many will go on to specialize in an area that doesn't directly use every single required class. However, I think there are strong arguments that everyone should take a CS Theory class - even if they may never directly use it at their jobs - because the topic is vital to establishing a broad foundation in CS. Same goes for most required classes. However, I honestly can't make the same argument for Calculus. Maybe you can?
Kevin Buffardi
CC BY-SA 4.0
2019-04-29T23:14:45.997Z
Side note: as a former UX consultant (and now a professor), I've actually used _a ton_ of statistics in both roles. However, I would make a similar argument for stat as calc -- they make sense as prereqs for certain electives and can be really useful in some applications, but I can't make as strong an argument for them being fundamental to computer science as I can for Discrete Math (which I _do_ think every BS in CS should require), for example.
Kevin Buffardi
CC BY-SA 4.0
2019-04-28T02:38:47.223Z
2019-04-28T02:38:47.223Z
peekay
<p>Much of the material one learns in school has no direct utility in one's job as a software engineer. Conversely, much of the working knowledge one needs as an industry practitioner is not gained in school. What school is supposed to do is provide some basic knowledge and a basic framework for learning, out of which an individual is going to actively retain a small-ish portion for their day-to-day use on the job. </p>

<p>However, much engineering work is multi-disciplinary, and therefore "surplus" knowledge is not exactly useless: it can provide a useful bridge to other disciplines. Calculus in particular occurs in the math that describes physical processes.</p>

<p>In today's global economy, it is likely that one will switch employers and job specializations multiple times in one's career. At the start of one's career it is impossible to foresee what knowledge is going to come in handy later on. About twenty-five years into my career, I found myself interfacing to domain specialists whose bread and butter are differential equations. When I was in school, studying for a CS degree, I could have taken optional classes to learn about differential equations, but decided not to as I was already struggling with my math workload. So late in my career I came to regret my earlier decision, as it put me at a disadvantage relative to colleagues with a working knowledge of differential equations.</p>

<p>The exact nature and number of math classes required in a CS program may in part be driven by departmental tradition. For example, in the school I attended, the CS program had grown out of the math program in the early 1970s. Therefore, math was heavily emphasized. In fact, as an undergrad I took exactly the same math classes as students in the math program. Out of those, linear algebra turned out to be useful for computer graphics, and numerics turned out to be useful for high-performance computing. Multi-dimensional analysis and statistics I never needed again, but it might have been quite different had my career taken me in a data science direction. </p>

CC BY-SA 4.0
2019-04-30T11:24:20.757Z
If it's useful for physical processes, it may be important for data around physical entities, for example mapping stresses on architecture, or flow of liquids and gases. Simulations are a very important part of a lot of very important fields. There's always a big application for something in my experience. Having the tools to understand something will always broaden your horizons and open up career paths that might remain closed otherwise.
Ruadhan2300
CC BY-SA 4.0
2019-04-27T20:45:48.207Z
2019-04-27T20:45:48.207Z
njuffa
<p>There are many good answers here, but ultimately your question comes down to, "Why does A require X, when my dad was B for many years."</p>

<p>Software engineering is not a field that only seeks out computer scientists.  I work in software engineering right now having graduated CS, but I work along side of other software engineers from various engineering degree programs, math degree programs, and science degree programs. In short, you do not actually need a computer science degree to be a software engineer.</p>

<p>What does this mean about computer scientists? What do they do that is different?</p>

<p>As others have so very well pointed out, there are areas that computer scientists are pioneering. Machine Learning is one example, but look at the other answers for more good ones.  Another area that hasn't been mentioned is computing theory.</p>

<p>In short, a computer scientist major learns calculus, not because it is necessary for software engineering, which does not require a CS degree at all, but because of what Computer Scientists can potentially do: Software pioneering, refinement, and computational theory.</p>

<p>Some of this is academic in nature, some of this is still something you can get a job doing in the commercial sector. My former boss at this company has a Ph. D. in computer science, and I know 2 others who work here that also do, and they handle slightly different work. One is in charge of R&amp;D, another is in charge of developing a brand new system no one has ever conceived of before, and I'm not sure what the other one does.</p>

<p>In short though, if you were looking to get into software development, you are right, you likely do not need Calculus, you also don't need a Computer Science degree. However, if you want to be a top innovator in computing, that's when you want to get that degree.</p>

<p>Edit: An example of a Computer Scientist who is not doing software development with his degree is the one I was able to sit in on for his Graduate Thesis. He was doing microcircuit design using machine learning data models, and had developed a 4 bit adder that was smaller than 50x50x50 microns^3. So there are also other fields you can go into with Computer Science.</p>

CC BY-SA 4.0
2019-04-30T01:27:40.477Z
Excellent, well considered answer. Welcome to CSEd!
Ben I.
CC BY-SA 4.0
2019-04-30T00:33:59.377Z
2019-04-30T00:40:33.520Z
2019-04-30T00:40:33.520Z
Chthonic One
<p>Despite more than 30 years of programming professionally I have yet to use calculus for work.  Does that mean it was a waste?  No--my observation from school is that you only truly learn the material that you use in future classes.  Calculus is the step above differential equations--and I have used that knowledge professionally more than once.</p>

<p>(And note that I have used the results of calculus in a program I whipped up to solve a problem.  I looked it up, though--my calculus is far too rusty to have handled the integration involved.  I have also had the experience of looking at a bit of code and being utterly unable to understand what a key equation was doing.  In hindsight I realize it was the integration of stuff I understood but that was before I had taken calculus, I couldn't see the relationship.)</p>

CC BY-SA 4.0
2019-04-29T03:56:47.300Z
My experience echos yours.  My CS degree was 40% mathematics, I have *never* used calculus since.  Linear Algebra is the complete opposite though.
Kingsley
CC BY-SA 4.0
2019-04-28T21:14:41.273Z
2019-04-28T21:14:41.273Z
Loren Pechtel
<p>Given all the answers, I'm kind of surprised I didn't see anyone mention this, but...</p>

<p>Back in the 80's when I was taking CS (and likely somewhat in the vicinity of when your father took it), Accredited Computer Science was still fairly new as a degree. Very few colleges offered it as its own stand-alone school. For most, it was a department in either their School of Engineering, or their School of Mathematics.</p>

<p>Schools all have their own graduation requirements, but <strong>both of those types of schools are quite likely to require calculus.</strong> In my case, it was under the School of Engineering, so I was required to not only take 3 semesters of Calculus, but also two semesters of Chemistry. </p>

<p>Now Chemistry is a <em>Noble</em> subject (pun intended), worthy of study, but probably not vital to a typical CS degree holder. I certainly didn't learn much of it from that huge lecture class where the instructor spoke with badly accented Norwegian, the TA's in incomprehensible Chinenglish, and a 17% on tests was a passing grade.</p>

<p>Degree graduation requirements are just something you have to deal with as a College student. We were also required to take 2 semesters of English (which served me much better in my career), and 4 other semesters of Liberal Arts classes, all of which were wonderful experiences I'm glad I had, because I took stuff I was really interested in.</p>

<p>Now that being said, you don't know where your career is going to lead. You need a good survey of knowledge on damn near everything, and this goes double for math. 10 years after graduation I found myself writing software for flight simulators, where the communications protocol we used called out using <a href="https://en.wikipedia.org/wiki/Quaternion" rel="noreferrer">quaternions</a> to calculate the position and rotation of other aircraft in between updates. This was pre-Web, so I found myself driving all over town looking for a book telling me how to do that. </p>

CC BY-SA 4.0
2019-04-29T13:31:37.550Z
2019-04-29T13:44:05.093Z
2019-04-29T13:44:05.093Z
T.E.D.
<ol>
<li><p>Calculus requires several semesters of concerted effort to master. It is not as easily picked up on the job, unlike learning a new computer language (I have programmed in 28 professionally) or library. College should teach key building blocks not easily acquired in another setting.</p></li>
<li><p>I didn't need that calculus until I got a job dealing with insurance research, such as modeling the effect of hurricanes on a real estate policy. Insurance work is loaded with math, including calc. Try numerical integration in 1,000 dimensions without it!</p></li>
<li><p>If you want to do programming related to financial instruments (like I did at another job, working at CRD on their investment management system), calculus is heavily involved.</p></li>
<li><p>If you want to work in scientific computing (like I currently do at Shell, the oil major) calculus comes in handy. </p></li>
<li><p>If you want to work in optimization and operations research (like I did at EF Education, in the Travel industry, when optimizing the consolidation of tours based on matching parameters), it also comes in handy.</p></li>
<li><p>Any programming that requires obtaining expert domain knowledge outside of simple website design or business database programming and report prep is likely to bring you into contact with problems that require advanced math. If you don't have that knowledge, you get stuck writing the CRUD (and there is always loads of CRUD to write). If you do, you get to tackle the fun problems and be the tech lead.</p></li>
</ol>

<p><strong>Bottom Line</strong>: If learning all the new stuff fast and being superproductive at writing and testing lots of commonplace code is your forte, there is a place for you in software. If solving really hard problems and getting recognition and compensation for doing that is what you want.... LEARN CALCULUS!</p>

CC BY-SA 4.0
2019-04-30T17:52:34.840Z
Could you explain what CRUD is?
LuminousNutria
CC BY-SA 4.0
2019-05-01T19:52:14.703Z
@LuminousNutria Create Read Update Delete - standard operations in web applications and databases.
srattigan
CC BY-SA 4.0
2019-04-30T16:16:09.190Z
2019-04-30T16:16:09.190Z
Paul Chernoch
<p><strong>Computer Science is not Software Engineering</strong></p>

<p>This depends on your definitions, of course, and in most common definitions they are very closely related.</p>

<p>But the long and the short of it is, there is a difference between sorting an array (which in many programming languages is about as simple as calling array.sort()), and implementing the underlying logic of the .sort() function.</p>

<p>Software Engineering is more about knowing WHY and WHEN to sort, rather than HOW to sort.  Very often, these lines can get quite blurred - for instance, if engineering a high-performance application, it may be important to understand the underlying algorithm to fine-tune the WHEN, or maybe even write a supporting routine that heuristically chooses from a set of possible sorting algorithms.</p>

<p><strong>Algorithms, and many other HOWs of computers and Computer Science, often require Calculus to understand and research.  These things are commonly much less useful in day-to-day Software Engineering.</strong></p>

<p>Please also see this <a href="https://cs.stackexchange.com/questions/55462/how-when-is-calculus-used-in-computer-science">CS SE question</a> for why calculus is something very useful for the study of Computer Science in general.</p>

CC BY-SA 4.0
2019-04-30T03:16:29.100Z
2019-04-30T03:16:29.100Z
ap55
<p>Calculus is not useless to computer scientists. But it is not very useful either. If the required mathematical fields in CS were ranked, according to usefulness and/or necessary depth, the list would be something like this:</p>

<ol>
<li>Logic</li>
<li>Linear Algebra</li>
<li>Probability Theory</li>
<li>Discrete Mathematics/Abstract Algebra</li>
<li>Numerical Analysis</li>
<li>Number Theory</li>
<li>Complexity Theory</li>
<li>Calculus/Real Analysis</li>
</ol>

<p>You can certainly quibble about the importance order, but that misses the point, the point is that Calculus will always be ranked fairly low. Calculus by its nature concerns itself with the infinite, but computer scientists are mostly interested in finite things. </p>

<p>I believe it is taught because of inertia and because universities are slow to adapt their curriculum.</p>

CC BY-SA 4.0
2019-04-29T18:19:07.347Z
2019-04-29T20:35:39.630Z
2019-04-29T20:35:39.630Z
Gaslight Deceive Subvert
<p>A boring fact, a story, and a practical reason from a real-life department meeting:</p>
<h1>The boring fact</h1>
<p>Com Sci programs are accredited. In the US they like to go by the official group -- the ACM (Association for Computing Machinery). They recommend Calculus in a round-about way. From the <a href="https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf" rel="nofollow noreferrer">2013 ACM curriculum</a>, page 50:</p>
<blockquote>
<p>we believe that a CS program must provide students with a level of
&quot;mathematical maturity.&quot; [...] some programs use calculus requirements
not as a means for domain knowledge, but more as a method for helping
develop such mathematical maturity [...] early in a college-level
education. [...] undergraduate CS students need enough mathematical
maturity to have the basis on which to then build CS-specific
mathematics</p>
</blockquote>
<p>It's saying you need to math-up your freshmen with classes such as: Calculus. End of list.</p>
<h1>The story</h1>
<p>An early maxim was &quot;you can't program what you don't know&quot;. An obvious example: Grace Hopper was a mathematician, and coded math equations. In the 60's, most programmers would be writing accounting software. At that time my midwestern state school had Com Sci students taking required accounting classes (and not only because Des Moines was a hub for Insurance, banking, and direct mailings). Later, as the arms race heated up, there was a national push for rocket-science -- Calc and Physics. We wanted enough coders to aim ballistic missiles at the Rooskies. In the 80's my old school required a year of both, and only recently dropped Physics (now it's a year of any science).</p>
<p>No one thought Accounting or  Calc made you a better programmer. They though they made you better at programming Accounting or Calc.</p>
<h1>The practical reason from a real-life department meeting</h1>
<p>During an 00's curriculum discussion us faculty talked about cutting Calc. We wanted to since our students didn't need it, but we couldn't do it. We talked about moving our Discreet Math class up front, but rejected it. For one thing, it had some coding, but mostly we couldn't teach another huge freshman section. It was enough trouble staying on top of the huge Programming I and II sections. It turns out Calc is special since the Math Dept. is already teaching giant sections of it for the entire Engineering College. Physics was special the same way. We thought about putting Linear Algebra instead of Calc, but it's a small, fast-paced 3rd-year class -- asking the Math Dept. to convert it for 200 1st-years would have been impractical.</p>
<p>So, because of historical reasons, Calc is often the only math class a big group of 1st year students can take. But say your school isn't known for Com Sci and the Dept. gets only a few majors (and exists mostly to teach non-majors). Then it makes sense to have your dozen new majors take Combinatorics right away, or your other ideal 1st math class.</p>

CC BY-SA 4.0
2020-01-02T01:49:03.147Z
2020-05-08T20:43:58.283Z
2020-06-18T08:36:57.023Z
Owen Reynolds
<p>There are some parts of Computer Science that use Calculus. DSP is an obvious one. Linear Regression, which is an ML technique, uses gradient descent to minimize a cost function. I learned about gradient descent in Multi-Variable Calculus (Calc 3). Newtonian physics obviously involve some calculus, and are in turn used in things like physics engines. </p>

<p>In general, I think CS programs should give students a decent math foundation, since it is an engineering discipline, and is entangled with many other sciences. When solving more science-y problems, mathematics are bound to come up. Calculus is a pretty fundamental area of math, whose absence seems like a serious gap to me. </p>

CC BY-SA 4.0
2019-05-01T20:28:13.737Z
2019-05-01T20:28:13.737Z
Sava B.
<p>I am curious why computer-science majors have to learn calculus to receive their bachelor’s degrees. My father worked as a software engineer for twenty years and never used it. It seems to have little more value in programming than other forms of mathematics. What is it about calculus that makes it a requirement for computer-science majors? Is it just that it's a tradition in STEM fields?</p>

CC BY-SA 4.0
2019-04-28T06:19:18.820Z
Why don't they learn it in high school? I did. The only mathematics I did in CS was the basics of twos-complement and floating-point, and a semester of numerical programming. But then it was 48 years ago ...
user207421
CC BY-SA 4.0
2019-04-28T08:38:54.617Z
See also: [How/when is calculus used in Computer Science?](https://cs.stackexchange.com/questions/55462/how-when-is-calculus-used-in-computer-science) on ComputerScience.SE
angussidney
CC BY-SA 4.0
2019-04-28T14:31:55.403Z
Back in the early 1980s, I had to take Calculus for CS. Thanks to SAT, etc. I got into an advanced (very small class) Calculus. I had no idea what was going on. Those who did know what was going on got As. Those who didn't, but tried (me), got Bs. After 3 semesters I switched to "regular" Calculus - and ended up with a C. Now, I hardly remember **anything** from Calculus as I haven't needed to use it at all in > 35 years. Algebra, logic - absolutely. Calculus - not one drop.
manassehkatz-Moving 2 Codidact
CC BY-SA 4.0
2019-04-28T17:40:27.100Z
I don't think that "will I use it" is a good metric to evaluate whether you should take something.  Don't believe me? Talk to all those people who think that knowing states and capitals is important.
mackycheese21
CC BY-SA 4.0
2019-04-28T18:18:21.920Z
Since an answer has already been accepted, I'll put my response here.  The obvious answer is you *may* need calculus; it depends where you end up working *after* you get your degree.  Employers want to hire grads who know their stuff; and if a given employer wants CS grads who know calculus, they want to be able to find them.  (I myself took lots of math courses and some intro courses in civil engineering, accounting, and so on because I wanted to draw on that knowledge if one of my future employers needed it.)  But another answer ...
Jennifer
CC BY-SA 4.0
2019-04-28T18:21:50.877Z
... is that calculus acts as a *barrier to entry* so not every Tom, Dick, and Harry gets that degree -- and so keeps salaries high.  (I'm not so sure that's true anymore with outsourcing and inverted corporations.)  I also went back to school and started on a business degree -- and I had to take statistics.  I don't see the relevance there, but again it's a barrier to entry.  (Never did finish that business degree, but so what?)
Jennifer
CC BY-SA 4.0
2019-04-29T04:15:09.607Z
@Jennifer Please don't use the comments for answers. Just because there's an accepted answer doesn't mean that there can't be other highly voted answers, and personally I take votes more seriously than the checkmark anyways since they represent the opinions of more people. Would you mind copying your comments to an answer?
thesecretmaster
CC BY-SA 4.0
2019-04-30T01:00:28.600Z
When I was at university many moons ago, the joke was the calculus was meant to thin the field and make more Management Information Systems grads. The computer engineering students said the same thing about calc 4 and diff eq to make more computer science grads.
UnhandledExcepSean
CC BY-SA 4.0
2019-04-30T16:49:52.720Z
So they don't have to repeat the mistakes of other majors who don't learn it. https://fliptomato.wordpress.com/2007/03/19/medical-researcher-discovers-integration-gets-75-citations/
rumtscho
<mathematics>
Why do computer-science majors learn calculus?
# Why do computer-science majors learn calculus?

(Asked by: username_0 on 2019-04-27)

I am curious why computer-science majors have to learn calculus to receive their bachelor’s degrees. My father worked as a software engineer for twenty years and never used it. It seems to have little more value in programming than other forms of mathematics. What is it about calculus that makes it a requirement for computer-science majors? Is it just that it's a tradition in STEM fields?

**Tags:** mathematics

> **Comments:**
> **username_1**: Why don't they learn it in high school? I did. The only mathematics I did in CS was the basics of twos-complement and floating-point, and a semester of numerical programming. But then it was 48 years ago ...  
> **username_2**: See also: [How/when is calculus used in Computer Science?](https://cs.stackexchange.com/questions/55462/how-when-is-calculus-used-in-computer-science) on ComputerScience.SE  
> **username_3**: Back in the early 1980s, I had to take Calculus for CS. Thanks to SAT, etc. I got into an advanced (very small class) Calculus. I had no idea what was going on. Those who did know what was going on got As. Those who didn't, but tried (me), got Bs. After 3 semesters I switched to "regular" Calculus - and ended up with a C. Now, I hardly remember **anything** from Calculus as I haven't needed to use it at all in > 35 years. Algebra, logic - absolutely. Calculus - not one drop.  
> **username_4**: I don't think that "will I use it" is a good metric to evaluate whether you should take something.  Don't believe me? Talk to all those people who think that knowing states and capitals is important.  
> **username_5**: Since an answer has already been accepted, I'll put my response here.  The obvious answer is you *may* need calculus; it depends where you end up working *after* you get your degree.  Employers want to hire grads who know their stuff; and if a given employer wants CS grads who know calculus, they want to be able to find them.  (I myself took lots of math courses and some intro courses in civil engineering, accounting, and so on because I wanted to draw on that knowledge if one of my future employers needed it.)  But another answer ...  
> **username_5**: ... is that calculus acts as a *barrier to entry* so not every Tom, Dick, and Harry gets that degree -- and so keeps salaries high.  (I'm not so sure that's true anymore with outsourcing and inverted corporations.)  I also went back to school and started on a business degree -- and I had to take statistics.  I don't see the relevance there, but again it's a barrier to entry.  (Never did finish that business degree, but so what?)  
> **username_6**: @username_5 Please don't use the comments for answers. Just because there's an accepted answer doesn't mean that there can't be other highly voted answers, and personally I take votes more seriously than the checkmark anyways since they represent the opinions of more people. Would you mind copying your comments to an answer?  
> **username_7**: When I was at university many moons ago, the joke was the calculus was meant to thin the field and make more Management Information Systems grads. The computer engineering students said the same thing about calc 4 and diff eq to make more computer science grads.  
> **username_8**: So they don't have to repeat the mistakes of other majors who don't learn it. https://fliptomato.wordpress.com/2007/03/19/medical-researcher-discovers-integration-gets-75-citations/  

---

## 18 answers

### Answer by username_21 on 2019-04-27. Score: 63 | Accepted answer

There are several answers:

### Answer 1: Not all CS programs

First, not all CS programs require calculus in order to get a bachelor's degree. The Bachelor of Arts (BA) program at Mills College, where I teach, does not require calculus. Instead, we require two semesters of discrete mathematics, which we consider far more useful to computer scientists, because it (at least the way we teach it) includes:

* inductive proofs
* Boolean logic
* proof by contradiction
* sets
* combinatorics
* basic probability
* recurrence relations
* graph theory
* matrices
* regular expressions
* finite state automata
* formal languages

### Answer 2: Scientific foundation

That said, getting a Bachelor of Science (BS) degree from Mills or just about any other school requires calculus as part of general scientific knowledge, along with introductory chemistry, biology, physics, etc., none of which we claim someone will necessarily be useful to a computer scientist. These courses are part of the college-wide BS core, not specified by any individual department. The idea is that anyone holding a BS degree should understand the fundamentals of major scientific fields even if they will never apply them in their careers. (Similarly, most colleges require students to take classes in history, even though they are unlikely to become time travelers.)

### Answer 3: Historical reasons

Computer science as an academic discipline has not been around that long. Most CS programs started within either Mathematics or Electrical Engineering programs. Both of those fields legitimately require calculus. I went to MIT, where CS was added to the EE department. All CS majors were required to learn both digital and analog electronics, the latter of which requires calculus.

### Personal thoughts

In my decades as a computer scientist, including in industry, I never used any of what I learned in the required calculus (I, II, and III), linear algebra, or differential equations. That said, they did give me the background to go into computer graphics, electrical engineering, or machine learning, had I later chosen to.

Whether programs *should* require calculus is another question.

> **Comments:**
> **username_22**: I'll note that some of the things you learn in elementary calculus are in your "answer 1" list: sets, logic, especially quantifiers, and proofs. I'll also note that you had a dilemma a while back about something you wanted to do with your advanced students that became more complicated because they hadn't had calculus. I can't recall the details.  
> **username_21**: @username_22 I hadn't realized that those topics were taught in calculus. I don't think that's universally true. I believe our students' not having calculus was a problem when we wanted to teach electives on computer graphics and machine learning.  
> **username_23**: This. Definitely this. But to have the flip answer down as well, I'm physicist by training and a programmer by trade and I *do* use my calc/diff-equ fairly regularly. Mostly *not* to do raw numeric work, but to reduce the domain problem to something more suited to programatic solutions (that is, I do analytic solutions to improve the computability of the way we express the domain problem). So there are corners of the programming world where that stuff is useful, but it is certainly not a large part of the wider field.  
> **username_24**: with the exceotion of inductive proof and matrices those were not in the calculus course I did, but rather (witht ehfurthe exception of probability) were in the "discrete mathematics" course (which was a requirement for CS)  
> **username_25**: To add to both of your Answer 2's: (a) Generally one wants to develop mathematical maturity, and calculus is 1 way to do this; (b) Many math curricula are set up quasi-linearly, so that Calc I and Calc II are the first courses you take beyond high school math.  At my university they are prerequisites for Discrete Math and Linear Algebra, not because they are logical prerequisites but because we want some baseline of mathematical maturity for students in those classes.  
> **username_26**: As an aside: Don't assume "BA == arts".  Cambridge and Oxford only offer BA degrees to scientists and engineers.  
> **username_27**: A related anecdote: Solving recursive equations into a closed form, which is part of Discrete Mathematics, is curiously similar to solving a differential equation. My knowledge in Calculus saved me here in university, as I could not figure out for the life of me how to do it. Only after realizing the relation to differential equations and applying the Calculus knowledge from my Physics courses did it finally make sense to me. Math is not an island and neither is CS. There is no such thing as useless knowledge.  
> **username_28**: @MartinBonner - BA certainly stands for arts, but art here doesn't mean smearing paint, it means highly skilled work as in "artisan", not "artist".  

---

### Answer by username_14 on 2019-04-27. Score: 51

It's certainly of little use in CS fields which centre on databases, OSes, general PC applications, and anything like that.

It's somewhat important in CS fields relating to data transmission. Whilst this is mostly centred on OSI layers and the like, there is theoretical work by Nyquist and Shannon which underpins it, and the theory is ongoing.

However calculus and extensions from it are critical for a number of other major CS areas. Off the top of my head:

* Digital signal processing for audio
* Digital signal processing for graphics
* Computer modelling of processes
* Optimisation of processes
* CGI
* Games with objects moving (most obviously in 3 dimensions, but even working out position changes for a varying speed in 1 dimension needs calculus)
* Computer vision
* Electronic control systems for anything that moves (cars, planes, missiles, machinery, ...)
* Some forms of data compression, especially lossy data/audio compression

All of these either use calculus directly, or use further maths which is derived from calculus.

> **Comments:**
> **username_15**: This is all true.  Plus, things change in the industry.  A different answerer here says she never used linear algebra.  Boy is that changing now in the AI/ML revolution. Most of number theory seemed pretty useless to working programmers. Until RSA appeared and remade crypto. Plus, I didn't study category theory as a mathematics major in the 70's.  Don't even remember it being offered.  But given my strong interest in programming languages and software engineering I sure _now_ wish I had. In the future there may be _more_ uses for calculus by programmers than you've listed already.  
> **username_16**: I'm not an educator, but I am a CS major. What I've found is that you might not need calculus just for "general CS tasks", such as programming, software design, etc. But you absolutely DO need it in many cases when the company you're working for requires you to build software that revolves around calculations. It's far easier to do so if you do understand yourself what the math is supposed to look like, instead of trying to just copy whatever the engineers/math people tell you to.  
> **username_14**: @username_16 Indeed.  I spent roughly 15 years in embedded software engineering having never needed anything more complicated than a simple 1st-order filter.  Then I started my current job.  Over the last few years (and still on the to-do list) are filter design and implementation in fixed-point FPGA code, multi-stage PID control for position and velocity (with acceleration potentially in the mix later), feedforward trajectory shaping, and multi-axis cubic-spline position linearisation.  I've used more maths in the last 5 years than in the entire rest of my career!  
> **username_14**: @username_16 ... What just occurred to me too is that when I was learning this stuff at uni, they never made it seem relevant.  I actually had a conversation at uni with the engineering department head where he said "This is not supposed to be a practical course.  We're teaching you what you think you should know, not what will help you in your job." Of course he was kind of right, but it was also an epic fail.  Engineers are hands-on people, and if you can't show us an application then it's not likely to stick.  This does lead to the OP's problem of finding relevance, if your teachers can't.  
> **username_16**: @username_14 That is the problem, yes, not that calculus is somehow irrelevant. That, and teachers who don't even know themselves the practical applications of what they are teaching. They (mostly in my case) are mathematicians who know nothing about application and programming. I'm not saying they ought to, they are theory-people. That's precisely not the kind of teachers you need in CS.  
> **username_17**: @username_16 Precisely.  My combinatorics class was exactly like that.  All of the examples were like, "If Bob can't stand next to Steve, how many ways are there to arrange 10 people for a photo?"  For the entire semester, my thought was, "Who cares?!  Just line them up, separate the fighters, and take the picture already!"  Then a substitute CS professor during dead week finally made it click.  It's not about lining people up for a photo; it's about calculation effort for a given algorithm.  Seems like the departments need to talk to each other a little better.  
> **username_18**: The difficult bit is not in changing the educators, but getting the students to understand: _If you know about something, then you may apply it, but if you're ignorant of the concept, you can't._  
> **username_14**: @DDuck If educators can't explain the relevance of a concept then either they don't understand the concept or they don't understand how to educate. For school teachers, it's often the former. For university lecturers, my experience is that the vast majority couldn't teach a child to tie their shoelaces. Either way, if students are still ignorant of the concept after taking the class, the educator has failed abjectly and it's the educator who needs to change.  
> **username_19**: @DDuck That's not my experience at all.  When I'm tutoring, if my student doesn't understand the application of what they're learning, it's because I haven't taken the time to understand how it applies to them.  The same was true at the university level, especially for CS and EE students, where they are extremely application-oriented and could care less about theory that will never apply to them.  
> **username_20**: @username_14: It's an important general intellectual skill to be able to take something you have learned in one context and recognize *by yourself* its relevance in a different context.  (If it wasn't for this skill, humanity would never figure out anything it hadn't already known.)  The point of math classes is to give you a chance to practice this skill - because math is precisely the discipline of taking facts out of context so they can be generalized.  This begins with 2+2=4, where we generalize adding two apples to two apples and walking two miles followed by walking two miles.  
> **username_14**: @AlexanderWoo That's true enough, but you've given a good example of how critically important it is to have the concept taught in at least one recognisable context. You can only generalise a concept you already understand. The idea that you can teach out of context and then parachute in the various contexts has long been proved to not work. Students who do learn, learn *in spite of* this so-called "teaching", and always by finding themselves some practical application which ties the concepts to a context.  
> **username_20**: @username_14: I find that I *cannot* learn a concept in the context of an application, because any application worthy of the name inevitably has many distracting details which obscure the concept.  Also, in the context of an application, it's very hard to tell what it is in the application makes the concept not apply perfectly, so you never get the pure form, only an approximation.  I can *only* understand a concept completely in a toy situation.  But, then again, I'm a pure mathematician.  
> **username_20**: @username_14: I should add - back when I worked in technology consulting, it was precisely the people who could not learn in an abstract setting who could not jump into a project and contribute on day 1 - they needed to spend a month learning the whole context of the project and the technologies used before even doing a relatively independent task.  Given that the projects might only be a month or two long, people like that were mostly useless - and tended not to stay with the company.  

---

### Answer by username_31 on 2019-04-27. Score: 26

In addition to good answers given, some others.

1. Plenty of computer scientists do use calculus, and other important math.
2. It's good general mathematical training, which is helpful to learn to think rigorously about other topics later on.
3. Building on the above, it's helpful for understanding (not just learning to write down, but understanding) some CS topics that might not directly require calculus, like growth rates of functions and big-O notation.

You could ask a similar question about, say, doctors and organic chemistry, and i think similar answers would apply.

> **Comments:**
> **username_32**: I feel like your second point is the one that isn't being stated enough. Being equipped with more tools than you need gives you more options when you encounter problems, the old adage that "when all you have is a hammer, every problem starts to look like a nail" is decidedly truthy. Ways of thinking are tools too. Being able to look at a problem through the lens of someone who can do calculus may lead you to different solutions than otherwise, and that can only be a good thing.  

---

### Answer by username_33 on 2019-04-28. Score: 26

While it's true that *today* not all CS programs require calculus, I believe the answer to this question will change due to trends in Machine Learning and Data Science.

First, many topics in Machine Learning -- such as neural networks -- require knowledge of derivatives to really understand common algorithms like gradient descent. Familiarity with vector calculus, partial derivatives, etc., is essential for this reason.

Second, with the explosion in big data we need future CS grads to understand data science fundamentals -- including a deeper appreciation of probability and statistics than before, which invariably means more calculus. Deriving the basic Normal distribution, for example, requires integrals.

Therefore, I believe it is *now* essential that CS grads learn calculus, even if calculus wasn't always required before.

> **Comments:**
> **username_34**: Interesting perspective. I agree that we're entering an era where probability and statistics are increasingly important to applications of computer science. However, let me play devil's advocate for a moment.  Do you really need to be able to compute differentiation to understand _rate of change_, as applied to concepts such as Big O?  Do you really need to be able to compute integrals to understand concepts that involve _area under the curve_ such as normal distributions? I have the gut feeling that these essential concepts can be understood without knowing how to calculate them with calc  
> **username_35**: @KevinBuffardi sure, you can understand them conceptually without knowing the technical side. But the formalism, frustrating as it is, exists for a reason; and to really understand even the simplest ML--not just neural nets--beyond an introductory article requires at least multivariable calculus and linear algebra. I'm about to graduate with an MS CS. and I still plan to spend the next few years learning more math, because I'll need it to actually understand data science as a practitioner.  
> **username_34**: @username_35 I won't contest that there are areas within CS that require sophisticated understanding of calculus. However, the question is why _all_ computer science majors are _required_ to take calculus. Certainly, it makes sense that you have taken advanced calc classes, but what about a student who isn't getting an MS with a concentration in ML? Is there a compelling reason why every CS student should be required to take calculus, whether they want to be a software developer, UX specialist, security analyst, database administrator, CS theory researcher, etc?  
> **username_35**: @KevinBuffardi Most university CS programs are intended to be preparation for further specialized or academic work--not just a "learn to code" experience. Distribution reqs exist so those who graduate from a program are exposed to its subfields & have a base for future work in a specialization (if any). Someone specializing in UX or computational theory also has no "need" to take a hardware class... Nor does a UX person have need of math--unless they want to work in mobile device sensors, or analyze UX survey results & A/B testing, or...  
> **username_34**: @username_35 I agree that degree requirements are often designed to demonstrate a breadth in the discipline as well as prepare students to be lifelong learners. Many will go on to specialize in an area that doesn't directly use every single required class. However, I think there are strong arguments that everyone should take a CS Theory class - even if they may never directly use it at their jobs - because the topic is vital to establishing a broad foundation in CS. Same goes for most required classes. However, I honestly can't make the same argument for Calculus. Maybe you can?  
> **username_34**: Side note: as a former UX consultant (and now a professor), I've actually used _a ton_ of statistics in both roles. However, I would make a similar argument for stat as calc -- they make sense as prereqs for certain electives and can be really useful in some applications, but I can't make as strong an argument for them being fundamental to computer science as I can for Discrete Math (which I _do_ think every BS in CS should require), for example.  

---

### Answer by username_36 on 2019-04-27. Score: 15

Much of the material one learns in school has no direct utility in one's job as a software engineer. Conversely, much of the working knowledge one needs as an industry practitioner is not gained in school. What school is supposed to do is provide some basic knowledge and a basic framework for learning, out of which an individual is going to actively retain a small-ish portion for their day-to-day use on the job.

However, much engineering work is multi-disciplinary, and therefore "surplus" knowledge is not exactly useless: it can provide a useful bridge to other disciplines. Calculus in particular occurs in the math that describes physical processes.

In today's global economy, it is likely that one will switch employers and job specializations multiple times in one's career. At the start of one's career it is impossible to foresee what knowledge is going to come in handy later on. About twenty-five years into my career, I found myself interfacing to domain specialists whose bread and butter are differential equations. When I was in school, studying for a CS degree, I could have taken optional classes to learn about differential equations, but decided not to as I was already struggling with my math workload. So late in my career I came to regret my earlier decision, as it put me at a disadvantage relative to colleagues with a working knowledge of differential equations.

The exact nature and number of math classes required in a CS program may in part be driven by departmental tradition. For example, in the school I attended, the CS program had grown out of the math program in the early 1970s. Therefore, math was heavily emphasized. In fact, as an undergrad I took exactly the same math classes as students in the math program. Out of those, linear algebra turned out to be useful for computer graphics, and numerics turned out to be useful for high-performance computing. Multi-dimensional analysis and statistics I never needed again, but it might have been quite different had my career taken me in a data science direction.

> **Comments:**
> **username_32**: If it's useful for physical processes, it may be important for data around physical entities, for example mapping stresses on architecture, or flow of liquids and gases. Simulations are a very important part of a lot of very important fields. There's always a big application for something in my experience. Having the tools to understand something will always broaden your horizons and open up career paths that might remain closed otherwise.  

---

### Answer by username_22 on 2019-04-27. Score: 12

This isn't really an answer, but I'd like to say a few things about calculus. I think that what is needed by a CS major from that realm and what is needed by a math major are very different. As such, I think that if calculus is taught to CS majors, and to history majors, for that matter, the needs imply that it might be a different sort of course than that taken by the math majors.

First, not a lot of people who have taken Elementary Calculus (i.e. Calc I, II, and III) actually have much insight into what is really the point. It is easy to get lost in details of differentiation and integration and techniques and such without realizing that it is really a study of the relationship between what happens locally with a function (differential calc) and what happens globally (integral calc). It is all tied together by the Fundamental Theorem.

But even the nature of the derivative is poorly understood for a long while - it took me several years of graduate study in math to really grok it. The derivative you study in Elementary Calculus is really only one specific form of a wide variety of possibilities. The limit used in Elementary Calculus could be replaced by alternatives. The difference quotient in the derivative could be replaced by another "average ratio of change". This would result in a different theory.

However, the standard version of Elementary Calculus (note that I keep writing Elementary") is very good for understanding the behavior of well behaved functions: those that are mostly continuous. But aside from Catastrophe Theory (why do bridges fall down unexpectedly?) it is these continuous functions that form the basis of understanding a lot of the applications of both math and CS. Probability, for example, depends on calculus once you get past counting.

So, elementary calculus is useful for applications of rational thought to the real world - which CS folk do a lot of.

However, the "nice" functions of elementary calculus are pretty boring to a mathematician. The interesting functions are those that are misbehaved - even wildly misbehaved - even wildly misbehaved everywhere. A function that is continuous but nowhere differentiable starts to be interesting. A function that is continuous everywhere but zero, but takes on every real value in every neighborhood of zero starts to be interesting. That is where the calculus sequence is headed for math majors, but it probably isn't very useful for a CS person. How about functions not even defined on the rationals. Is that a *yummy* or a *yucky*?

So, a good compromise, if a university can arrange it, is to have a single course that is something like Calculus I with some ideas of the derivative and the integral, but focused on why these are important (rates of growth, etc) rather than just computational details, might be worth designing and offered generally to people interested in becoming widely educated, rather than becoming mathematicians.

---

Note that this precise subject was the basis of my doctoral work: variations on the ideas of calculus and the deeper meaning for the study of functions.

> **Comments:**
> **username_29**: A function that is continuous but nowhere differentiable starts to be interesting. -- In HS we had a rule where asking a maths question the teacher couldn't answer got a reward equivalent of passing a test. So, in 3rd year of HS (11th grade) that's exactly what I asked: is there a function which is continuous everywhere but is not differentiable anywhere? And I got my reward! I am still proud thirty years later. So yes, that's interesting and unusual.  
> **username_30**: The issues with understanding applications of Math you describe is a common failure of modern education in my opinion. Without educating students on the nature of Physics, it is nearly impossible for them to grasp where the Math they are being taught is originating. However, if you introduce students to the idea that derivation is used to determine acceleration from velocity, and that integration is used to determine velocity from acceleration; perhaps more students would have a stronger grasp of math fundamentals. Especially, for example, when we examine the math for emitting photons.  

---

### Answer by username_37 on 2019-04-30. Score: 6

There are many good answers here, but ultimately your question comes down to, "Why does A require X, when my dad was B for many years."

Software engineering is not a field that only seeks out computer scientists. I work in software engineering right now having graduated CS, but I work along side of other software engineers from various engineering degree programs, math degree programs, and science degree programs. In short, you do not actually need a computer science degree to be a software engineer.

What does this mean about computer scientists? What do they do that is different?

As others have so very well pointed out, there are areas that computer scientists are pioneering. Machine Learning is one example, but look at the other answers for more good ones. Another area that hasn't been mentioned is computing theory.

In short, a computer scientist major learns calculus, not because it is necessary for software engineering, which does not require a CS degree at all, but because of what Computer Scientists can potentially do: Software pioneering, refinement, and computational theory.

Some of this is academic in nature, some of this is still something you can get a job doing in the commercial sector. My former boss at this company has a Ph. D. in computer science, and I know 2 others who work here that also do, and they handle slightly different work. One is in charge of R&D, another is in charge of developing a brand new system no one has ever conceived of before, and I'm not sure what the other one does.

In short though, if you were looking to get into software development, you are right, you likely do not need Calculus, you also don't need a Computer Science degree. However, if you want to be a top innovator in computing, that's when you want to get that degree.

Edit: An example of a Computer Scientist who is not doing software development with his degree is the one I was able to sit in on for his Graduate Thesis. He was doing microcircuit design using machine learning data models, and had developed a 4 bit adder that was smaller than 50x50x50 microns^3. So there are also other fields you can go into with Computer Science.

> **Comments:**
> **username_38**: Excellent, well considered answer. Welcome to CSEd!  

---

### Answer by username_39 on 2019-04-28. Score: 5

Despite more than 30 years of programming professionally I have yet to use calculus for work. Does that mean it was a waste? No--my observation from school is that you only truly learn the material that you use in future classes. Calculus is the step above differential equations--and I have used that knowledge professionally more than once.

(And note that I have used the results of calculus in a program I whipped up to solve a problem. I looked it up, though--my calculus is far too rusty to have handled the integration involved. I have also had the experience of looking at a bit of code and being utterly unable to understand what a key equation was doing. In hindsight I realize it was the integration of stuff I understood but that was before I had taken calculus, I couldn't see the relationship.)

> **Comments:**
> **username_40**: My experience echos yours.  My CS degree was 40% mathematics, I have *never* used calculus since.  Linear Algebra is the complete opposite though.  

---

### Answer by username_41 on 2019-04-29. Score: 5

Given all the answers, I'm kind of surprised I didn't see anyone mention this, but...

Back in the 80's when I was taking CS (and likely somewhat in the vicinity of when your father took it), Accredited Computer Science was still fairly new as a degree. Very few colleges offered it as its own stand-alone school. For most, it was a department in either their School of Engineering, or their School of Mathematics.

Schools all have their own graduation requirements, but **both of those types of schools are quite likely to require calculus.** In my case, it was under the School of Engineering, so I was required to not only take 3 semesters of Calculus, but also two semesters of Chemistry.

Now Chemistry is a *Noble* subject (pun intended), worthy of study, but probably not vital to a typical CS degree holder. I certainly didn't learn much of it from that huge lecture class where the instructor spoke with badly accented Norwegian, the TA's in incomprehensible Chinenglish, and a 17% on tests was a passing grade.

Degree graduation requirements are just something you have to deal with as a College student. We were also required to take 2 semesters of English (which served me much better in my career), and 4 other semesters of Liberal Arts classes, all of which were wonderful experiences I'm glad I had, because I took stuff I was really interested in.

Now that being said, you don't know where your career is going to lead. You need a good survey of knowledge on damn near everything, and this goes double for math. 10 years after graduation I found myself writing software for flight simulators, where the communications protocol we used called out using [quaternions](https://en.wikipedia.org/wiki/Quaternion) to calculate the position and rotation of other aircraft in between updates. This was pre-Web, so I found myself driving all over town looking for a book telling me how to do that.


---

### Answer by username_42 on 2019-04-30. Score: 4

1. Calculus requires several semesters of concerted effort to master. It is not as easily picked up on the job, unlike learning a new computer language (I have programmed in 28 professionally) or library. College should teach key building blocks not easily acquired in another setting.
2. I didn't need that calculus until I got a job dealing with insurance research, such as modeling the effect of hurricanes on a real estate policy. Insurance work is loaded with math, including calc. Try numerical integration in 1,000 dimensions without it!
3. If you want to do programming related to financial instruments (like I did at another job, working at CRD on their investment management system), calculus is heavily involved.
4. If you want to work in scientific computing (like I currently do at Shell, the oil major) calculus comes in handy.
5. If you want to work in optimization and operations research (like I did at EF Education, in the Travel industry, when optimizing the consolidation of tours based on matching parameters), it also comes in handy.
6. Any programming that requires obtaining expert domain knowledge outside of simple website design or business database programming and report prep is likely to bring you into contact with problems that require advanced math. If you don't have that knowledge, you get stuck writing the CRUD (and there is always loads of CRUD to write). If you do, you get to tackle the fun problems and be the tech lead.

**Bottom Line**: If learning all the new stuff fast and being superproductive at writing and testing lots of commonplace code is your forte, there is a place for you in software. If solving really hard problems and getting recognition and compensation for doing that is what you want.... LEARN CALCULUS!

> **Comments:**
> **username_0**: Could you explain what CRUD is?  
> **username_43**: @username_0 Create Read Update Delete - standard operations in web applications and databases.  

---

### Answer by username_44 on 2019-04-30. Score: 3

**Computer Science is not Software Engineering**

This depends on your definitions, of course, and in most common definitions they are very closely related.

But the long and the short of it is, there is a difference between sorting an array (which in many programming languages is about as simple as calling array.sort()), and implementing the underlying logic of the .sort() function.

Software Engineering is more about knowing WHY and WHEN to sort, rather than HOW to sort. Very often, these lines can get quite blurred - for instance, if engineering a high-performance application, it may be important to understand the underlying algorithm to fine-tune the WHEN, or maybe even write a supporting routine that heuristically chooses from a set of possible sorting algorithms.

**Algorithms, and many other HOWs of computers and Computer Science, often require Calculus to understand and research. These things are commonly much less useful in day-to-day Software Engineering.**

Please also see this [CS SE question](https://cs.stackexchange.com/questions/55462/how-when-is-calculus-used-in-computer-science) for why calculus is something very useful for the study of Computer Science in general.


---

### Answer by username_45 on 2019-04-29. Score: 3

Calculus is not useless to computer scientists. But it is not very useful either. If the required mathematical fields in CS were ranked, according to usefulness and/or necessary depth, the list would be something like this:

1. Logic
2. Linear Algebra
3. Probability Theory
4. Discrete Mathematics/Abstract Algebra
5. Numerical Analysis
6. Number Theory
7. Complexity Theory
8. Calculus/Real Analysis

You can certainly quibble about the importance order, but that misses the point, the point is that Calculus will always be ranked fairly low. Calculus by its nature concerns itself with the infinite, but computer scientists are mostly interested in finite things.

I believe it is taught because of inertia and because universities are slow to adapt their curriculum.


---

### Answer by username_46 on 2020-01-02. Score: 3

A boring fact, a story, and a practical reason from a real-life department meeting:

# The boring fact

Com Sci programs are accredited. In the US they like to go by the official group -- the ACM (Association for Computing Machinery). They recommend Calculus in a round-about way. From the [2013 ACM curriculum](https://www.acm.org/binaries/content/assets/education/cs2013_web_final.pdf), page 50:

> we believe that a CS program must provide students with a level of
> "mathematical maturity." [...] some programs use calculus requirements
> not as a means for domain knowledge, but more as a method for helping
> develop such mathematical maturity [...] early in a college-level
> education. [...] undergraduate CS students need enough mathematical
> maturity to have the basis on which to then build CS-specific
> mathematics

It's saying you need to math-up your freshmen with classes such as: Calculus. End of list.

# The story

An early maxim was "you can't program what you don't know". An obvious example: Grace Hopper was a mathematician, and coded math equations. In the 60's, most programmers would be writing accounting software. At that time my midwestern state school had Com Sci students taking required accounting classes (and not only because Des Moines was a hub for Insurance, banking, and direct mailings). Later, as the arms race heated up, there was a national push for rocket-science -- Calc and Physics. We wanted enough coders to aim ballistic missiles at the Rooskies. In the 80's my old school required a year of both, and only recently dropped Physics (now it's a year of any science).

No one thought Accounting or Calc made you a better programmer. They though they made you better at programming Accounting or Calc.

# The practical reason from a real-life department meeting

During an 00's curriculum discussion us faculty talked about cutting Calc. We wanted to since our students didn't need it, but we couldn't do it. We talked about moving our Discreet Math class up front, but rejected it. For one thing, it had some coding, but mostly we couldn't teach another huge freshman section. It was enough trouble staying on top of the huge Programming I and II sections. It turns out Calc is special since the Math Dept. is already teaching giant sections of it for the entire Engineering College. Physics was special the same way. We thought about putting Linear Algebra instead of Calc, but it's a small, fast-paced 3rd-year class -- asking the Math Dept. to convert it for 200 1st-years would have been impractical.

So, because of historical reasons, Calc is often the only math class a big group of 1st year students can take. But say your school isn't known for Com Sci and the Dept. gets only a few majors (and exists mostly to teach non-majors). Then it makes sense to have your dozen new majors take Combinatorics right away, or your other ideal 1st math class.


---

### Answer by username_47 on 2019-05-01. Score: 3

There are some parts of Computer Science that use Calculus. DSP is an obvious one. Linear Regression, which is an ML technique, uses gradient descent to minimize a cost function. I learned about gradient descent in Multi-Variable Calculus (Calc 3). Newtonian physics obviously involve some calculus, and are in turn used in things like physics engines.

In general, I think CS programs should give students a decent math foundation, since it is an engineering discipline, and is entangled with many other sciences. When solving more science-y problems, mathematics are bound to come up. Calculus is a pretty fundamental area of math, whose absence seems like a serious gap to me.


---

### Answer by username_9 on 2019-04-30. Score: 2

We actually used integration to derive big-O complexity in an upper-level course on complexity theory. I remember being quite impressed at the time, because no, I *hadn't* used it in any of my prior CS classes. Unfortunately, I don't remember the details -- it's been a very long time.

If I'd gone into modeling and simulation, or if I'd stuck with graphics, I'm quite sure I would have used it more.


---

### Answer by username_10 on 2019-04-28. Score: 2

During my CS course, I developed the rather cynical theory that the CS faculty were using the Math faculty to fill out their curriculum. It saved them time and effort and so it was that we taught some really hairy math which I can't imagine ever being of use to me. 3D integration anyone?

If I ever were to be working on a project that needed such things, I'd expect a subject matter expert to be providing the requirements, just as I'd expect a botanist to be writing the specification for controlling an asparagus greenhouse. Of course some math is valuable, but I think it lingers in CS just because it was often the mathematics department that originally had to teach computing to undergraduates.

> **Comments:**
> **username_11**: As a working developer who was assigned a task that required ML techniques to do well in a shop where the data scientists were all busy with more directly revenue-producing tasks, I wouldn't suggest betting on domain-expert availability when those domain experts are more specialized / harder-to-come-by than you. And, of course, having that expertise entitles you to *become* one of those domain experts, with the extra job-market pull that implies.  

---

### Answer by username_12 on 2019-04-29. Score: -4

Calculus is a hard and rigorous sequence of courses amounting to 12 to 15 semester credits. It is readily available in most any college so it was easy to include in the requirements in the 60s and 70s which established momentum for it. Taking it you learn skills of organization and time management as much than anything else. You learn how to think and absorb information at lightning speed. If you can learn Calculus then the similarity to what you need for computer science will very likely carry over. These skills are useful for a programmer.

I speak of my own experience taking Calculus while studying Computer Science at the university.


---

### Answer by username_13 on 2019-04-28. Score: -5

As Computer Science students, you should know the fundamentals of university mathematics, for the further development of your own skills.

I believe that all science-oriented persons must study mathematics. For one thing, that study helps you to learn both of your subjects. And fundamentally, philosophically, I don't think that the two subjects are divided. Which is mathematics, and which is science? They are of a piece, essentially—they form an undivided unity.


---

