CCT-UFCA/Análise e Desenvolvimento de Sistemas/Estrutura de Dados
Programa do Componente Curricular
editarCódigo: | ADS0009 | ||||||||
Componente Curricular: | Estrutura de Dados | ||||||||
Semestre de Oferta: | 2º | Tipo: | Disciplina | Caráter: | Obrigatória | ||||
Unidade Acadêmica Responsável: | Centro de Ciências e Tecnologia - CCT | ||||||||
Regime: | Semestral/Modular | ||||||||
Créditos: | 4 | Carga horária: | 64 | Teórica: | 32 | Prática | 32 | Extensão: | - |
Pré-requisito: | |||||||||
Co-requisito: | |||||||||
Equivalência: |
Ementa
editarEstruturas de dados simples: listas, filas e pilhas. Noções de estruturas de dados avançadas. Tipo abstrato de dados. Recursividade. Árvores de busca. Algoritmos de busca e ordenação. Noções básicas sobre complexidade de algoritmos.
Objetivos
editarObjetivo Geral
editarApresentar as diversas estruturas de dados fundamentais, como estruturas lineares (listas encadeadas, pilhas, filas, etc.), estruturas não-lineares (árvores), os algoritmos básicos para a sua manipulação, assim como as suas aplicações; Introduzir noções básicas de complexidade de algoritmos e técnicas básicas para comparação dos tempos de execução dos algoritmos estudados; Apresentar a importância da escolha da estrutura de dados e algoritmos adequados para a resolução de problemas de maneira eficiente.
Objetivos Específicos
editar- Propor uma breve introdução a linguagem de programação python para melhor entendimento dos conceitos de estrutura de dados;
- Apresentar conceitos introdutórios na temática da estrutura de dados, proporcionando a importância das diferentes estruturas para aplicações em desenvolvimentos de softwares;
- Proporcionar o desenvolvimento teórico/prático para diferentes estruturas lineares (listas encadeadas, pilhas, filas, etc.) como solução para diferentes problemas;
- Proporcionar o desenvolvimento teórico/prático para estruturas não-lineares com algoritmo de árvores de busca), algoritmo de busca e ordenação;
- Introduzir noções básicas de complexidade de algoritmos e técnicas básicas para comparação dos tempos de execução dos algoritmos estudados;
- Apresentar biblioteca baseada na linguagem python para soluções em estruturas de dados.
Conteúdo
editarA disciplina será dividida em 4 unidades:
- Unidade 1 - Fundamentos de Estrutura de Dados e Estruturas Lineares.
- Fundamentos;
- Vetores, Pilhas.
- Unidade 2 - Estruturas lineares e não-lineares.
- Listas, filas;
- Árvore(inserção, pesquisa, exclusão);
- Travessia (pré-ordem, em ordem, pós-ordem).
- Unidade 3 - Algoritmos de ordenação.
- Recursão;
- Bubble sort, Selection sort, Insertion sort.
- Unidade 4 - Algoritmos de ordenação e Noções básicas - complexidade.
- Merge sort, Quick sort;
- Complexidade.
Metodologia
editarO conteúdo da disciplina será trabalhado por meio de apresentações, debates, análises e estudos dos materiais do curso (Livros e páginas digitais, texto-base (pdf), videoaulas e atividades síncronas e assíncronas), e por meio de discussões semanais a serem realizadas, utilizando-se diversas interfaces (ferramentas e recursos do Moodle) para exposição de conceitos, dúvidas e feedbacks e para debates sobre temas relevantes ao curso. A avaliação dos estudantes será através de atividades à distância no AVA, bem como da participação nos fóruns, atividades e avaliação, participação nos encontros presenciais, e prova (Avaliação final). Nessa avaliação, serão considerados: a capacidade dos alunos de compreensão dos conceitos da disciplina, fundamentada na teoria e prática.
Avaliação
editarA avaliação ocorrerá em seus aspectos qualitativos e quantitativos, segundo o Sistema de Avaliação da EaD da UFCA. Como instrumentos de avaliação serão utilizados provas, fóruns, chats, seminários, presenças em encontros síncronos, encontros presenciais, trabalhos dirigidos, atividades no AVA e verificação contínua da aprendizagem. Tais instrumentos serão aplicados no decorrer de cada Unidade de Ensino. A utilização de cada instrumento avaliativo estará relacionada à natureza da unidade didática estudada.
Bibliografia
editarBibliografia básica
editar- Cormen T. H et al., “Algoritmos: Teoria e Prática”. Rio de Janeiro: Editora Elsevier, 3ª edição, 2012.
- Knuth D.E. “The Art of Computer Programming”. vols. 1 e 3, Addison-Wesley, 1973.
- Szwarcfiter, L. Markezon, “Estruturas de Dados e seus Algoritmos”. Livros Técnicos e Científicos, 1994.
- Ziviani N. “Projeto de Algoritmos com implementação em Java e C++”. São Paulo: Editora Thomson, 1ª edição, 2007.
Bibliografia complementar
editar- KENNETH A. LAMBERT., “Fundamentos de Python: Estruturas de dados”. Cengage Learning, 2ª edição, 2022.
- DASGUPTA, S, PAPADIMITRIOU, C.H. VAZIRANI, U.V. "Algorithms". Macgraw-Hill, 2008. ZIVIANI N. “Projeto de Algoritmos com implementação em Java e C++”. São Paulo: Editora Thomson, 1ª edição, 2007.
- WEISS, M. A., "Data Structures And Problem Solving Using Java", 4th Ed., Pearson, 2009.
- ZAMBONI, S. A pesquisa em arte: um paralelo entre arte e ciência. 4. ed. Campinas: Autores Associados, 2012.
- DROZDEK, A. “Estrutura de dados e Algoritmos em C++”. Thomson Learning, 2002.
- FEOFILOFF, P. “Algoritmos em Linguagem C”. Editora Campus/Elsevier, 2009.