(October 28, 2023 at 7:16 am)FlatAssembler Wrote: Computer science, although it is called "science", is definitely not a typical science. Typical science paper today includes a discussion about p-values, but hardly any computer science paper does. And I think everybody would agree that a typical computer science paper doesn't apply the scientific method, like one we are taught in our high-school biology classes. That's why many people say that computer science is closer to engineering than to science. However, I would argue it is not typical engineering either.
Engineering makes heavy use of university-level math. Electrical and mechanical engineering basically revolve around calculus. OK, electrical engineers often use the phasor approximation which replaces calculus with complex numbers, and it can be done if the frequency of the alternating current is relatively low (so that the Kirchhoff's laws are a good approximation). But, if you don't understand calculus, your understanding of electrical engineering will be superficial at best. In mechanical engineering, as far as I know, you can never use complex numbers instead of calculus, you are forced to use calculus directly. In mechanical and electrical engineering, you use transfer functions, Laplace transforms... And, for just about every electrical system, there is an analogous mechanical system, and vice versa. There is nothing like that in computer science.
Thus far, the only time I had to apply university-level math in my hobby projects was when I was making an analog clock in my programming language targetting WebAssembly (as WebAssembly has no fsin and similar instructions, so I had to apply calculus to think of an algorithm by which program running on WebAssembly could calculate trigonometric functions). And notice that I wouldn't even have to do that had I made my compiler properly, using LLVM to target WebAssembly instead of targetting WebAssembly directly.
Also, engineering requires some knowledge of physics, in fact, it is heavily constrained by physics. Mechanical engineering makes the use of Newton's Laws of Motion for linear systems or the Euler's Laws for rotational systems, electrical engineering uses Kirchhoff's Laws for low frequency currents or the Maxwell's Equations for high-frequency currents, electronical engineering makes heavy use of quantum mechanics...
In computer science, the only time you are constrained by physics is usually only so that you cannot expect a huge amount of information to be transferred immediately.
For those reasons, I think it doesn't make a lot of sense to say that computer science is engineering.
What difference does it make? Engineering is the practical application of scientific principles.
Boru
‘I can’t be having with this.’ - Esmeralda Weatherwax