Posts Tagged ‘Ciência da Computação’

Vergonha

Tuesday, November 24th, 2009

O disciplina é “Princípios de Desenvolvimento de Algoritmos” e ela está sendo ministrada neste semestre pelo Prof. Dr. Carlos Eduardo Ferreira, participante do grupo de otimização combinatória, diretor nacional da Maratona de Programação e orientador da minha iniciação científica.

A turma é do Bacharelado em Ciência da Computação no IME-USP.

Acabei de receber a seguinte mensagem de um dos monitores:

Screenshot

Preciso dizer mais alguma coisa?

Objetivos

Saturday, May 16th, 2009

Listo aqui cinco objetivos (talvez utópicos, talvez eu desista deles na próxima semana) para os próximos 50, 60 anos.

0. Ganhar uma medalha numa final mundial de um ACM ICPC.

Não é simplesmente pela competição, que é muito divertida. É também porque isso precisa de uma quantidade de estudo de ciência da computação e prática na resolução de problemas que fará diferença pro resto da minha vida e me ajudará com os outros objetivos. Afinal, a vida não passa de uma série de problemas que precisam ser resolvidos da maneira mais eficiente possiǘel.

1. Obter um bom PhD numa boa instituição.

Novamente não é simplesmente pelo prestígio e porque isso é importante na Academia, mas porque o PhD significa muita pesquisa e muita pesquisa significa MUITO conhecimento. Conhecimento este que será necessário pros próximos itens…

2. Solucionar o problema da segurança em São Paulo.

As pessoas acham que isso é impossível. Porém, eu quero resolver esse problema com ciência da computação, não com conversa mole ou politicagem. A realidade é que resolver o problema da violência em São Paulo não passa de um problema de otimização (minimizar a diferença social, minimizar o uso de drogas, maximizar a quantidade de pessoas felizes, maximizar a quantidade de respeito entre as pessoas…). Vou abstrair o problema, determinar suas causas e resolver uma por uma, de modo a contribuir pra uma cidade tão importante pra tantas milhões de pessoas.

3. Desenvolver a cura do câncer.

Na minha opinião o câncer é o mais cruel dos problemas de saúde. Atinge muita gente, sem motivo. Vem de repente, tortura e mata. Por isso acho fundamental resolver esse problema, que pode inclusive me atingir um dia. Como farei isso? Se eu soubesse, já teria feito. Mas, basicamente, atacando-o da mesma maneira que todos os outros problemas.

4. Receber um Turing Award.

Creio que será natural depois dos itens 2 e 3.

Bacharelado em Ciência da Computação

Tuesday, March 31st, 2009

Os jovens saem do Ensino Médio, enlouquecem fazendo cursinhos pra passar no vestibular e entram num curso universitário sem saber o que isso significa.

Em primeiro lugar observo que o curso de Ciência da Computação hoje é o que o esteriótipo afirma: é um curso de viciados em jogos. Até aí tudo bem, cada um faz o que bem entende nos seus momentos de lazer.

O problema é que acredito que isso colaborou para viror um reduto de usuários de computador, pessoas que leram “Computação” no nome e pensaram: Eu gosto de mexer no computador, acho que este é o meu curso.

Our new mobile lab
Creative Commons License photo credit: Christy Tvarok Green

Vejo que os adolescentes que hoje entram em Ciência da Computação desprezam a matemática e não vêem sentido em provar as propriedades básicas dos números em disciplinas como Álgebra. Ouvi esses dias na minha sala de aula: Se nós já sabemos que funciona, pra que provar? São pessoas que entram num bacharelado sem vontade de estudar teoria.

A realidade que percebo, tanto na UFSC quanto no IME-USP, é decepcionante. E em muitas universidades o curso está mudando de cara pra satisfazer estes estudantes e não o contrário, como deveria ser. O IME-USP ainda tem um curso excelente, mas advinhe o que os alunos aprendem na primeira matéria do curso (chamada de Introdução à Computação)? Java e programação orientada a objetos. Eles aprendem classes e métodos antes de aprenderem operadores lógicos e laços.

Estou no curso errado? Prefiro pensar que não. Porque a definição está ao meu lado. Às vezes penso que o nome do meu curso deveria mudar, para não pegar desavisados que não procuram o que é antes de entrar. Deveria ser algo como Bacharelado em Ciência dos Algoritmos, Bacharelado em Matemática Discreta… não sei. Mas é claro que tudo isso seria besteira. Na verdade quem precisa mudar são as pessoas. Tanto as que entram no curso, quanto as pesoas em geral, que pedem favores pra cientistas da computação pensando que eles são técnicos de informática. Elas precisam pesquisar o que é o curso antes de entrar nele, precisam saber que Ciência da Computação é um ramo da matemática que existe desde muito antes da criação dos computadores digitais.

Acredito que todos que são capazes de passar na carreira da Poli na Fuvest são capazes de ler o primeiro parágrafo do texto da Wikipedia em português sobre Ciência da computação, que diz:

Ciência da computação é o estudo dos algoritmos e suas aplicações, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. Desempenha por isso um papel importante na área de ciência da computação a formalização matemática de algoritmos, como forma de representar problemas decidíveis, i.e., os que são suscetíveis de redução a operações elementares básicas, capazes de serem reproduzidas através de um qualquer dispositivo mecânico/eletrônico capaz de armazenar e manipular dados. Um destes dispositivos é o computador digital, de uso generalizado, nos dias de hoje, pelo custo reduzido dos componentes eletrônicos que formam o seu hardware.

Bom, é apenas um desabafo. Espero que ninguém se ofenda, e preciso torcer fortemente pra isso mesmo porque é certo que os ofendíveis são maioria. Pois ando percebendo que estou fora de moda. Revolto-me quando ouço um professor uspeano elogiar o Java, alegando ser uma linguagem moderna e maravilhosa porque aceita acentos nos nomes das funções enquanto o C é antiquado. Abandono a sala ao ouvir que hoje em dia classes são mais importantes do que laços e nomear corretamente funções é mais importante do que conhecer algoritmos.

Sem dúvidas o problema sou eu, que serei talvez um dos últimos Bacharéis em Ciência da Computação que sabe implementar uma estrutura de dados, afinal (sic) se o Java já tem um heap implementado para que reinventar a roda?

Talvez eu seja um dos últimos a lembrar e valorizar o trabalho de verdadeiros cientistas da computação como Edsger Wybe Dijkstra, que certa vez disse:

Ciência da Computação está tão relacionada aos computadores quanto a Astronomia aos telescópios, Biologia aos microscópios, ou Química aos tubos de ensaio. A Ciência não estuda ferramentas. Ela estuda como nós as utilizamos, e o que descobrimos com elas.

Precision knob?
Creative Commons License photo credit: gogoninja

Declaro-me a favor de um curso de Ciência da Computação onde os computadores sejam tratados apenas como ferramentas. Há outros cursos para quem não pensa assim e entra na universidade buscando uma formação sobre desenvolvimento ágil e produtividade. Não estou criticando quem busca isto. Porém, na minha opinião, estes definitivamente não deveriam entrar num curso chamado Bacharelado em Ciência da Computação.