58
$\begingroup$

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?

$\endgroup$
9
  • 3
    $\begingroup$ 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 ... $\endgroup$
    – user207421
    Commented Apr 28, 2019 at 6:19
  • 6
    $\begingroup$ See also: How/when is calculus used in Computer Science? on ComputerScience.SE $\endgroup$ Commented Apr 28, 2019 at 8:38
  • 2
    $\begingroup$ 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. $\endgroup$ Commented Apr 28, 2019 at 14:31
  • 5
    $\begingroup$ 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. $\endgroup$ Commented Apr 28, 2019 at 17:40
  • 8
    $\begingroup$ @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? $\endgroup$
    – thesecretmaster
    Commented Apr 29, 2019 at 4:15

18 Answers 18

63
$\begingroup$

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.

$\endgroup$
8
  • 9
    $\begingroup$ 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. $\endgroup$
    – Buffy
    Commented Apr 27, 2019 at 20:29
  • 6
    $\begingroup$ @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. $\endgroup$ Commented Apr 27, 2019 at 20:32
  • 10
    $\begingroup$ 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. $\endgroup$ Commented Apr 27, 2019 at 22:52
  • 2
    $\begingroup$ 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) $\endgroup$
    – Jasen
    Commented Apr 27, 2019 at 23:58
  • 15
    $\begingroup$ 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. $\endgroup$
    – Kimball
    Commented Apr 28, 2019 at 1:37
51
$\begingroup$

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.

$\endgroup$
13
  • 21
    $\begingroup$ 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. $\endgroup$
    – davidbak
    Commented Apr 28, 2019 at 21:09
  • 7
    $\begingroup$ 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. $\endgroup$ Commented Apr 29, 2019 at 8:52
  • 4
    $\begingroup$ @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! $\endgroup$
    – Graham
    Commented Apr 29, 2019 at 10:54
  • 3
    $\begingroup$ @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. $\endgroup$
    – Graham
    Commented Apr 29, 2019 at 11:01
  • 3
    $\begingroup$ @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. $\endgroup$ Commented Apr 29, 2019 at 12:36
26
$\begingroup$

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.

$\endgroup$
1
  • 2
    $\begingroup$ 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. $\endgroup$ Commented Apr 30, 2019 at 11:21
25
$\begingroup$

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.

$\endgroup$
6
  • 1
    $\begingroup$ 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 $\endgroup$ Commented Apr 29, 2019 at 7:15
  • $\begingroup$ @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. $\endgroup$
    – Tiercelet
    Commented Apr 29, 2019 at 17:53
  • $\begingroup$ @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? $\endgroup$ Commented Apr 29, 2019 at 19:37
  • 3
    $\begingroup$ @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... $\endgroup$
    – Tiercelet
    Commented Apr 29, 2019 at 21:07
  • $\begingroup$ @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? $\endgroup$ Commented Apr 29, 2019 at 23:10
15
$\begingroup$

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.

$\endgroup$
1
  • $\begingroup$ 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. $\endgroup$ Commented Apr 30, 2019 at 11:24
12
$\begingroup$

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.

$\endgroup$
2
  • 3
    $\begingroup$ 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. $\endgroup$
    – chx
    Commented Apr 30, 2019 at 9:35
  • $\begingroup$ 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. $\endgroup$
    – Travis J
    Commented Dec 19, 2019 at 19:39
6
$\begingroup$

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.

$\endgroup$
1
  • 2
    $\begingroup$ Excellent, well considered answer. Welcome to CSEd! $\endgroup$
    – Ben I.
    Commented Apr 30, 2019 at 1:27
5
$\begingroup$

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 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.

$\endgroup$
4
$\begingroup$

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.)

$\endgroup$
1
  • 1
    $\begingroup$ My experience echos yours. My CS degree was 40% mathematics, I have never used calculus since. Linear Algebra is the complete opposite though. $\endgroup$
    – Kingsley
    Commented Apr 29, 2019 at 3:56
3
$\begingroup$

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 for why calculus is something very useful for the study of Computer Science in general.

$\endgroup$
3
$\begingroup$
  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!

$\endgroup$
2
  • $\begingroup$ Could you explain what CRUD is? $\endgroup$ Commented Apr 30, 2019 at 17:52
  • 1
    $\begingroup$ @LuminousNutria Create Read Update Delete - standard operations in web applications and databases. $\endgroup$
    – srattigan
    Commented May 1, 2019 at 19:52
3
$\begingroup$

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, 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.

$\endgroup$
2
$\begingroup$

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.

$\endgroup$
1
  • 3
    $\begingroup$ 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. $\endgroup$ Commented Apr 29, 2019 at 23:37
2
$\begingroup$

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.

$\endgroup$
2
$\begingroup$

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.

$\endgroup$
1
$\begingroup$

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.

$\endgroup$
-4
$\begingroup$

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.

$\endgroup$
-5
$\begingroup$

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.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.