←back to thread

166 points levlaz | 1 comments | | HN request time: 0s | source
Show context
ykonstant ◴[] No.41877090[source]
This is a great article and I especially liked the notion:

>Theoretical physics is highly mathematical, but it aims to explain and predict the real world. Theories that fail at this “explain/predict” task would ultimately be discarded. Analogously, I’d argue that the role of TCS is to explain/predict real-life computing.

as well as the emphasis on the difference between TCS in Europe and the US. I remember from the University of Crete that the professors all spent serious time in the labs coding and testing. Topics like Human-Computer Interaction, Operating Systems Research and lots of Hardware (VLSI etc) were core parts of the theoretical Computer Science research areas. This is why no UoC graduate could graduate without knowledge both in Algorithms and PL theory, for instance, AND circuit design (my experience is from 2002-2007).

I strongly believe that this breadth of concepts is essential to Computer Science, and the narrower emphasis of many US departments (not all) harms both the intellectual foundations and practical employment prospects of the graduate. [I will not debate this point online; I'll be happy to engage in hours long discussion in person]

replies(4): >>41877362 #>>41877761 #>>41878005 #>>41887503 #
ninetyninenine ◴[] No.41877761[source]
> Theoretical physics is highly mathematical, but it aims to explain and predict the real world. Theories that fail at this “explain/predict” task would ultimately be discarded. Analogously, I’d argue that the role of TCS is to explain/predict real-life computing.

No this guy doesn’t get it. He doesn’t understand what science is.

In science nothing can be proven. If I say all swans are white as my hypothesis this statement can never be proven because I can never actually verify that I observed all swans. There may be some swan hidden on earth or in the universe that I haven’t seen. Since the universe is infinite in size I can never confirm ever that I’ve observed all swans.

However if I observe one black swan it means I falsified the entire hypothesis. Thus in science and in reality as we know it nothing can be proven… things can only be falsified.

Math on the other hand is different. Math is all about a made up universe where axioms are known absolutely. It has nothing to do with observation or evidence in the same way science does. Math is an imaginary game we play and in this game it is possible to prove things.

This proof is the domain of mathematics… not science. Physics is a science because it involves gathering evidence and attempting to falsify the hypothesis.

Einstein said it best: “No amount of experimentation can ever prove me right; a single experiment can prove me wrong”

Basically newtons laws of motion are a perfect example of falsification via experimentation with relativity later being confirmed as the more accurate theory that matches more with observation.

So what’s the deal with computer science?

First of all the term already hits the first nomenclature issue. Computer science is ironically not a science. It lives in the same axiomatic based world as mathematics and therefore things can be proven in computer science but not in science itself.

So this nomenclature issue is what’s confusing everyone. The op failed to identify that computer science isn’t actually a freaking science. Physics is a science but computer science isn’t.

So what is computer science? Sorry to say but it’s a math. I mean it’s all axioms and theorems. It’s technically math.

CS is a math in the same way algebra and geometry is math. Physics is a science and it is not a math. It’s a totally orthogonal comparison.

Your job as programmers is more like applied math. It’s completely orthogonal to the whole topic but People often get this mixed up. They start thinking that because programming is applied computer science then computer science itself is not a math.

Applied math ironically isn’t really math in the same way writing isn’t a pencil. Yes you use a pencil to write but they are not the same. Same thing with computer science and programming.

replies(9): >>41877794 #>>41878097 #>>41879333 #>>41879798 #>>41880294 #>>41880480 #>>41882001 #>>41882307 #>>41883224 #
lisper ◴[] No.41882001[source]
> If I say all swans are white as my hypothesis

That fails as a scientific hypothesis on purely structural grounds, before you have made any observations. Scientific hypotheses have to explain something. It's not enough to say that all swans are white, you have to say why. "All swans are white" is an observation, not a (scientific) hypothesis.

An example of a legitimate scientific hypothesis is that all swans are white because being white provides swans with some benefit in terms of reproductive fitness (and then you have to go on to say what that benefit is). You can then go on to predict that there might be non-white swans, but that these are expected to be rare because evolutionary pressure would drive non-whiteness out of the gene pool. Or something like that. But "all swans are white" by itself is a non-starter as a scientific hypothesis.

replies(2): >>41882327 #>>41885304 #
ninetyninenine ◴[] No.41882327[source]
I'm talking at a very technical level ignoring all the cultural stuff around the scientific method like "peer review" or explaining "why"

Basically a hypothesis is a statement that can be true or false. That's it.

The reason I refer to science in this very technical way is because the we are tackling the problem of classification. We are asking the question what is computer science? So to answer the question we need to use very technical definitions where the boundaries of categorization are extremely clear.

Again, at a very technical level a hypothesis is simply a statement that is true or false.

replies(3): >>41882469 #>>41882489 #>>41886481 #
Scarblac ◴[] No.41886481[source]
Yes, it's a statement thats true or false.

But it must also be useful. We don't do science just to enumerate trivial true statements, after all.

To be useful it needs to predict things.

And when it's falsified (say your hypothesis explained why swans are white, but you found a black one), it doesn't get discarded immediately. It's still useful until someone comes up with a better hypothesis that fits with white swans and the occasional black swan.

replies(1): >>41888087 #
1. ninetyninenine ◴[] No.41888087[source]
> But it must also be useful. We don't do science just to enumerate trivial true statements, after all.

Sure it can be useful. Think of it like a mathematical theorem. What’s the point of the theorem unless it’s useful? Why would a book define a theorem if it wasn’t useful?

So theorems in math need to be useful. But such a quality is human and fuzzy in nature. What does it mean to be useful? And everyone has a different definition of useful. That’s why the definition of a theorem doesn’t include the term useful Even though generally speaking it’s a bit of a requirement if an author were to define a theorem in a book.

The definition for hypothesis that I use follows the exact same process. It is a rigorous technical definition that we are using for rigorous and detailed categorization of another term: “Theoretical computer science”.

Thus in the face of such a task I use the most rigorous definition of hypothesis available. I discard fuzzy terms like usefulness or expositions into “why” to determine categorization.

The statistical hypothesis which defines the term hypothesis in a very technical way. In fact, in statistics, hypothesis testing is basically the technical definition of the scientific method. Following this definition we can clearly see the boundaries of things more clearly.

Theoretical computer science does not involve hypothesis testing. It is mathematics because it involves axioms and theorems.