É engenheiro, tendo concluído sua graduação na Escola Politécnica da USP em 1984. Entre 1985 e 1989 atuou em diversas empresas. A partir de 1989 passou a dedicar-se integralmente à docência e pesquisa, atividades que desenvolve até hoje.
Em 1992 concluiu o PhD em Inteligência Artificial na University of Edinburgh e ingressou como docente no Departamento de Ciência da Computação da USP. Em 1999 concluiu a livre-docência na USP, sendo desde então professor associado naquela Universidade.