Apresentação de conceitos avançados que levem o aluno a uma maturidade em programação estruturada, com conhecimento de uma linguagem de programação com recursos avançados. Aprendizado de técnicas para construção de algoritmos e para análise da complexidade de algoritmos. Aprendizado de algoritmos clássicos de ordenação e busca em memória interna. Prática de Programação.
Introdução de conceitos avançados em linguagem de programação estruturada. Análise de algoritmos: critérios de complexidade. Notação Assintótica. Análise do pior caso, melhor caso e caso médio. Paradigmas de Projeto de algoritmos (indução, recursividade, divisão e conquista, etc.). Algoritmos de ordenação (por inserção, seleção, partição) diretos e avançados, e de busca (direta, seqüencial, indexada) em memória interna. Espalhamento (hashing).
Análise de algoritmos: conceitos básicos, critérios de complexidade de tempo e espaço, notação assintótica, análise de pior caso, melhor caso e caso médio, técnicas de contagem de operações e análise de recorrências, prática e discussão com problemas computacionais relevantes. Algoritmos de ordenação interna simples e avançados: conceitos básicos, métodos de ordenação bubblesort, quicksort, inserção, shellsort, seleção, heapsort, mergesort, contagem de menores, contagem de tipos e radixsort, análise dos algoritmos de ordenação, prática e discussão com problemas computacionais relevantes. Algoritmos de busca interna: conceitos básicos, métodos de busca binária e por interpolação, análise dos algoritmos de busca anteriores e considerações sobre busca em árvores, prática e discussão com problemas computacionais relevantes. Hashing interno: conceitos básicos, tipos de hashing, funções hash, tratamento de colisões, análise dos algoritmos de busca, inserção e remoção com base em hashing.
· Livro Texto:- CORMEN, T.H. et al.: Algoritmos: Teoria e Prática. Elsevier e Campus (tradução). ISBN 853520926-3.- CORMEN, T.H.; LEISERSON, C.E.; RIVEST, R.L.; STEIN, C. Algoritmos: Teoria e Prática. Editora Campus.2002.- KELLEY, A.; POHL, I. A Book on C. 2a. edição, The Benjanmin/Cummings Pub. Co., Inc. 1990.- SCHILDT, H. "C.Completo e Total". MakronBooks, 1997.- TENENBAUM, A.M., e outros Data Structures Using C. Prentice-Hall, 1990.- ZIVIANI, N. Projeto de algoritmos. 2a. edição, Thomson, 2004· Bibliografia Complementar:- GRIES, D. The Science of Programming. Berlin, Springer, 1981.- KERNIGHAM, B.; RITCHIE, D. The C Programming Language. Prentice-Hall, 1988.- KERNIGHAM, B.W.; RITCHIE, D.M.C. A Linguagem de Programação Padrão ANSI. Editora Campus, 1995.- HOROWITZ E.; SAHNI, S. Fundamentos de Estrutura de Dados. Rio de Janeiro, Editora Campus, 1986.- ROBERTS, E. Programming Abstractions in C. Addison Wesley, 1996.- SEDGEWICK, R. Algorithms in C. Addison-Wesley, 1990.- SHOOMAN, M.L. Software Engineering. New York, McGraw-Hill, 1983.- SZWARCFITER, J. L.; MARKENZON, L. Estruturas de Dados e seus Algoritmos. Livros Técnicos e Científicos, 1994.- WIRTH, N. Algorithms + Data Structures = Programs. Prentice-Hall, 1986.