Análise de Complexidade de Algoritmos
Estudo dos conceitos e técnicas de análise de complexidade algorítmica, notação assintótica e computabilidade. Compreensão das técnicas de programação: refinamento passo a passo, iteração e recursão, divisão e conquista, programação dinâmica e gulosa aplicadas aos algoritmos de ordenação, estruturas de dados e grafos.

Referências Bibliográficas
FORBELLIONE, André Luiz Villar. Lógica de programação - A construção de algoritmos e estruturas de dados. 3ª Edição. São Paulo – Prentice Hall, 2005.
PUGA, Sandra & RISSETTI, Gerson. Lógica de Programação e Estruturas de Dados - Com Aplicações em Java. 3ª edição. São Paulo: Pearson Education do Brasil, 2016.
MANZANO, José Augusto N. G.; LOURENÇO, André Evandro; MATOS, Ecivaldo. Algoritmos: técnicas de programação. 2. ed. São Paulo: Erica, 2016. 1 recurso online. ISBN 9788536518664.
DEITEL, Paul & DEITEL, Harvey. C Como Programar. 6ª Edição. Pearson Prentice Hall, 2011.
# Tema da Aula Material Atividade
1 Apresentação da disciplina
2 Contagem de instruções
3 Consumo de tempo assintótico
4 Habilidades matemáticas necessárias
5 Algoritmo Bubble Sort
6 Algoritmo Insertion Sort
7 Recorrência
8 Divisão e conquista
9 Backtracking
10 Algoritmos Gulosos
11 Programação dinâmica
12 Problemas P, NP, NP-Completo e NP-Difícil
13 Atividade Final