Possui graduação em Ciência da Computação pela Universidade Estadual de Campinas (1985), mestrado em Ciência da Computação pela Universidade de São Paulo (1993) e doutorado em Física Computacional pela Universidade de São Paulo (1997) com programa sanduíche na Purdue Univesity, Estados Unidos. Realizou pós-doutorado no Politecnico di Milano, Itália, entre 2000 e 2001 e obteve o título de livre-docente na área de Engenharia de Software pela Universidade de São Paulo em 2005. Em 2013 esteve na George Mason University, Estados Unidos, como pesquisador visitante. É Professor Associado do SSC/ICMC/USP. Tem experiência na área de Engenharia de Software atuando principalmente nos seguintes temas: teste de software, teste de mutação, teste estrutural.