sexta-feira, 26 de fevereiro de 2010

What is an expert?

There is an undergoing discussion on how do we define an 'expert'. Here it is my view on the topic:
(Note: originally posted on
The basic assumption behind the concept of being an ‘expert’ — which, based from the above comments, it seems everyone agrees — is that there should be a *learning process* that makes such entity distinguished from the ones who haven’t acquired the same level of knowledge or skill.
Thus, one can conclude that an ‘expert’ is a system who have improved its performance based on its learning experience. Note that this is exactly the standard definition one would find by studying “Machine Learning”, a subarea of AI and statistical pattern recognition. However, how does one assess the ‘performance’ of a system? Although that’s not so simple, it’s not that difficult, as there are a variety of metrics one can use to precisely measure the ‘reliability’ of a diverse range of claims made by an ‘expert’.
In this sense, I fully agree with @Openworld comment above in that we should focus on the outcome of the process itself. That is, pick a definite preformance metric and we won’t need to rely on ‘common sense’ to know whether one really knows what he/her is ‘talking about’.
Everyone can do that at home.

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
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.


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.

sábado, 6 de fevereiro de 2010

My view on Michael Anissimov's post on "Accelerating Future"

(Note: originally posted on:

Dear Michael,

I personally believe there's a subtle difference between "existence" and "usefulness". The latter is generally measured by the level of interest within a group of individuals towards new technologies.

The fact is that, virtually, we have now all the capabilities to come up with any innovation we want from RK's list for 2009. Just give us enough time, budget and an experienced team of engineers. So, in terms of "usefulness", I would not take any of RK's predictions for granted but rather point out that the the vast majority of his predictions either have been already implemented (even as incipient prototypes) or are potentially plausible within a few years, albeit those may slightly vary on the fundamental principles governing them.

But then, it will most probably require some marketing efforts to convince people to actually consume such innovations. We still have to demonstrate what the benefits are for those who eventually would be willing to trying such new inventions and radical changes.

Unfortunately, there is still much room for us to improve socially and politically before we can set up the scenario wherein the different range of plural societies will be able to fully benefit from such technologies. Globalization and economical development would indeed help for that matter. However, this might not be so simple as it seems. We must first solve the conflict of interest which remain among many cultures.

That said, I attribute the small mistakes done by RK in terms of dates (for + or -) to the lack of (or surplus of) interest from all societies on the technologies that we are, without doubt, ultimately and fully capable of manufacturing.

Please, let me know whether this makes any sense for you.

Carlos R. B. Azevedo
Recife, Brazil