CCT-UFCA/Análise e Desenvolvimento de Sistemas/Estrutura de Dados

Programa do Componente Curricular

editar
Código: ADS0009
Componente Curricular: Estrutura de Dados
Semestre de Oferta: 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

editar

Estruturas 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

editar

Objetivo Geral

editar

Apresentar 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

editar

A 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

editar

O 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

editar

A 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

editar

Bibliografia básica

editar
  1. Cormen T. H et al., “Algoritmos: Teoria e Prática”. Rio de Janeiro: Editora Elsevier, 3ª edição, 2012.
  2. Knuth D.E. “The Art of Computer Programming”. vols. 1 e 3, Addison-Wesley, 1973.
  3. Szwarcfiter, L. Markezon, “Estruturas de Dados e seus Algoritmos”. Livros Técnicos e Científicos, 1994.
  4. Ziviani N. “Projeto de Algoritmos com implementação em Java e C++”. São Paulo: Editora Thomson, 1ª edição, 2007.

Bibliografia complementar

editar
  1. KENNETH A. LAMBERT., “Fundamentos de Python: Estruturas de dados”. Cengage Learning, 2ª edição, 2022.
  2. 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.
  3. WEISS, M. A., "Data Structures And Problem Solving Using Java", 4th Ed., Pearson, 2009.
  4. ZAMBONI, S. A pesquisa em arte: um paralelo entre arte e ciência. 4. ed. Campinas: Autores Associados, 2012.
  5. DROZDEK, A. “Estrutura de dados e Algoritmos em C++”. Thomson Learning, 2002.
  6. FEOFILOFF, P. “Algoritmos em Linguagem C”. Editora Campus/Elsevier, 2009.