6 ms·
Of course CS is a (formal) science.
by eng_monkey 11y ago
Of course CS is a (formal) science.
- rdtsc 11y agoIs it though? It can certainly be formal. But so is logic, so is mathemetics. I am not sure there is a clear consensus if math is a science. I can go with engineering (but licensed engineers might object to that), art or craft perhaps.
- TeMPOraL 11y agoCS is a funny beast. It's the first time we're seriously dealing with machines executing abstract math directly. There's nothing to study via experimentation - computing is pure math, and hardware stuff is pure engineering (since computation is not tied to particular branch of physics - you can make computing run on anything, not just electrons and photons). It's best to conceptually split the two, if we want to stay with the original terminology. But I guess now it's kind of too late - it's the definition of the word 'science' that will get relaxed.
- mpweiher 11y ago> There's nothing to study via experimentation There isn't??
- kevinwang 11y agoWhat part of computer science is experimentation?
- deleted 11y ago[deleted]
- mpweiher 11y agoI am tempted to write: "what part isn't?" Seriously, just about everything we do in computer science is experimentation, at least if it involves...physical computers. Every time we run a program, we run an experiment. At least if we have some expectation of what we want the program to do. Every time we write a test, or run a test suite, we are running an experiment. Every time we implement some sort of abstraction, every time we vary a parameter, every time we optimize a program, we are running experiments. At least if we're doing it right. If you're not doing experiments, I have a hard time categorizing what you are doing as computer science.
- ggreer 11y agoYou're describing software engineering, not computer science. CS is big-O, Chomsky hierarchy, finite automata, type theory, and computability classes. It's the study of algorithms & data structures, not their implementations. In other words, CS is a branch of math.
- mpweiher 11y agoYou're describing theoretical computer science: Theoretical computer science is a division or subset of general computer science and mathematics that focuses on more abstract or mathematical aspects of computing and includes the theory of computation. https://en.wikipedia.org/wiki/Theoretical_computer_science https://en.wikipedia.org/wiki/Theoretical_computer_science
- TeMPOraL 11y agoThat's not the kind of experiment I meant. In physics, we do experiments because we don't know the rules of the natural world. That's the only way we can learn them. In CS/programming, if we're doing any experiments, they're done because we're too stupid to infer the right answer beforehand. Insofar as you're dealing with the theoretical part of the problem, you shouldn't need any experiments, because the results are purely mathematic and should be perfectly predictable. And if you're doing hardware experiments, it's not computer science either - that's electrical engineering or applied physics. Whatever other tests you may be doing to save some time are still the engineering type. The point is, computer science doesn't have any area in which it could use experiments for discovery. It's fair to say then, that it's not really a science. (It's also fair to point out that the line between science and engineering is getting blurry nowadays.)
- mpweiher 11y ago> In CS/programming, if we're doing any experiments, they're > done because we're too stupid to infer the right answer That's the same as for physics. In theory, there is no difference between theory and practice. In practice, there is. More specifically, for CS: what you're describing is an alternate universe where the halting problem[1] doesn't exist, or rather has been solved. In short, there is no way to predict, in the general case, whether a program will terminate or not, other than running it (= doing the experiment). More generally, if you have a mechanism that predicts with perfect accuracy what the output of my program is, more quickly than running the program, then I will just call that new mechanism "the program", and use that instead of the original program. And then you're back to running the program to find out what it does. UPDATE: To me, this is a (if not THE) fundamental results of theoretical computer science: a precise description of its limits. And since this is an article by Knuth: "Beware of bugs in the above code; I have only proved it correct, not tried it"[2] [1] https://en.wikipedia.org/wiki/Halting_problem https://en.wikipedia.org/wiki/Halting_problem [2] http://www-cs-faculty.stanford.edu/~uno/faq.html http://www-cs-faculty.stanford.edu/~uno/faq.html
- VLM 11y agoThis is stretching it, but if you accept automata theory as a part of CS (not very controversial) and accept cellular automata like the game of life as a branch of automata theory (not very controversial) and accept some research methods involving experimentation and observation of the behavior of random seeds as part of cellular automata theory (not very controversial) then the very extended argument stretches from hard core CS to 'stick a random seed in the CA, run it, and ta da, we observe the un predicted existence of gliders!'. Its stretching it but I think its acceptable. I was going to list some formal percolation theory studies in as an applied version of imaginary network routing protocols or could be seen as a very weird emulation of a CA, kinda, but that's probably going way too far. Practical simulation of a specific algo is obviously cheating, but simulation of an abstract concept is maybe not cheaty. Possibly there is, or will be, an analytic topological pure math theory that could be applied to mathematically prove constants currently only discovered by experiment in perc theory. If you're ever bored and want to run some simulations, perc theory is very project euler like in that a short(ish) question quickly results in "I guess I gotta run it and see". Another "stretch the limits" is there is no unclassified explanation of some peculiar corners of some crypto algos. Hard to know if they're truly random, determined by experimental runs against possibly classified cracking techniques, or intentional back doors, or intentional classified design techniques. But relying on military intel classification "we can't rule out experimental methods being used in secret" is kinda cheaty in the spirit of the discussion.
- carapace 11y agoThe interaction of humans with computers.
- majewsky 11y agoI've heard mathematics classified as a "structural science", as opposed to the "natural sciences". Theoretical CS fits into that "structural science" umbrella term very well.
- rdtsc 11y agoOk I can see that. Though I never heard the term "structural science". At least in US I most people talk about Science and Math. Math is explicitly not included in the "Science" category because it is mentioned separately. Otherwise it would be like saying "Engineering and Chemical Engineering".