It's a thing of its own. Used to be called informatics in some countries. Much better name, IMO. There are large parts of computer science that have nothing to do with computers. They're about information and can be applied outside of computers.
I'm with Alan Kay when he says "computer science" used to be an aspiration and eventually became a misnomer. Same with software engineering.
"We need to do away with the myth that computer science is about computers. Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools, it is about how we use them and what we find out when we do."
- Michael R. Fellows, Ian Parberry (1993) "SIGACT trying to get children excited about CS"
Unfortunately, virtually all CS programs have become Software Engineering programs save for their names. The actually thinking and theory behind it is often more of a side note as educational institutions focus on teaching students how to use specific tools that are popular at the time, leading to many people having a good idea of these specific tools, but no idea on their actual design implications or how anybody actually realized how to do these things.
Sadly, if you want to learn proper theory (what I consider to be CS) you have to get lucky and find a mathematics program that has electives so you can focus on things like discrete mathematics and information theory.
Mostly, yes, especially as an undergrad. A science forms and tests hypotheses, usually about natural phenomena. I only had a few classes in CS where we tested any hypotheses or performed any real experiments. Most of it was design and learn by rote, and not experimentation.
Theoretic Computer Science is pretty sciencey but is testing things engineers built and often testing using math rather than experiment. Algorithms and data structures use the result of some science, but don’t teach or perform much science normally. Graphics involves a lot of cross-discipline physics and math, but in practice is teaching techniques and APIs, and doing very little scientific experimentation.
Machine learning may be bringing more science into computer science. People are certainly running lots of experiments in ML today trying to figure out how neural networks behave. A lot of it is still engineering too, of course, but there is some science in there.
I think you were unfortunately downvoted. I think you're mostly accurate, but I think all sciences at the undergrad level don't teach how to do science. They teach about science. Yes, I know that there are labs, but that's rarely the emphasis. A physics and chemistry student is mostly learning things that other people have discovered and figured out. It's not until the graduate level that someone actually starts doing science as opposed to learning about science. And a lot of that is necessary: in order to be a productive scientist in any discipline, there is a lot of background material you need to understand first. The bar of entry to adding to our scientific knowledge is very high.
But, I think it would be good to include more philosophy of science - what does it mean to do science - at the undergrad level.
A physics or chemistry student is learning about empiricism on lab courses, and about how other scientists came-out with their advances. But more importantly, they are mostly studying science itself, not how use it to create practical stuff.
engineering is math too, math is eating everything, oh noes!
but not really, that's software after all. engineering is applied math, so largely software modeling, whereas CS is theoretical work. abstract problems, pure solutions.
It's applied math and applied science. The science informs how to apply the math, since the math is a model of natural phenomena. In fact, most of the math came to engineering via the science.
No, math is math, engineering is engineering, and science is science.
Engineering and science are not math, even though they use math, and engineering is not science, even though it uses science. They are all very different disciplines.
There are certain aspects of computer science that are engineering (i.e. concerned with the building of machines and structures), other that are a part of formal science, others that are a part of experimental science, ect.
It's a thing of its own. Used to be called informatics in some countries. Much better name, IMO. There are large parts of computer science that have nothing to do with computers. They're about information and can be applied outside of computers.
I'm with Alan Kay when he says "computer science" used to be an aspiration and eventually became a misnomer. Same with software engineering.
https://www.youtube.com/watch?v=YyIQKBzIuBY
(Doesn't mean CS and SE are always "worse" than science and engineering. But they are currently very different.)
"We need to do away with the myth that computer science is about computers. Computer science is no more about computers than astronomy is about telescopes, biology is about microscopes or chemistry is about beakers and test tubes. Science is not about tools, it is about how we use them and what we find out when we do."
- Michael R. Fellows, Ian Parberry (1993) "SIGACT trying to get children excited about CS"
Unfortunately, virtually all CS programs have become Software Engineering programs save for their names. The actually thinking and theory behind it is often more of a side note as educational institutions focus on teaching students how to use specific tools that are popular at the time, leading to many people having a good idea of these specific tools, but no idea on their actual design implications or how anybody actually realized how to do these things.
Sadly, if you want to learn proper theory (what I consider to be CS) you have to get lucky and find a mathematics program that has electives so you can focus on things like discrete mathematics and information theory.
> So Computer Science is Engineering?
Mostly, yes, especially as an undergrad. A science forms and tests hypotheses, usually about natural phenomena. I only had a few classes in CS where we tested any hypotheses or performed any real experiments. Most of it was design and learn by rote, and not experimentation.
Theoretic Computer Science is pretty sciencey but is testing things engineers built and often testing using math rather than experiment. Algorithms and data structures use the result of some science, but don’t teach or perform much science normally. Graphics involves a lot of cross-discipline physics and math, but in practice is teaching techniques and APIs, and doing very little scientific experimentation.
Machine learning may be bringing more science into computer science. People are certainly running lots of experiments in ML today trying to figure out how neural networks behave. A lot of it is still engineering too, of course, but there is some science in there.
I think you were unfortunately downvoted. I think you're mostly accurate, but I think all sciences at the undergrad level don't teach how to do science. They teach about science. Yes, I know that there are labs, but that's rarely the emphasis. A physics and chemistry student is mostly learning things that other people have discovered and figured out. It's not until the graduate level that someone actually starts doing science as opposed to learning about science. And a lot of that is necessary: in order to be a productive scientist in any discipline, there is a lot of background material you need to understand first. The bar of entry to adding to our scientific knowledge is very high.
But, I think it would be good to include more philosophy of science - what does it mean to do science - at the undergrad level.
A physics or chemistry student is learning about empiricism on lab courses, and about how other scientists came-out with their advances. But more importantly, they are mostly studying science itself, not how use it to create practical stuff.
2 replies →
There's a good part of Computer Science that's like magic. Unfortunately there's a bad part of Computer Science that's like religion. - Hal Abelson
Some things in CS programs are engineering, other things are philosophy.
Advanced CS work has more to do with psychology and sociology than science and engineering in my experience.
I agree, but I'd say "software engineering" rather than "CS". It's hard to produce software at scale without herding lots of cats.
Care to elaborate?
2 replies →
computer science is math
engineering is math too, math is eating everything, oh noes!
but not really, that's software after all. engineering is applied math, so largely software modeling, whereas CS is theoretical work. abstract problems, pure solutions.
> engineering is applied math
It's applied math and applied science. The science informs how to apply the math, since the math is a model of natural phenomena. In fact, most of the math came to engineering via the science.
1 reply →
No, math is math, engineering is engineering, and science is science.
Engineering and science are not math, even though they use math, and engineering is not science, even though it uses science. They are all very different disciplines.
My response to that: https://www.scott-a-s.com/cs-is-not-math/
There are certain aspects of computer science that are engineering (i.e. concerned with the building of machines and structures), other that are a part of formal science, others that are a part of experimental science, ect.
Well, computer science is all about making stuff.
Only if you're good.