sexta-feira, 26 de fevereiro de 2010

My contribution to "Is Computer Science a Misguided Field?"

This is my answer to Amir Michail recent inquiries in Google Buzz. Amir has posted a nice set of questions that make us stop to wonder whether we're on the right track in terms of CS education. In his original post, he wrote (originally posted on http://bit.ly/dp8WKW):
Computers are interesting because you get to invent new applications that change the world.


By focusing on efficiency and correctness of programs, doesn't computer science completely miss the point as to what is interesting about computers? 
By contrast, consider the field of computer games where game design is a key aspect of study. Why isn't there something like that in the more general field of computer science? 
Where's the application level creativity? Why focus only on implementation issues? 
What do you think?

Here it is my follow-up on this thread:


On what Computer Science (CS) is about (and what it isn't)


Interesting discussion. CS is about complexity theory, computability, algorithms, data structures, automata theory, quantum computation science, formal languages and much more. There's a whole theoretical background that is unique to CS.

Definitely, there should be separated majors, such as Software Engineering or Data and Information Management, in order to avoid misconceptions and to address industry's specific needs.

In short, CS is a basic science in wich we can learn about modelling the complex processes that occur in Nature by using abstract mathematical tools. The models we construct in CS (basically, algorithms) have to (i) be given formal descriptions and proofs; (ii) have its fundamental properties investigated (complexity bounds, completeness, etc.); and much more.

So, CS is a basic science and other sciences can benefit from it by using its outocomes. An example of this is Artificial Intelligence. Although it first got inspiration from early mathematical models of the brain (neuroscience), it became clear thereafter that the 'algorithimic' way of modelling natural processess would be fundamental to AI. Today, AI is commonly regarded as a standard discipline in CS, though still multidisciplinary.

Why not segregate the lots of teaching contents flooding CS students minds into separate majors?

Furthermore, let's not forget the revealing quote of a prominient computer scientist:

"Computer Science is no more about computers than Astronomy is about telescopes" Edsger Dijkstra

That summarizes well what CS is definitely not about.

I believe that multidisciplinarity should raise from a well planned reform in the graduate educational system, instead of requiring that a CS major covers every single topic from software engenieering to computation theory. Both are, separetedly, deep and complex enough disciplines to be studied in their own terms.


See: http://en.wikipedia.org/wiki/Edsger_W._Dijkstra

On Creativity

With regard to creativity, well, I'd say that computer scientists need to be creative as much as mathematicians and physicists do. There's no difference in coming up with a novel algorithm and discovering a fundamental power law in a complex system.

So, yes, you need much creativity to work on CS, no more nor less then in other related areas.



On the role of Game Design and related areas on CS


Now, why do I think game design (GD) does not play a significant role in CS? Because game design is an application of CS. Although there are many CS researchers who focus in GD, they are just aplying the standard tools of CS to modelling new useful algorithms for the problems they are working on in the area. So, again, GD 'uses' the 'know-how' and tools provided by CS.

As a perhaps useful analogy, think about CS as the 'Kernel' of an operating system (OS), which provides all the basic functioning to the system, and GD as one of the many 'services' provided by that OS which uses the basic kernel units. That is, GD is closely related to CS, but there is much more about it than just CS and, thus, I'd say that there's no need to consider studying GD in a basic CS curriculum, though it might be interesting to CS practicioneers, just like other disciplines.

In short: I'd say that GD is on the same level of AI, Database Management, Programming Languages and so on... that is, all those disciplines are 'users' of the core knowledge that exists on CS.

Nenhum comentário: