“Computer science” is sometimes called “theoretical computer science”. It is a branch of mathematics that includes such things as computability and algorithmics.
You seem to be talking about computer engineering, which is a quite different discipline.
This argument over definitions comes up frequently, but it doesn’t seem to correspond to any useful distinction in reality. Most of the students who enter computer science programs (including me) end up mainly studying and doing programming (computer engineering), not theoretical computer science. The only reason to maintain a distinction is status—some people think theoretical computer science is higher-status than computer engineering. I don’t, so the whole thing looks really silly to me.
This argument over definitions comes up frequently, but it doesn’t seem to correspond to any useful distinction in reality
There are three different things in reality that we’re talking about:
Theoretical computer science (P vs. NP)
Computer engineering (hardware; related to electrical engineering)
So-called software engineering (programming)
These are very different things and it’s useful to have different names for them. David said “computer science” but was clearly talking about 2 or 3, not 1, so I corrected him.
Most of the students who enter computer science programs (including me) end up mainly studying and doing programming (computer engineering), not theoretical computer science.
There are study programs in some universities that are called CS but really teach programming. They are misnamed. There are many other CS programs that really do teach CS, and very little programming except for the minimal skills needed in algorithmics courses. The CS program I’m in is one (at Hebrew University of Jerusalem) - there’s almost no programming outside electives, and even those are a joke, it’s not a place anyone would go to to study programming.
CS and programming really are different things. Programming is a useful part of CS just it is of any math, physics, or engineering discipline. It’s not a matter of status; its just like not saying “physics” when you mean “engineering”.
Some things that fall under Computer Science like Artificial Intelligence seem to be more about theory than learning to programming—whether that counts as “Science” is a question of semantics, but when I was learning about pattern recognition, data mining, natural language processing etc. (and reading/writing research papers on those), it feels a bit of a stretch to say that I was learing programming or software engineering (which would be more about thing like database systems, programming languages, design patterns, compilers, operating systems and the like).
Are “Computer Science” courses more engineering than science? Possibly, but the same could be said of any university course on say Materials Science.
CS courses are CS courses. CS is a (applied math) science but is different from other sciences—just as natural sciences (physics+chem+bio) are different from other sciences, and social sciences are different from other sciences...
CS is not engineering, just like physics is not engineering. CS is not programming. Engineering and programming are useful tools—in CS and in other disciplines too—and so CS students often learn their basics, but they are in no way part of CS.
“Computer science” is sometimes called “theoretical computer science”. It is a branch of mathematics that includes such things as computability and algorithmics.
You seem to be talking about computer engineering, which is a quite different discipline.
This argument over definitions comes up frequently, but it doesn’t seem to correspond to any useful distinction in reality. Most of the students who enter computer science programs (including me) end up mainly studying and doing programming (computer engineering), not theoretical computer science. The only reason to maintain a distinction is status—some people think theoretical computer science is higher-status than computer engineering. I don’t, so the whole thing looks really silly to me.
There are three different things in reality that we’re talking about:
Theoretical computer science (P vs. NP)
Computer engineering (hardware; related to electrical engineering)
So-called software engineering (programming)
These are very different things and it’s useful to have different names for them. David said “computer science” but was clearly talking about 2 or 3, not 1, so I corrected him.
There are study programs in some universities that are called CS but really teach programming. They are misnamed. There are many other CS programs that really do teach CS, and very little programming except for the minimal skills needed in algorithmics courses. The CS program I’m in is one (at Hebrew University of Jerusalem) - there’s almost no programming outside electives, and even those are a joke, it’s not a place anyone would go to to study programming.
CS and programming really are different things. Programming is a useful part of CS just it is of any math, physics, or engineering discipline. It’s not a matter of status; its just like not saying “physics” when you mean “engineering”.
(not disagreeing, just thinking aloud)
Some things that fall under Computer Science like Artificial Intelligence seem to be more about theory than learning to programming—whether that counts as “Science” is a question of semantics, but when I was learning about pattern recognition, data mining, natural language processing etc. (and reading/writing research papers on those), it feels a bit of a stretch to say that I was learing programming or software engineering (which would be more about thing like database systems, programming languages, design patterns, compilers, operating systems and the like).
Are “Computer Science” courses more engineering than science? Possibly, but the same could be said of any university course on say Materials Science.
CS courses are CS courses. CS is a (applied math) science but is different from other sciences—just as natural sciences (physics+chem+bio) are different from other sciences, and social sciences are different from other sciences...
CS is not engineering, just like physics is not engineering. CS is not programming. Engineering and programming are useful tools—in CS and in other disciplines too—and so CS students often learn their basics, but they are in no way part of CS.
Where is the “science”? There appears to be engineering and mathematics.
Mathematics is a science—indeed, it is called the Queen of Sciences.
It’s not an empirical science, but that’s not the only kind. (Although today there is a beast known as Empirical Computer Science...)