Desenvolver habilidades de resolução de problemas computacionais em um ambiente semelhante ao de concursos internacionais de programação como o ICPC e à Maratona de Programação da SBC. Os problemas de programação propostos levam ao aprendizado gradual de técnicas de desenvolvimento e análise de algoritmos, incluindo o uso de estruturas de dados bem conhecidas e uma grande variedade de estratégias de resolução de problemas computacionais.
Tópicos clássicos de Ciência da Computação, tais como estruturas de dados básicas, ordenação, problemas clássicos de grafos, programação dinâmica, backtracking, bem como problemas matemáticos envolvendo conceitos de combinatória e teoria dos números.
1. problemas matemáticos envolvendo conceitos de teoria dos números e/ou combinatória; 2. problemas com vetores, matrizes e strings; 3. recorrências e recursão; 4. problemas envolvendo ordenação e busca; 5. problemas com filas e pilhas; 6. problemas com grafos e árvores; 7. busca em largura e busca em profundidade; 8. estratégia gulosa; 9. programação dinâmica; 10. backtracking.
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/.