www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - What is Computer Science?

reply "David B. Held" <dheld codelogicconsulting.com> writes:
Since many people (including me) hate deeply nested threads, I decided 
to start a new one on a slightly off-topic subject.  IMO, "Computer 
Science" is a slight, but not complete, misnomer.  On the one hand, 
students who take CS at a university expect to be taught Software 
Engineering, and that is what universities tend to teach them.  On the 
other, the professors themselves, who actually do research, do a lot 
more than Software Engineering, and often tend to actually be bad at 
both doing and teaching SE (because they don't do it professionally, of 
course).

Do Computer Scientists actually conduct experiments worthy of calling 
them scientists?  Well, when I was going to school, we knew there were 
certain times when it was not wise to attempt to build your project on 
the department minicomputer because one of the professors was running 
his genetic algorithm to solve the Busy Beaver problem.  He ran his 
program as often as possible and regularly wrote papers on progress he 
made on this and other topics in CS.  Given that his hypothesis was that 
a certain fitness function or selection rule or crossover strategy would 
produce better results than what was currently known, and that the only 
way this could be demonstrated was by running the simulations, I would 
call this "experimentation" and "science" just as surely as growing 
something in a petri dish or smashing molecules in an accelerator.

The reason most people don't associate CS with "science" is that they 
don't end up in the academic world, where most science is actually 
conducted.  But if they did, they would see that all good papers involve 
an implementation to demonstrate (or fail to demonstrate) some new claim 
about how computers do or should or could behave.  Whether it's about 
"computers" or just "software" seems like a pedantic point, especially 
considering that "softness" runs a continuum that is being updated every 
day (for instance, the kilocore architecture is really a bunch of PGAs 
for which the notion of "running software" is more like "reconfiguring 
hardware").

Agreed that much of what computer scientists do is heavily mathematical, 
but to call it an extension of mathematics would be like calling physics 
an extension of mathematics because it is heavily mathematical.  While 
there is a field called "Mathematical Physics" which explores that realm 
between pure math and pure physics where it's not obvious which you are 
more of, it is generally recognized that math is a *tool* used by 
physics, and not physics itself.  In the same way, CS uses math as a 
*tool* to make statements about computation without the math itself 
*being* the computation (despite the overlap in symbology).

The *field* of Mathematics is about making statements about the *tool* 
of math, independently of any *application* of that tool.  And 
interestingly enough, there are lots of interesting (and obscure) such 
things to say.  Whereas, the *application* of mathematics is about 
making statements about *another field*, using mathematical concepts and 
notation.  This is why CS was originally considered a form of "Applied 
Math".  But it is no more useful to say that than to reduce physics, 
chemistry, and biology to "Applied Math".  There is a certain strict 
sense in which that is probably true, but there is no practical value to 
it.  The way you can tell is that a pure mathematician would make a 
lousy computer scientist because there is lots in CS that is irrelevant 
to pure math that such a person would not necessarily have learned and 
become proficient in.

So it then comes down to the question of: "Do you need CS to be a 
software engineer?"  Well, that's like asking if you need Physics to be 
a good mechanical engineer.  And in both cases, I would say: "No, unless 
you want to be a *good* engineer."  Plenty of people who have not 
studied CS make up the majority of the SE "working class".  But when an 
SE does not understand the basics of algorithmic complexity and tends to 
select data structures based on whether they provide the particular 
method or interface they need at the moment, you begin to see the 
difference between CS-educated SEs and non-CS-educated SEs.  If you 
think there are no such SEs in the world, try screening candidates for 
any large tech firm.  Even more disappointing is that going to school 
and "studying" CS does not make you a CS-educated SE, as many folks 
prove with alarming regularity.

Proficiency in a task depends on having a strong mental model of that 
task, and such models are built up through examples.  You can acquire 
examples through experience, or through education; but ultimately, your 
neural network needs *lots* of examples to build solid models of the 
Software Engineering discipline.  The point of education is to expose 
you to a regular set of examples so that your resulting model is more 
likely to be useful and more refined than random sampling (i.e.: the 
self-taught route).  Of course, education does not always succeed at 
this task, and highly motivated individuals will tend to expose 
themselves to more examples than unmotivated individuals.  However, if 
selection biases cause them to fail to consider examples that they would 
be exposed to in an educational setting (because they just code what's 
"fun"), then there is a hole in their knowledge that differs from 
standard education.

That's a long-winded way of saying that school is good because it forces 
you to learn stuff that you don't really want to learn, which ultimately 
makes you a more well-rounded person.  Learning networks learn the best 
when they are able to sample the largest subset of the state space.  So 
being exposed to stuff that doesn't really interest you otherwise 
exposes your brain areas of the state space that help you generalize 
your mental models more appropriately.  And when a school fails to do 
this, then they aren't adding any value at all.  But odds are, most 
students judge a school by how boring their classes were, failing to 
recognize that some of those boring classes are exactly what they need 
to learn to fill in gaps in their knowledge.

I can't say that I learned most of what I know from school, because I 
probably didn't.  On the other hand, I think I learned a lot more having 
studied CS at school than I would have on my own, because of the whole 
formal-education-enforces-discipline effect.

Anyway, CS is relevant to D because getting the kind of knowledge 
necessary to design a good language is very difficult to do by inventing 
*lots and lots* of languages.  It's much easier to just learn the theory 
behind PLs and apply that to features being considered for D (and to fix 
features already in D).  And whenever you have a theory, you have a 
science. ;)

Dave
Apr 29 2007
parent reply janderson <askme me.com> writes:
David B. Held wrote:

[Snip]
 But odds are, most 
 students judge a school by how boring their classes were, failing to 
 recognize that some of those boring classes are exactly what they need 
 to learn to fill in gaps in their knowledge.
[Snip] I must be the odd one out in this theory. I found the most boring classes were the ones where they were teaching stuff I already knew. -Joel
Apr 29 2007
parent reply Walter Bright <newshound1 digitalmars.com> writes:
janderson wrote:
 David B. Held wrote:
 
 [Snip]
 But odds are, most students judge a school by how boring their classes 
 were, failing to recognize that some of those boring classes are 
 exactly what they need to learn to fill in gaps in their knowledge.
[Snip] I must be the odd one out in this theory. I found the most boring classes were the ones where they were teaching stuff I already knew.
There aren't any boring subjects. There are only boring people <g>.
Apr 29 2007
parent reply janderson <askme me.com> writes:
Walter Bright wrote:
 janderson wrote:
 David B. Held wrote:

 [Snip]
 But odds are, most students judge a school by how boring their 
 classes were, failing to recognize that some of those boring classes 
 are exactly what they need to learn to fill in gaps in their knowledge.
[Snip] I must be the odd one out in this theory. I found the most boring classes were the ones where they were teaching stuff I already knew.
There aren't any boring subjects. There are only boring people <g>.
I'm not sure about that. I've had some really good speakers but if their subject is about how a C 'for' loop works, I would still fall asleep. Its like watching the same movie again. It doesn't matter how good it was the first time, I'm not one of those people who can watch it again knowing the ending. Then again, I've had some speakers that would keep my interest even if they where talking about the 91 types of saw-dust. Reminds me of hell in the "Eric" Terry Pratchett book where they found that boredom was a far more effective form of punishment then the good-old fire and brimstone. -Joel
Apr 29 2007
parent reply "David B. Held" <dheld codelogicconsulting.com> writes:
janderson wrote:
 [...]
 I'm not sure about that.  I've had some really good speakers but if 
 their subject is about how a C 'for' loop works, I would still fall asleep.
 
 Its like watching the same movie again.  It doesn't matter how good it 
 was the first time, I'm not one of those people who can watch it again 
 knowing the ending.
 [...]
If it's stuff you know, then you nitpick the speaker and call out mistakes as he/she makes them. At least, that's what I did in my young-punk years... Dave
Apr 29 2007
parent reply Nicolai Waniek <no.spam thank.you> writes:
David B. Held wrote:
 janderson wrote:
 [...]
 I'm not sure about that.  I've had some really good speakers but if
 their subject is about how a C 'for' loop works, I would still fall
 asleep.

 Its like watching the same movie again.  It doesn't matter how good it
 was the first time, I'm not one of those people who can watch it again
 knowing the ending.
 [...]
If it's stuff you know, then you nitpick the speaker and call out mistakes as he/she makes them. At least, that's what I did in my young-punk years... Dave
That's IMHO not always a good idea. I have an apprenticeship in software engineering and am now studying "Informatik" (that's like CS, but you get lots more math I think and you have a minor subject, in my case it's biology because I once wanted to study micro-biology but then I would want to do some research, and that's not easy to achieve in Germany...) at the University of Ulm and when sitting in the software engineering courses I could possibly make a note each 5 minutes because the lecturer just states something wrong. Well, I could do this, but it would disturb the whole course - Therefore it's better to just not go to those lecturers, read the script of the last lessons in a few minutes and teach your fellow students how to code in your spare time :) best regards Nicolai PS: btw. my university's logo states "ulm university", but I guess it should be "university of ulm". I don't think my english is quite bad (just a bit rusty), but I don't think "ulm university" is gramatically correct.
Apr 30 2007
next sibling parent Alix Pexton <_a_l_i_x_._p_e_x_t_o_n_ _g_m_a_i_l_._c_o_m_> writes:
Nicolai Waniek wrote:

 PS: btw. my university's logo states "ulm university", but I guess it should be
 "university of ulm". I don't think my english is quite bad (just a bit rusty),
 but I don't think "ulm university" is gramatically correct.
In the UK at least, there are 2 types of University, basically its the newand the old. The old Universities, (the equivalent of Ivy League I suppose) are "X University", this includes places like Oxford and Cambridge. Then there are the new Universities which are usually "University of X". There is of course some exceptions, but in general, the place first form carries a sort of implied extra prestige. From what you said of Ulm, I don't know if you'd want to make the transposition while translating or not. A...
Apr 30 2007
prev sibling parent "Jarrett Billingsley" <kb3ctd2 yahoo.com> writes:
"Nicolai Waniek" <no.spam thank.you> wrote in message 
news:f14acp$1cdi$1 digitalmars.com...
 Therefore it's better to just not go to
 those lecturers, read the script of the last lessons in a few minutes and 
 teach
 your fellow students how to code in your spare time :)
That's what I end up doing a lot ... :P
 PS: btw. my university's logo states "ulm university", but I guess it 
 should be
 "university of ulm". I don't think my english is quite bad (just a bit 
 rusty),
 but I don't think "ulm university" is gramatically correct.
They both sound fine to me.
Apr 30 2007