Saturday, January 21, 2012

Concerning a Bit of Philosophy

Hi,

In class on 1/20/2012, engineering and science were contrasted in the context of comparing software engineering and computer science.

Ackley presents a view of the humans: imagine a square, tilted 45 degrees sideways, so it's a diamond.  On the left corner is an eye, representing the sensory array with which humans are endowed.  On the right corner is a hand, representing everything humans are capable of doing.  On the bottom corner is "A->B", representing our causal judgement.  On the top corner is "+/-", representing our moral judgement.  In the middle is us, being a conglomeration of all four corners.

Science, Ackley contends, is the side of the square between the eye and "A->B".  This is because science takes what we observe, and tells us what will happen in the future (arguably, the hand is somewhat part of it too, because science can predict what happens when we interact with a system, though this may be reduced down to the casual).  Science does not care about "+/-"--that is, whether we like what we see in a developing system.  Nor, in the basic sense, does it care what we do (hand) about it.

On the other hand, engineering is just the hand, because it concerns only getting things done.  Doesn't matter if it's moral, really--engineering just concerns "get 'er done".

Hence, science and engineering are duals.  I for one, think this is a very useful view.  However, with respect to software engineering and computer science, I'm not so sure.  Software engineering clearly deals with the process of making code, but computer science I think isn't really a science.  Sure, sometimes computer scientists make experiments--but ultimately, I think, computer science is a broad term covering the field of computing.

For example, "Computer Architecture" and "Algorithmic Analysis" I think are best described as being subdisciplines of  "Computer Science".  But, "Algorithmic Analysis" involves logical proofs; finding truth a priori.  And "Computer Architecture" involves studying best practices to "get 'er done".

Similarly, I think "Software Engineering" is a subdiscipline of "Computer Science".  This is because the latter is not truly a science, but an encompassing term of all subdisciplines pertaining to computers.

To return to a Wikipedia definition, "Computer Science" is "the study of the theoretical foundations of information and computation.  It also includes practical techniques for their implementation and application in computer systems."  So it's really not only theory, but also some practice.

Ian

No comments:

Post a Comment