top | item 27330400

“Computer science is not about computers”

288 points| akakievich | 4 years ago |quoteinvestigator.com | reply

277 comments

order
[+] js8|4 years ago|reply
My view is quite unconventional, but I believe, computer science is a branch of mathematics that deals with large but finite structures (so they need an algorithmic description).

Compare with most of "legacy" mathematics, which studies countable structures (so the description can use arbitrary series).

Of course, there are larger sets, but they mostly serve as a theater (just like countable infinity is just a theater of computer science).

Finite sets in the rest of mathematics are sometimes considered uninteresting, but not so in computer science, where only very small sets (roughly of up to 32 elements, all subsets can be easily checked on a typical computer) are considered uninteresting.

Good example is number theory, which philosophically considers all natural numbers, regardless of size, to be equal type of objects. In computer science, the (although fuzzy) magnitude of numbers plays much bigger role.

[+] tom_mellior|4 years ago|reply
> I believe, computer science is a branch of mathematics that deals with large but finite structures (so they need an algorithmic description).

This is a strange claim since the entire field was founded upon the investigation of potentially (and often actually) infinite computations.

> Compare with most of "legacy" mathematics, which studies countable structures (so the description can use arbitrary series).

Define "most". Do it in a way that makes real and complex analysis and topology (and probably many other branches) the smaller part of mathematics.

Most importantly though, my problem with this kind of discussion is that the question itself is meaningless. Not everything can be classified into neat " X is a Y" relationships. Not everything needs to be classified into such relationships. Even if the discussion reached a consensus, that consensus would be meaningless. Computer science is a part of math? OK, but so what? Computer science is not a part of math? OK, but so what? Neither conclusion would tell us anything useful.

[+] siraben|4 years ago|reply
> computer science is a branch of mathematics that deals with large but finite structures (so they need an algorithmic description)

Another way to put this is that computer science deals with mostly constructive mathematics (more precisely, mathematics that uses intuitionistic logic, the kind that is natural to most programmers and computer scientists anyway). For instance, when you prove the fundamental theorem of arithmetic, you actually can translate that into an algorithm for factorizing numbers into products of powers of primes. And the converse holds too, an algorithm is a proof! If you can give me an algorithm that, given a number n, always produces a prime bigger than n, then that actually witnesses the infinitude of primes.

Constructive methods are everywhere in CS, for instance, to prove a proposition P, it's possible in classical math to say "assume (not P) is true, then derive a contradiction, hence P", however that would be really unnatural in CS! You never hear "I want to show an algorithm to solve P exists, let's suppose it's not computable, ... contradiction!", because you don't end up with an algorithm at all (what you proved instead was that it's impossible for an algorithm to not exist, without saying what it is). Likewise, you if want to show some number/program/data structure has the properties you care about you almost always give the description explicitly.

For more information, I'd say that type theory is a great intersection of math and computer science in a way that's quite accessible to programmers, since we're already used to this kind of thinking, even if we weren't explicitly taught it.

[+] triska|4 years ago|reply
This is an interesting view that captures a substantial portion of computer science including also programs and proofs with a short and clear criterion.

However, a key drawback of this view is that it undersells the linguistic aspect of computer science which is manifested in the search for suitable programming languages.

I think it is justified to regard the design of programming languages as a core area of computer science, and that design space is not finite.

[+] btilly|4 years ago|reply
Please explain how Dijkstra's _Go To Statement Considered Harmful_ (see https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.p... for the text) is part of mathematics. Then Knuth's famous reply _Structured Programming with Go To_ (available at http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.103...) and then the much later follow-up at https://cis.temple.edu/~ingargio/cis71/software/roberts/docu..., _Loop Exits and Structured Programming: Reopening the Debate_.

When you've disposed of those, read the less well-known paper _Programming as Theory Building_ by Peter Naur (see https://pages.cs.wisc.edu/~remzi/Naur.pdf for a link).

Are there computer science papers that could fit within mathematics? Yes. Are there important computer science papers that clearly don't? Also yes.

[+] rapjr9|4 years ago|reply
At Dartmouth College, computer science started as a branch of the Mathematics Dept. It was eventually made it's own department (located in a former clinic for the mentally ill, Sudikoff Laboratory which some see as ironic). Now Dartmouth is building a new addition to the engineering building (Thayer School of Engineering) and the Math and Computer Science Dept's will move there. I believe the thinking is that those dept's collaborate so much that having them located in the same complex will be helpful. Much of computer science research is more about applications of computers rather than research into computing itself, though some pure computing theory is still being worked on, and everything is becoming cross disciplinary across many fields. One CS project I worked on was designing a smartwatch for health apps. It involved electronics engineering, operating system development, health applications development, sensor data processing, medical research on senior frailty, gesture UI design, UI usability research, secure wireless data transport and collection and more. It was run by a CS prof though. If you go into CS you can end up working on anything and everything. Another CS robotics project involved electronically herding cattle. Where do cattle fit into CS theory? As end users of computers? :-)
[+] thanatos519|4 years ago|reply
This is good thinking and I am sad to hear that it is unconventional.

And now I'll contradict the part of what you said about finite structures: At a theoretical level, the field deals with infinite structures, namely the Turing Machine tape and infinite time. We use finite Computing Machines to simulate a finite section of that tape in a finite time.

Maybe we should call it Turing Machine Science, because we use computers to study the behavior of programs in Turing Machines, just as astronomers use telescopes to study the behavior of atoms in stars and particle physicists use particle accelerators to study the behavior of elementary particles. We will never touch those particles, stars, or Turing Machines, but we can know them, hence the science.

Software engineering is like using one's understanding of the emissions of the sun to design better solar panels. Very practical, but you don't use your understanding of gravity-driven fusion reactors every day.

[+] musicale|4 years ago|reply
> computer science is a branch of mathematics

Subject boundaries are arbitrary, but they have a practical implementation in terms of university CS departments.

Some CS departments came out of math departments, and some universities have a "Department of Mathematics and Computer Science. The theoretical side of CS does seem like a branch of mathematics.

Other CS departments came out of EE departments, and and some universities (MIT, Berkeley) have a "Department of Electrical Engineering and Computer Science." The practical side of CS does seem like a branch of engineering.

A number of stand-alone CS departments (Stanford) still seem to be part of the school of engineering, so my vote is for CS as an engineering discipline with a theoretical basis in mathematics (perhaps like information systems or signal processing.) I also like the idea of Caltech's "Computing and Mathematical Sciences," as it seems to bring a lot of computing and applied math under one roof.

[+] maweki|4 years ago|reply
I always tell my students that computer science the special subset of math that that is coincidentally "easily" executable on a computer.

This subsumes finite structures, parseable Problem descriptions, structured formulas, formalized algorithms, etc.

[+] twobitshifter|4 years ago|reply
Before there was a CS major at many universities you would major in mathematics if you wanted to work with computers.

John Kemeny majored in mathematics and taught “Finite Mathematics” while a professor. He saw the application of BASIC not as a new field but as a way to simplify computers so that it wasn’t only mathematicians and scientists who could program them.

[+] jltsiren|4 years ago|reply
Computer science research is mix of (at least) mathematical, engineering, and scientific traditions that varies by subfield. Among the subfields I'm most familiar with, theoretical algorithms are mostly mathematical, while algorithm engineering is closer to engineering. Data compression has both mathematical and engineering work, while bioinformatics is a mix of all three traditions.

It's not always clear what is computer science and what isn't. For example, you can find both mathematicians and computer scientists in theoretical computer science. In bioinformatics, you often see similar work from people with CS and life sciences backgrounds.

[+] otabdeveloper4|4 years ago|reply
Yes. Indeed in much of the world outside the USA there isn't even such a label as "computer science"; the stuff that's taught as "computer science" in the USA is taught under some sort of "math" label.
[+] wayoutthere|4 years ago|reply
> Good example is number theory, which philosophically considers all natural numbers, regardless of size, to be equal type of objects. In computer science, the (although fuzzy) magnitude of numbers plays much bigger role.

Somewhat similarly, I have a degree in number theory / modal logic systems that was issued by the philosophy department at my university. The concepts are similar to a CS degree except you get really good at describing the problem because philosophy degrees usually involve a lot of writing.

[+] MeinBlutIstBlau|4 years ago|reply
Legitimate computer science should be about assembly and C for the most part. Knowing mathematically how the 1s and 0s are outputting through the machines circuit.

Nowadays it's just an antiquated term for programmer. The average C programmer if wager is above 40 years of age whereas the average python or web dev dev must be pushing late 20s.

[+] mbrodersen|4 years ago|reply
It’s the other way around. Infinity can only be defined by using algorithms. Think about Peano numbers for example.
[+] chobytes|4 years ago|reply
I think it really depends what part of math and what part of computer science you're talking about. Certainly foundations of computation use finite objects from countable sets... But there is more to CS than turing machines and encodings of numbers.

For example: Computer vision, machine learning, data science, cryptography, etc are all rife with infinite objects! Proof assistant software and SMT solvers can also prove things about infinite mathematical structures from number theory, ZFC, topology, etc.

Pure mathematics also cares about finite algorithms. Every proof is a finite sequence of deductions on finite objects from a countable set... eg a computer program! Other examples include: computing bounds, integrals, roots of polynomials, divisors, bases, fundamental groups, etc. Pure math is full of computation!

tl;dr the line between math and cs is extremely fuzzy.

[+] unknown_apostle|4 years ago|reply
Working with coinduction. So that’s not a good definition :-)
[+] afpx|4 years ago|reply
multiplication is an algorithm.
[+] dalbasal|4 years ago|reply
I've come to believe that ideas/statements such as these are crucial, but neither true nor false. They're a perspective lens. Ideally, we should be able to slip in and out of such perspective lenses. A contradictory statement could be equally true/useful, even (especially?) if held simultaneously.

Avoiding computer science directly... Geophysics is a "telescope science." A typical geophysicist sees themselves as experts in seismic interpretation, the tool they use. When the subject turns to the actual subject (the earth), they call it geology, or rock physics. It's not an idealistic take, or a very scientific one, but it's apparently useful to their work.

To take the reductio ad absurdum head on, I don't think it's totally useless to think of astronomy or microbiology as telescope or microscope sciences. It certainly introduces biases, but it might also remove certain biases and lead to new ways of phrasing a question. It might lead to new lines of inquiry, and is somewhat descriptive of how these fields developed historically. Wasn't Astronomy Astrology, before it was telescope science?

You could go with an intentionally provocative "computer science is not about mathematics" or "not about science."

What if we were to phrase Dijkstra's statement as a question: "Is computer science about computers?" It's not a statement you can approach with empirical falsification. That doesn't mean it's false, or useless. It just means you can't treat it like you would F=ma.

[+] seoaeu|4 years ago|reply
The reverse statement would probably be something like "The core pursuit of computer science is how to best design and harness computers". Which is a reasonably accurate description of many areas within CS including machine learning, distributed systems, programming languages, and computer architecture.
[+] domlebo70|4 years ago|reply
I love this take. I guess metaphors carry a similar purpose. They help draw analogs and expand an idea
[+] benrbray|4 years ago|reply
For my entire time as an undergraduate, the large top-ten research university I attended offered no courses in programming language theory, nor were these topics woven into the computing curriculum at large. (actually, there may have been a handful of graduate courses, but undergrads were strictly prohibited from joining -- there was a mandatory theory of computation class required for all CS majors, but the topics varied wildly between semesters and the primary lecturer was notoriously apathetic about teaching)

In graduate school, I attended another large top-ten research university and again, no courses on programming language theory. The reason being all the PL faculty had either recently been poached by industry or accepted positions at more prestigious universities.

The result was that my entire computing education felt like watching shadows on the wall of Plato's cave; I was never exposed to fundamental concepts like lambda calculus or to non-standard languages like Haskell or Lisp that might have given a different perspective on computing.

Only recently in the past 1-2 years have I started to fill in the gaps myself, but I can't help but feel cheated. It's pretty crazy that the research-level faculty turnover can prevent thousands of students from being exposed to such an important aspect of computing.

(imagine, for instance, if an entire class of engineers had no option to take a course on heat transfer simply because there was no research faculty available who specialized in heat transfer research)

[+] logicchains|4 years ago|reply
This also applies to interviewing. Google for instance generally doesn't include anything PL theory related in their interviews, even though it would often be more relevant to the work than random dynamic programming problems. As a result of this they produced languages and frameworks like Go, Dart, Angular and Tensorflow, which display ignorance if not outright contempt for modern programming language theory. This led to the latter two being mostly replaced by React and Pytorch, which are more influenced by language design best practices, to Dart being mostly ignored, and to Go being violently rejected by a significant subset of the programming community.
[+] divbzero|4 years ago|reply
What are the best ways to fill in those gaps? I bet many of us never enjoyed those classes in school, or even had a traditional computing education.
[+] iratewizard|4 years ago|reply
I personally feel the pain of this when trying to hire someone who understands core concepts in PL theory and can help maintain a framework. It's also not the sort of thing I can teach to my Sr devs on the job in under a year when they've never even touched anything like forth or lisp, or even tried to write a parser by hand.
[+] mxscho|4 years ago|reply
In Europe, "Computer Science" is translated with a word that is a mix of "information" and "mathematics". University course names are:

> [...] informatique (French), Informatik (German), informatica (Italian, Dutch), informática (Spanish, Portuguese), informatika (Slavic languages and Hungarian) or pliroforiki (πληροφορική, which means informatics) in Greek. Similar words have also been adopted in the UK (as in the School of Informatics of the University of Edinburgh). In the U.S., however, informatics is linked with applied computing, or computing in the context of another domain. [1]

[1] https://en.wikipedia.org/wiki/Computer_science#Etymology

[+] Apocryphon|4 years ago|reply
"Computer science was a fraud. It always had been. It was the only branch of science ever named after a gadget. He and his colleagues were basically no better than gizmo freaks. Now physics, that was true science. Nobody ever called physics “lever science” or “billiard ball science.“

The fatal error in computer science was that it modeled complex systems without truly understanding them. Computers simulated complexity. You might know more or less what was likely to happen. But the causes remained unclear."

- Bruce Sterling, Zenith Angle

[+] kaba0|4 years ago|reply
> The fatal error in computer science was that it modeled complex systems without truly understanding them. Computers simulated complexity

I think this part is backwards, and I would even say that CS is about complexity itself. In some ways it is even meta-mathematical even though it is a subset of mathematics.

There is an interesting paper measuring the complexity of different things in terms of a minimal Turing machine (sorry, I’m not sure about the details but will try to find it) and it gave a relatively small number for the complexity of the base axiom set of modern maths (few kb, or maybe MB?) It really put it in perspective for me what is mathematically provable and all the rest of things that we don’t even have the tools to reason about, at most we can compute it.

[+] ant6n|4 years ago|reply
Computer science is the study of computing things. In fact, virtually all of math used to be about the study of computing things, until about 200-300 years ago, when the study of mathematical structure branched of the science of computing things.

Computer science has existed for thousands of years, the naming has just been a bit off.

[+] xyzelement|4 years ago|reply
CS is a way of thinking about how to solve things, with regards to efficiency of solution.

Example: my wife likes to put gym shorts and shirts in different drawers. To my CS mind that doubles the seek time of a retrieval.

The little bowl by the door is a cache of my most recently used stuff.

People who nearly file their papers (eg bills) nearly are optimizing for retrieval efficiency - of an operation that is actually very rare.

When my wife and I leave the apartment we often take the garbage out to the chute. My wife likes to drop off the garbage before pressing the button to to call the elevator. To me that's weird because calling the elevator is long running IO in a separate thread - might as well start it asap.

[+] lukego|4 years ago|reply
My favourite take on "computer science" is from George Forsythe who founded Stanford's computer science department in the 1960s. He didn't seem to be embarrassed to put the computer into computer science.

Excerpt from http://i.stanford.edu/pub/cstr/reports/cs/tr/65/26/CS-TR-65-...:

> I consider computer science to be the art and science of exploiting automatic digital computers, and of creating the technology necessary to understand their use. It deals with such related problems as the design of better machines using known components, the design and implementation of adequate software systems for communication between man and machine, and the design and analysis of methods of representing information by abstract symbols and of processes for manipulating these symbols. Computer science must also concern itself with such theoretical subjects supporting this technology as information theory, the logic of the finitely constructable, numerical mathematical analysis, and the psychology of problem solving. Naturally, these theoretical subjects are shared by computer science with such disciplines as philosophy, mathematics, and psychology.

[+] aniijbod|4 years ago|reply
The very first thing that Hal Abelson says and puts up on the chalkboard in his very first SICP talk (Lecture 1A 6.001 'Structure and Interpretation') in 1986 is that "Computer Science is not about either science, or computers'. https://www.youtube.com/watch?v=2Op3QLzMgSY
[+] RcouF1uZ4gsC|4 years ago|reply
> computer science is not about computers, any more than astronomy is about telescopes, or biology about microscopes

That is actually underselling telescopes and microscopes. It was telescopes that really gave us modern astronomy. Before we had the ability to really observe stars and planets, we were stuck with a very simplistic, geocentric view of the universe. The telescope was what really opened up venues for us to really understand astronomy.

Similarly, before the invention of the microscope, we had a very limited understanding of biology. There was no germ theory of disease, instead just theories about 4 humors. It was the microscope that really opened up venues for us to really understand biology. In fact, we even have a branch of the science that is basically dedicated to the biology of stuff you see under a microscope - microbiology.

With astronomy and biology, the science, such as it was, preceded the invention of the tools that were really needed to study it. With computer science, people were not capable of doing calculations fast enough to really appreciate complexity theory and asymptotes. At low N, N^2 and 2^N can look similar (4^2 == 2^4). The computer both became the application for computer science, as well as revealed the need for this area of study.

One can almost imagine an analogy, where the stars are invisible to the naked eye. Someone invents a telescope, and all of a sudden discovers the full wonders of stars. There is a pretty good chance that astronomy in that world might be called something like "telescope science" since the telescope is so intrinsically linked both to the birth of the area of study as well as its application.

[+] WoodenChair|4 years ago|reply
pg has a good essay partially around this topic called "Hackers and Painters." That essay also lends its name to his book of essays. To quote

> I've never liked the term "computer science." The main reason I don't like it is that there's no such thing. Computer science is a grab bag of tenuously related areas thrown together by an accident of history, like Yugoslavia. At one end you have people who are really mathematicians, but call what they're doing computer science so they can get DARPA grants. In the middle you have people working on something like the natural history of computers-- studying the behavior of algorithms for routing data through networks, for example. And then at the other extreme you have the hackers, who are trying to write interesting software, and for whom computers are just a medium of expression, as concrete is for architects or paint for painters. It's as if mathematicians, physicists, and architects all had to be in the same department.

http://www.paulgraham.com/hp.html

[+] lcuff|4 years ago|reply
The place I heard the quote is the opening statement by Hal Abelson in the course he co-taught with Gerald Sussman and is now part of MIT Open courseware. Not quite sure when it was taught, but the text SICP was written in 1985.... He goes on to say also the word Geometry derived from metron to measure and Gaia, the earth, and that Geometry was developed in Egypt to restore boundaries to land after the annual flooding of the Nile. But it's really the beginning of our efforts to formulate our concepts of space and time.
[+] enriquto|4 years ago|reply
I hate this quotation and find it not only false but sad. It feels as if a physicist would say "physics is not about mass, energy and matter, it is about ODE and PDE."

And yes, astronomy is pretty much about looking at the shadows of sticks under the sun; and this includes more complex "sticks" like telescopes.

[+] DangitBobby|4 years ago|reply
I also disagree with the quote. I think it's fair to say that the goal of Computer Science is to generally improve computing, but the purpose of astronomy is not to generally improve telescopes, nor biology microscopes, etc.
[+] phendrenad2|4 years ago|reply
A lot of people think it is. Computers are a deep well and you could easily subdivide it quite a bit.

1. Math-heavy "CS" that studies algorithms.

2. The study of teams and best practices, maybe "Computer Sociology"

3. The study of tech team and company efficiency, maybe under psychology.

4. Computer Engineering, the study of how to engineer computers

5. The hypothetical science behind that engineering, the science not of algorithms, but of structure and design of computers themselves

[+] bmitc|4 years ago|reply
And calculus has nothing to do with pebbles or counting. So what?

Also, isn’t it easiest to think of a computer as an abstract concept that could both represent a physical device and the abstract computer? Computation needs a computer, whether real or abstract.

Lastly, I think science is the more “wrong” word in the name.

[+] jhgb|4 years ago|reply
> And calculus has nothing to do with pebbles or counting. So what?

Coincidentally, in my native tongue, we regularly don't use "calculus" as a term for mathematical analysis any more than we use "computer science" for informatics.

[+] dimitrios1|4 years ago|reply
This quote, regardless of its origin, has been used many times in the past in similar forms, and in different contexts, and is quite useful. Another example: geometry is not about compasses and straight edges anymore than computer science is about computers.
[+] mjul|4 years ago|reply
This is straight from the school of Peter Naur.

He called it datalogy, the science of the nature and the use of data.

See Peter Naur: “The Science of Datalogy”, Communications of the ACM, July 1966.

https://dl.acm.org/doi/10.1145/365719.366510

Incidentally, he became the first professor of datalogy in Denmark at the University of Copenhagen, founding DIKU, the Institute of Datalogy.

[+] fouc|4 years ago|reply
Datalogy seems like a bad name especially now in the era of "Big Data" & "Data Scientists"..

Maybe Computology would be a better name..