Análise de complexidade de tempo de algoritmos e notação big O. Noções de Teoria da
Computação. Resolução de problemas aplicando estruturas lineares: listas, pilhas, filas e filas
de prioridade, busca e ordenação. Resolução de problemas aplicando dicionários (tabelas de
dispersão). Resolução de problemas aplicando árvores e árvores de busca binária. Resolução
de problemas aplicando grafos: especificação de grafos, busca em largura, busca em
profundidade, conexidade, caminho mínimo, árvores de cobertura mínima, coloração. Técnicas
para projeto de algoritmos: divisão e conquista, programação dinâmica, e algoritmos gulosos.