Ementa:
Conceitos de tipos abstratos de dados e programação orientada a objetos; modelagem, implementação, depuração e testes de tipos abstratos de dados para coleções dinâmicas lineares, conjuntos, dicionários e estruturas hierárquicas (árvores).
Conteúdo programático:
Linguagens de programação compiladas e com tipos fortes
Compilação/depuração/testes
Tipos primitivos/escalares
Tipos compostos/estruturados
Arrays estáticos
Tipos Abstratos de Dados
Conceitos de Orientação a Objetos
Classes
Encapsulamento e controle de visibilidade
Herança
Polimorfismo
Interfaces
Programação genérica
Estruturas dinâmicas lineares
Listas encadeadas
Filas
Pilhas
Arrays dinâmicos
Iteradores
Strings e string buffers
Tabelas de dispersão (TD)
Funções de dispersão
Resolução de colisões
TD abertas com encadeamento
TD fechadas por sondagem linear
Conjuntos (Hashsets)
Dicionários/arrays associativos
Estruturas hierárquicas não-lineares - Árvores
Representação
Operações básicas e aplicações
Bibliografia básica:
KIRCH-PRINZ, U., PRINZ, P. A Complete Guide to Programming in C++. 1a Edição. Editora Jones & Bartlett Learning, 2001.
GOODRICH, M.T., TAMASSIA, R. Estruturas de Dados & Algoritmos em Java. 5a Edição. Editora Bookman, 2013.
LEVITIN, A. Introduction to the design and analysis of algorithms. 3rd Edition. Addison Wesley, 2011.
SHAFFER, C.A. Data Structures and Algorithm Analysis in C++. 3a Edição. Editora Dover, 2011.
DROZDEK, A. Estrutura de Dados e Algoritmos em C++. 4a Edição. Editora Cengage, 2017.
Bibliografia complementar:
CORMEN, T., LEISERSON, C., RIVEST, R., STEIN, C. Introduction to Algorithms. MIT Press, 4th Edition, 2022.
ROBERTS, E. S. Programming Abstractions in C++. Pearson, 1st Edition, 2013.
SIERRA, K., BATES, B. Head First Java. O'Reilly Media, 2nd Edition, 2005.
BECK, K. Test Driven Development: By Example. Addison-Wesley Professional, 2002.