292 comments

[ 2.8 ms ] story [ 321 ms ] thread
Dijkstra, to whom that quote is often attributed, preferred to call it "Computing Science" as it is the science of computing.
Now that you've said it, I realized that's how we say it in portuguese (computing science not computer science).
Would you please provide the native Portuguese words? Like others, I'm interested to know what they are.
Ciência da computação = "science of+the computing" = computing science
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.
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

This is what CS should be. But academic CS is full of people who really wanted to be in the math department but aren't quite bright enough to make the cut.

So they cargo cult CS into a sort of weird pure/applied-ish math hybrid full of contingent generalisations like Big O and debatable abstraction traditions - not least the idea of provability, which only applies to conceptually self-contained micro-problems and is a much harder sell for big complex systems.

The engineering track - including the theory of how to design systems so they actually work, are easy to use, and are maintainable - is underrepresented.

It's technically not even a science. It's in the realm of logic and maths. After all we don't call algebra a science, why does computing all of sudden need the word?

So to some it all up: computer science is neither about computers nor is it a science.

This reminds me of Holy Roman Empire, it's neither Holy nor Roman nor it's an Empire.
Defining a thing by what it's not. Now that is a science unto itself.
It's true that for some time now "science" has been used almost exclusively for disciplines that make use of experimental methodologies, but in earlier usage it just meant roughly "the process of creating knowledge." The German "Wissenschaft" (which is normally how "science" is translated) is closer to the older meaning (though I'm not fluent in German, so I'm just going off what I've been told).
But the inconsistency still exists regardless of the historical etymology.

Math is not a science. A mathematician is Not a scientist. Why is computing a science?

Logic, Ethics, and Aesthetics are the three normative sciences. Mathematics falls comfortably within the domain of logic, and thus mathematics is a scientific enterprise. Computing science is the subset of the subset that deals with getting actual computable results.
Did you just group Logic and aesthetics together into one thing?

Beauty and ethics are subjective. Logic is not.

Either way following this definition of "normative science" neither logic nor computer science nor math goes under it: https://en.wikipedia.org/wiki/Normative_science

The reason is because this definition mentions the notion of preferred outcome. Logic and Math and computer science do not deal with "preferred outcomes" these fields are all just axioms and the consequences resulting from said axioms preferred or not.

Pedantry aside, nobody considers a "mathematician" to be a "scientist" when using the terms as they are commonly used in English. This is a total inconsistency.

I’m using Peirce’s definition of the normative sciences[1]. As is not uncommon in English, the same words or phrases can denote different concepts and the wiki link you shared is a case in point.

[1] https://www.isko.org/cyclo/peirce

Feels arbitrary. You don't group oil painting with mechanical engineering why group Math with Beauty?

This isko organization... if they do indeed follow pierce is incredibly strange. Case in point: https://www.isko.org/cyclo/peirce1.jpg

Philosophy is under mathematics which is not under logic? Philosophy is like literature it is entirely a separate category and logic isn't even mentioned in his arbitrary grouping.

Well I'm not sure when the common usage of "science" changed, but it's possible that when "computer science" was coined in the 1950s [1], the older usage was still at least widely understood. Perhaps given the present day importance of the discipline that's stuck with an outdated name, we can return the the older usage which is IMO better.

[1] https://books.google.com/ngrams/graph?content=computer+scien...

I'm curious how did mathematics miss out on the word "science." The meaning of the word "scientist" is consistent with how it's not ascribed to a mathematician as mathematicians don't do anything related to the scientific method.

The thing is you stated that around this time the term "science" was more broad and just meant acquiring knowledge... how come "science" wasn't applied to mathematicians? Technically, according to what you stated, the definition was broad enough to apply to mathematicians.

I suppose if we call it computer science, then perhaps all the other forms of science should really be called "reverse engineering" (especially biology.)
Biology is consistent with science in the sense that there exists people called scientists in biology that do experiments utilizing the scientific method.

In math everything is purely theoretical conjecture. No hypothesizes, no testing, no observation, just derivations of theorems from axioms. Same with "Computer Science" it's all logic games.

That's why mathematicians are not known as scientists. For computing, I believe the term "computer science" was likely mistakenly coined by someone who didn't know the full extent of the word "science."

Modern math is more abstract.

Old math, like the one from primary school, was more inspired on physical phenomena and interactions with previous things.

We need more "clever guesses"(lets see what happens if A is B because C) and building up of theories in exercises. But that would not be rigourus...

> In math everything is purely theoretical conjecture. No hypothesizes, no testing, no observation, just derivations of theorems from axioms.

Sorry, no. Your statement is quite ignorant of how mathematics works, and how mathematicians create new theorems and proofs - your description is actually backwards.

Proofs often use axioms, but it's rare that somebody starts with a list of axioms and extends them to a higher-order theorem in a backwards fashion like some Prolog program.

In advanced pure math (ie. analysis), we usually start with a novel conceptual diagram (hypothesis) and decide which fields and axioms apply, so it's very creative. The language of mathematics is used to express original ideas that usually spring from imagination.

Some of the scenes in "Good Will Hunting" are pretty accurate, including the hallway blackboard, mirror and "flaming proof" scenes.

> Same with "Computer Science" it's all logic games.

Unlike math, it's domain related applications though. What are databases, codecs, regexes or neural nets - abstractions or concrete tools for specific uses? It's not all platonic.

Domain related applications aren't what's studied by "Computer Scientists." You will note that most people who do "domain related" applications call them selves Software developers, Software engineers, etc. etc.

If someone finds themselves calling themselves "Computer scientist" they are indeed usually exclusively studying the logic game.

So what the hell is CS about ?
Handling and processing of informations. This includes computing and algorithms.
Is astronomy the science of telescopes?
Algorithms, Discrete Mathematics, Mathematical Logic, Formal Languages, Theory of Computation ...

Basically it's a subset of Mathematics.

It's about computing, not about computers.
Algorithms and data structures.
Using computational tools to solve problems.
(comment deleted)
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)

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.
I feel an analogous pain on the flip side of interviewing! I would kill for a job that lets me exercise some of these skills, rather than the brain rot of a typical software job which doesn't demand that one thinks too deeply about things.
React re-rendering logic requires one to think plenty deep.
Of course, there's interesting work to be done at all levels of the stack. However, not every company will allocate time for solving frequently-encountered problems with creative solutions. Often, it's "ok, what's the minimum amount of time we can spend to fix this problem *right now*?", rather than "how can we make sure we don't have to re-solve this problem again ten more times in the future?"

Not me, but a friend described a whole team of engineers at his company hired to put out the fires caused by using database software that is a poor fit for the application, rather than biting the bullet and either 1) performing a migration or 2) rolling their own solution.

I think the only way to do this might be founding your own company and building your own product in Forth and Lisp.
I wish my colleagues would appreciate the beauty of abstraction and PL theory as much as you do. It seems they actively resist any effort in that direction.
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.
For me learning Haskell has been a great way to expose myself to things that were previously "unknown unknowns". I do a mix of coding, for intuition, and reading papers, for theoretical context. The papers written by SPJ et al in the 1990-2000s give a remarkably clear history of how certain functional programming concepts jumped the gap from CS theory to practical implementation in Haskell.

Just as assembly gives as close to a "bare metal" view of hardware as many of us will ever come, languages like Haskell and Lisp give a "bare metal" view of CS theory.

Seeing SPJ refreshed very fond memories for me :-).

I accidentally stumbled onto Haskell in my masters course. On the first day at university I attended a trial class of functional programming[1] course and instantly liked the way professor taught. However, I didn't take the course then and forgot all about it. The next semester I took compilers course and approached that professor for my masters thesis. During a meeting he gave me couple of options one of which was in functional programming domain. This time I took the plunge and went all in. Took the FP course and the professor who taught FP became my thesis advisor. The next two years were the most intense and intellectually satisfying years of my life. Not only did I learn Haskell but also built a compiler for it. I still get goosebumps remembering the rollercoaster ride I had in those two years.

During all that, the book by SPJ [2] became my constant companion. The book was actually out of print but my advisor had a book that was signed by SPJ himself :-). And I promptly photocopied it so I have it with me even to this day.

Suffice to say Haskell, lambda calculus along with SPJ and my advisor have had a lasting (and continue to) influence my life.

[1] https://www.cse.iitb.ac.in/~as/fpcourse/fpcourse.html

[2] https://www.microsoft.com/en-us/research/wp-content/uploads/...

Thanks! this looks really good. The fact that you did your programming class in IIT Bombay further motivates to work hard for my "dreams".
I suggest a combination of theory (videos/books/papers) and practice.

For practice; I highly recommend learning Haskell. If you are new to functional programming then learning Haskell is challenging and frustrating but as with any new topic the key is to not give up but keep probing. A good recent development is lot of mainstream languages are beginning to include functional paradigms such as lambda, closures etc., For example Java introduced lambda expressions, Javascript has had them for a while now. But from a first-principles stand point Haskell is as good as it gets so please do learn and code in Haskell if not at work then at least side projects.

For theory I've found following material super useful.

0. This[0] is an incredibly awesome lecture where Phil Wadler takes us on a whirlwind tour of computer science. He talks us through different foundational structures on which almost everything (hardware and software) about computer science is built. I watch this lecture once every few months :-). It helps you build up context and ground various topics.

1. The one and only SICP. Book[1] and lectures[2].

2. Automata theory[3]. This isn't an easy course but gets to the heart of the matter i.e., the meaning of "function" and what how can it be mechanically "computed".

3. Category Theory is where lot of active research is happening in CS theory. This is a very good lecture series[4]. The pace may seem a bit meandering but don't be put off. Bartosz is a gifted teacher and works incredibly hard to disseminate knowledge. For evidence just look at a recent post on HN[5] about an article he published.

[0] https://www.youtube.com/watch?v=aeRVdYN6fE8

[1] https://mitpress.mit.edu/sites/default/files/sicp/full-text/...

[2] https://www.youtube.com/watch?v=-J_xL4IGhJA&list=PLE18841CAB...

[3] http://ce.sharif.edu/courses/94-95/1/ce414-2/resources/root/...

[4] https://www.youtube.com/watch?v=I8LbkfSSR58&list=PLbgaMIhjbm...

[5] https://news.ycombinator.com/item?id=26991300

That post is by a completely different Bartosz.
Darn! All these days I thought they were the same! Thanks for correcting me!
You could find a MOOC (Massive open online course) for pretty much any programming language you want. Here's a pretty good one for Haskell.

https://haskell.mooc.fi

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.
I really dislike Go, but its creator(s) is more than familiar with language theory, and it is absurd to say otherwise.
I didn't read the GP as making a statement about the _creators_ of Go, but rather about its target users. And Go is explicitly targeted at "Programmers working at Google [who usually] are early in their careers and are most familiar with procedural languages, particularly from the C family."[0] If Google's interviews gateted on the sort of programming language questions the GP mentioned, then Go's target users would have been very different, and Go would likely be a different (better? Worse?) language.

[0]:https://talks.golang.org/2012/splash.article

> 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 is a non-sequitor. Google hires a lot of PL PhDs (I'm one of them). And for relevant teams there is a "Domain Expertise" portion of the interview. And many of the people working on the languages and frameworks you mention have such background.

You don't like these systems. That's fine. But "Google would do it all differently if they just hired some PL PhDs" is just false.

I know someone that was on the Dart team. He's a PLT expert. In fact that's rather understating it. Don't mistake some pragmatic choices in language designs targeted for business use with ignorance.
(comment deleted)
(comment deleted)
Dijkstra hand-wrote a paper titled "On the cruelty of really teaching computer science" where he argues that we should think about CS more as pure reasoning like mathematics than something tied to a machine.

https://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Whenever this comes up I feel compelled to say that Dijkstra has a huge blind spot with this, that perhaps is more obvious with decades of hindsight. He advocates formal proof for a functional specification of a program to be part and parcel of writing it, and note that what he refers to by formal proof is ambiguous.

If he means the informal proofs mathematicians write and publish all day long, these actually include a lot of handwaving, metaphors, generalizations, and leaps of logic that the reader is presumed to be expert enough to fill-in-the-blanks. So for example, Wiles had a non-trivial bug in his proof of Fermat's last theorem that was thankfully non-fatal and fixable.

On the other hand, if Dijkstra was referring to formal proof, then without a proof assistant one still easily makes mistakes in it, and even with a proof assistant the task is so immensely tedious even now that even mathematicians don't do it, so why would programmers of non-safety-critical apps?[1] And another blind spot is that no formal proof will help you if your specification is wrong, and only give you false confidence: you can't navigate the world without errors if the only geometry you know is Euclidean.

[1]: of course, note that many people are trying to develop good enough proof assistants that mathematicians would feel add more value than remove via tedium. And also note that formal methods are being employed when the stakes are high enough; e.g. formal verification is performed on processor circuits.

One of my Uni professors was working on Proof-carrying code *(https://en.wikipedia.org/wiki/Proof-carrying_code). I got a cursory involvement. Although I agree with you, the fact that there is a way forward and is entirely based in mathematics (on the formal side) makes me also agreeable with OP. I don't see a contradiction. If you talk about the more informal side- the way something is used does not necessarily define its nature.
Indeed, I don't disagree with OP. I just felt compelled to point major problems with Dijkstra's argument, because it's somewhat generally known yet its very real shortcomings aren't as widely known.

The general response seems to be that "yeah, ideally we should be more mathematically rigorous with programs if we have time and mathematical expertise", but few have sufficient exposure to formal methods to understand that it's far from the panacea the memo makes it out to be and there are more reasons not to do it than just time and expertise.

There is a way forward, but it is tedious as all hell. I love formal methods. I spent years in grad school working in it. But the truth is that formal reasoning struggles to scale to interesting programs, especially if you have to consider open programs, and is utterly incoherent for most software engineers. You can compare something like symbolic execution, which seems amazingly elegant and powerful, with coverage guided fuzzing, which is hacky and random. Coverage guided fuzzing eats symbolic execution for lunch.
There's a lot more in that paper than an argument for formal proofs. In fact, formal proofs are more of an incidental idea than the main point of Dijkstra's argument.

For example, he suggests that we need to understand computer science as a "radical novelty" and stop applying inapt analogies that come from thinking about this like a gradual evolution of mechanical things.

Inapt mechanical metaphors include software "tools" and "workbenches" that require "maintenance". Getting stuck with bad industrial analogies is "medieval thinking" that prevents real understanding.

Yes, he advocates that we need to view it as a "radical novelty" and critiques existing methods, but the only better method he puts forth is with formal proofs; it's not incidental, it's the reason for calling existing methods backward and insufficient for managing programs.

> it gives us a clear indication where to locate computing science on the world map of intellectual disciplines: in the direction of formal mathematics and applied logic, but ultimately far beyond where those are now, for computing science is interested in effective use of formal methods and on a much, much larger scale than we have witnessed so far.

I'm not too interested in arguing point-by-point the other arguments for viewing them as a "radical novelty", but even mathematics deal in methods that require maintenance (e.g. calculus -> analysis), and half of it is coming up with the correct definitions (metaphors). Is it all that medieval? (Ironically, the medievalist recognizes that logic made great progress in that era, then took a break in the Renaissance until Frege and friends)

One of my favorite professors started the year by telling us that the only equipment we need to work on computer science problems is a pencil and some paper.
If my memory from many years ago serves, I believe the introduction in SICP says “computer science is not a science and has little to do with computers.”
"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

Interesting enough, being a Math theacher doesnt imply being a good calculator.

I saw this happen with my Math Teacher Hero and with common teachers.

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

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.

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

That is true but in french at least "informatique" means both "computer science" (for example you can study "informatique" at university) and "anything related to computers". "What's your line of work?": a DBA, sysadmin, software developer, computer scientist, etc. may all answer simply "informatique". A series of books for beginners about Excel, Word, Internet, etc. may be called "Collection informatique".

Or if, say, you have issues delivering something on time to a client (no matter the domain), you can always invoke a "bug informatique".

So "informatique" means and is used, at least in french, much, much, much more than just "computer science".

In a way it's even worse than in english: at least "science" is added to "computer" in english and it's kinda self-explanatory. In french everything is in the same basket: from someone doing its Ph.D. to someone having a lesson to learn how to use the mouse... It's all "informatique".

Same applies in spanish (at least were I live)
In Germany, anything computer-related is subsumed under "Informatik".

- Students learning to use MS Office in school? Informatik.

- People fixing printers and replacing your harddrive? Informatik.

- System administrators managing a datacenter? Informatik.

- Data scientist applying deep learning techiques? Informatik.

- University professor trying to prove P==NP? Informatik.

Honestly, I envy the Americans for their destinction between "computer science" (CS) and "information technology" (IT). Even if computer science is not really about computers.

It depends on the context. A university degree in Informatik will obviously not be about using MS Office. But 7th grade Informatik is. 10th grade Informatik introduced programming at my school. A trained job “Fachinformatiker für Systemadministration” will be about sysadmin work.
To 90% of the population, it's not "obvious" or we would not need T-Shirts labeled "I will not fix your computer for you".

Even a common programmer does not use any actual "computer science" 99% of the time and your typical sysadmin type probably never knew any. So it's simply wrong and confusing to use the same word for it.

In Finnish it's "tietojenkäsittelytiede" which consists of:

* "tieto": knowledge but also sometimes information or even data. Computer is "tietokone", knowledge machine (IMO "tieto" one of the worst words in Finnish due to the too broad scope which is why we also say "informaatio" and "data" these days)

* "käsittely": processing or handling

* "tiede": science

Wait a moment, the casual etimology of that word suggests (at least in spanish) a profession or a science, not "the sum of math and information" per se.

That same suffix, -atica, is also applied in "the mathematic" as the person (-atic) and "The Mathematics" as the science (el Matemático, las Matemáticas).

So lets say that you are a guy from two centuries ago. Someone tells you "this guy has studied informatics, he is the Informatic of the town". That would sound as if he "is versed in the study of information" rather than Computing.

Also, in Spain, instead of "the Computer" (the thing that computes, calculates), they call it "the Order-ator" (Ordenador, the thing that brings order).

Hmm, where are you from? I'm from norther Spain and those nouns don't suggest anything related to science for me. "El matemático" may be, but just because we associate it with a theoretical field, "Informático" is a practitioner of "Informática", as "Químico" is from "Química".
The computer term in Spain came from the French "ordinateur".

Ordenar has two meanings in Spanish:

- To command someone

- To sort

Both are related. In order to sort some set, you need order. And rules. Thus, "ordenador" has a lot of sense.

But if I was some guy from the 50's I'd translate computer science as "informática electrónica". (Electronic Informatics).

The original name of the university course in Italy was Scienze dell'Informazione, Information Sciences. I remember that my relatives were surprised and they were asking me if I was really about to study journalism (news "informano" / inform people in Italian.) I had to explain that it was about computers. Informatics, not journalism.
It used to be called Data Processing. I guess that confused people? Information Services was used for people who didn't know what data was. Before the GUI it was a lot harder.
... and nevertheless it takes a lot of time to realize that it is not about computers.

But I agree, the European phrases are more honest to the content.

In Romania the top higher education institution in CS is called "Automatics" emphasizing the applications.
In my country that would be related to "automatismos". Thus, industrial automatization, control engineering, automatic theorem demonstrations and so on. Self regulated machines.
In Swedish it is called "datavetenskap" i.e. "data science".
These words overlap with IT too much. I’m suspicious that they refer to Computer Science specifically, but please prove me wrong.

I always find it slightly irritating that my learned peers from the Information Technology team — they who rigorously study the practice of managing Jira installations, Windows 10 upgrades, finite Active Directory domains, and the long term effects of CISCO certifications — have land grabbed the English word Information.

> In Europe, "Computer Science" is translated with a word that is a mix of "information" and "mathematics".

I don't think the "ics" in Informatics comes from "mathematics". It is more general: Aesthetics, Economics, Genetics, Linguistics, Physics, Statistics. It just means "the study of".

This wikipedia article is not very accurate. In Hungary "informatika" is usually used only for primary/secondary school subjects covering every-day IT tasks like document editing, typing, or sending email. The most commonly used names for CS courses are "számításelmélet" or "számítástudomány" which translate as "theory of computing" and "science of computing".
I would add that what is basically Computer Science curriculum is called “Programtervező Informatika” (roughly software engineering/modeling informatics~=compsci) while what is generally the same as Computer Science Engineering is called “Mérnökinformatika” (roughly engineering informatics).

But you are right that as a job description, “informatikus” is a more basic position than “programozó”=developer/software engineer, etc.

In Japanese, "computer science" is directly translated as 計算機科学, which basically means "calculator science" - but the phrase is unusual, very rarely used.

Instead, more commonly seen are 情報工学 ("information engineering") or 情報科学 ("information science") - which is equivalent in meaning to "informatics".

There are at least four more-or-less equivalent Korean terms in common use. "컴퓨터 과학" (lit. computer science) and "컴퓨터 공학" (lit. computer engineering) is the most popular and frequently seen in universities. "전산학" (lit. [electronic] computing science) is less common but preferred by several prominent universities [1]. "정보과학" (lit. information science) is substantially unpopular than both but can be seen for example in several academic institutes like 한국정보과학회 (the Korean Institute of Information Scientists and Engineers).

[1] There was even a significant attempt in 2000 to change the name of KAIST [2] CS department from "전산학" to "컴퓨터 과학" or similar. The attempt was unsuccessful and to this day its name remains "전산학(부)". Prof. Kwanggeun Yi has written a public letter [3] against the change.

[2] https://www.kaist.ac.kr/en/

[3] http://ropas.snu.ac.kr/~kwang/memo/name.html

Computer science is the mathematics behind counting.

You count the number of "swap" operations in insertion sort, quicksort, or merge sort. You count the number of "memory" operations. You count the number of bytes used.

When precise counts are difficult, you learn big-O notation to estimate how counts change as variable grow. Etc. etc. etc.

Computer science is much more like Mathematics than Physics. It feels wrong calling "computer science" a science, in the same sense of calling "Mathematics" science.
I would consider what you described to be "algorithms" (or "complexity theory"), a particular sub-area of computer science. There are quite a few other areas of CS.

The ACM organizes a number of SIGs (Special Interest Groups), each with their own (often several) conferences [1]. Some of the more well-known SIGs include SIGPLAN (Programming Languages), SIGGRAPH (Computer Graphics), and SIGLOG (Logic and Computation). What you described probably falls best under SIGACT (Algorithms and Computation Theory).

> the mathematics behind counting.

Traditionally, this is combinatorics, not any particular part of computer science. Complexity theory concerns itself with specifically counting the amount of resources used by a formal process.

[1] https://www.acm.org/special-interest-groups/alphabetical-lis...

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

English is not my primary language so correct me if I’m wrong. But didn’t the word "computer" have another meaning before the physical computer machine? Otherwise I would agree it should be renamed to information science.
A “computer” is something that “computes”, morphologically.

But even so, it would better be called “computation science”.

It is called “informatica” in Dutch, in any case.

It referred to person who does computations by hand and/or abacus.
Not about computers but the science of what is possible to do using a computer and thus understandably referred to as "computer science". It rolls off the tongue easier than "computing science"

  Computer Science ~ physicists
  Computer Engineering ~ electrical engineers
  Computer Technician ~ electricians
But CS is used for all three.
(comment deleted)
As someone who hasn't taken CS classes, I was surprised to learn that what I'd assumed was CS is classified as Electrical Engineering (Designing processors, ICs etc), and Physics (concepts like reversible computing, quantum computing, the works of Turing, Feynman, and Shannon.) I still don't have a grasp on what characterizes CS.
Why would that be surprising? Processors and ICs contain a lot of analog electronics.
> 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.

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.

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

As per Paul Halmos one can’t really write a good calculus book as taught in US schools, since there is no single subject corresponding to calculus. One needs to study series, (and other subjects I can’t really list now).

I’m not sure which of his books I read it in..

I was thoroughly confused when I found out how the US high school math curriculum is structured. To this day I can't remember what the hell is "precalculus". In my country I had separate textbooks on: functions; equations and inequalities; sequences and series; planimetry; stereometry; goniometry; analytical geometry; combinatorics, statistics and probability; complex numbers; mathematical analysis. Every time I refresh my knowledge on what "precalculus" is I promptly forget it again because it doesn't correspond to any of the fields that we were taught and that I'm used to think in terms of.
I find this article to be inspiring.

I’m envious of those who have had the opportunity to study computer science and earn a recognised degree for that investment.

I’m self educated and continuously study computer science. It is the one specific subject that I long to study full-time around similar thinking individuals.

I’m fortunate to have had a successful career as a software engineer, but that’s just not enough for me. I aspire to apply my mind for reasons other then a salary.

I don't think you need to be envious. The degree isn't important as the learning and doing science is rewarding in and of itself, even on your own. You're already applying your mind.
You can flip this around though. If the math and theory wasn't relevant to real world computers, we wouldn't consider it part of computer science. It's just be some abstract mathematics.
Yes, but the definition of "computer" in this context is much more expansive than the hunks of silicon we're using to converse right now. The Turing machine was meant to capture the basic set of actions any human could in principle perform, made amenable for formal inquiry and algorithmic specification.

In particular, the computer programs we typically develop are designed to automate some process that a human would have otherwise done. We can study those processes -- and spaces of such processes -- independently of the executive agent that ultimately performs those processes.

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.

I've always interpreted the statement to mean "theoretical CS is the only real CS: everything else is just glorified software engineering."
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.
Seeing as the Danish "CS" degree deliberately[1] wasn't named "Computer Science", but "Datalogi"[2] (which translates rather directly to "Datalogy"), and since it happened in the sixties, I somehow assumed this article would end up mentioning Peter Naur in some way.

[1]: http://www.naur.com/comp/c4-3.html [2]: http://www.naur.com/comp/c4-4.html

We also now have an education the is more equivalent to a US computer science degree: Software Engineer.

I think the US degrees are more focused on practicality than the Danish version. Basically the Danish universities will teach basic programming in one or two languages and the expect you to be smart enough to figure out the rest.

It’s not that one education is better than the other, but given that I didn’t end up doing reasearch of heavy computational work, I might have preferred a US education.

I'd expect "engineer" (ingeniør) to be a protected title in Denmark just like Sweden, which requires a math heavy university programme?

So the way to call yourself a software engineer without a math-education is to move to a country like US, making even the "Software Engineer"-title problematic.

It is a protected title, and yes, it math heavy, at least the first couple of years.