Paulo Eduardo Azevedo Silveira

Mestre Ciência da Computação, 2003-2007
Bacharel em Ciência da Computação, 1998-2002
Departamento de Ciência da Computação (DCC),
Instituto de Matemática e Estatística (IME),
Universidade de São Paulo (USP)
contato: peas arroba ime usp br
Caelum |

O bom algoritmo

"A good algorithm is like a sharp knife: it does what it is supposed to do with a minimum amount of applied effort. Using the wrong algorithm to solve a problem is like trying to cut a steak with a screwdriver: you may eventually get a digestible result, but you will expend considerably more effort than necessary, and the result is unlikely to be aesthetically pleasing." - Th. Cormen, Ch. Leiserson, R. Rivest, Introduction to Algorithms

Áreas de Interesse

Breve Histórico

Depois de formado em Ciência da Computação, tive meu primeiro contato profissional com Java na Commworld.de, na Alemanha. Voltando ao Brasil terminei a faculdade, período em que trabalhei com projetos java, como o Panda, e participei da maratona de programação junto com meu irmão, Guilherme Silveira, que recentemente esteve na final mundial do Japão. Trabalhei em algumas consultorias até parar na Sun Microsystems onde atuei como instrutor, enquanto iniciava meu mestrado junto com o professor Coelho. Nesse meio tempo ajudei a fundar o Grupo de Usuários Java, que acabou se tornando um grando fórum de tecnologia em português. Atualmente atuo na Caelum, uma escola de tecnologia e inovação.

Cursos de verão da USP

De 2004 a 2017 eu ministrei alguns dos cursos de verão da USP, no que se refere as disciplinas que envolvem Java. Em 2005 criamos o novo curso de Algoritmos em Java.

Usamos o material da Caelum, em especial as apostilas de Java, que você pode encontrar por aqui:

Esse material também foi utilizado para a concepção dos cursos da formação Java online da Alura.

Matemática e Algoritmos sobre as Dobras

Foi o tema do meu mestrado que defendi no início de 2007, orientado pelo professor doutor José Coelho de Pina. A dissertação pode ser encontrada aqui.

Origami computacional é um ramo recente da ciência da computação que estuda algoritmos eficientes para problemas envolvendo dobras. Esse ramo, essencialmente, nasceu na década de 1990 com o trabalho de Robert J. Lang em que métodos computacionais são empregados no auxílio do projeto de modelos de origami.

A dissertação trata de alguns aspectos matemáticos e algorítmicos de problemas envolvendo dobras. A relação entre as construções geométricas clássicas com régua e compasso e a geometria das construções com dobras é apresentada, a complexidade computacional de alguns problemas relacionados é considerada e uma solução do problema de dobrar e cortar é descrita.

CIMG1263 retangulo-fase3 CIMG1294

Juntamente com Rafael Cosentino, Deise Aoki e o professor Coelho, fizemos uma implementação do problema de dobrar e cortar, o JOrigami.

Esse problema pode ser citado da seguinte maneira: dado um polígono como entrada, podemos dobrar o papel de tal maneira que com apenas um corte reto teremos o nosso polígono como resultado ao abrir o papel? O incrível é que isso é sempre possível, e o algoritmo gera as dobras para tal feito. David Eppstein, um dos autores do artigo em que baseamos nossa solução, blogou sobre n�s. Marshal Bern, Barry Hayes e Joseph O'Rourke também nos ajudaram e trocamos emails.

Para conhecer mais dos problemas, você pode começar pelos seguintes artigos:

Também há um novo livro focado nesses assuntos, escrito pelo Demaine e pelo O�Rourke chamado Geometric Folding Algorithms: Linkages, Origami, and Polyhedra. Um capítulo inteiro é dedicado ao problema de dobrar e cortar.

Contato

peas arroba ime usp br