Desenvolver habilidades de resolução de problemas computacionais em ambiente colaborativo e sob pressão. O ambiente é semelhante aos concursos internacionais de programação da ACM e à Maratona de Programação da SBC. Os problemas de programação propostos levam ao aprendizado de técnicas de desenvolvimento e análise de algoritmos com o uso de estruturas de dados complexas, assim como o trabalho em equipe,
A disciplina tem caráter de laboratório, com intensa atividade de programação. Todos os programas criados pelos alunos são submetidos a "juízes eletrônicos". Espera-se que o aluno tenha bons conhecimentos de tópicos clássicos de análise de algoritmos e estruturas de dados. Os problemas de programação serão avançados e cobrirão tópicos clássicos de Ciência da Computação, tais como estruturas de dados, ordenação, problemas de matemática (contagem, álgebra, etc), backtracking, problemas avançados de grafos, programação dinâmica e geometria computacional.
Bibliografia Básica: S. S. Skiena, M. A. Revilla, Programming Challenges: The Programming Contest Training Manual, Springer, 2003. T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms (3rd ed.), MIT Press and McGraw-Hill, 2009. Bibliografia Complementar: N. Ziviani, Projeto de Algoritmos com Implementações em Java e C++, Editora Thomson, 2007. M. T. Goodrich, R. Tamassia, Projeto de Algoritmos, Editora Bookman, 2004. S. S. Skiena, The Algorithm Design Manual (2nd ed.), Springer, 2008. ICPC Website, https://icpc.baylor.edu/. Online Judge, https://onlinejudge.org/. URI Online Judge, https://www.urionlinejudge.com.br/.