Aperfeiçoar a capacidade do aluno em projetar algoritmos para resolver problemas complexos de programação,
segundo os diversos paradigmas (Gulosos, Backtracking,  Divisão e Conquista, PD, etc) e classes importantes
de algoritmos (Grafos, Geometria Computacional, Teoria do Números, Teoria dos Jogos, Strings, etc)