UNIVERSIDADE FEDERAL DE UBERLÂNDIA
Faculdade de Engenharia Elétrica

Av. João Naves de Ávila, 2121, Bloco 3N - Bairro Santa Mônica, Uberlândia-MG, CEP 38400-902
Telefone: (34) 3239-4701/4702 - www.feelt.ufu.br - feelt@ufu.br
  

Timbre

Plano de Ensino

IDENTIFICAÇÃO

Componente Curricular:

Tópicos Especiais em Engenharia de Computação: Estrutura de Dados

Unidade Ofertante:

FEELT

Código:

FEELT39040D

Período/Série:

Turma:

U

Carga Horária:

Natureza:

Teórica:

02

Prática:

01

Total:

03

Obrigatória:

(X)

Optativa:

( )

Professor(A):

EDGARD AFONSO LAMOUNIER JÚNIOR

Ano/Semestre:

2023-1

Observações:

 

 

EMENTA

Ao final do curso o estudante deverá ser capaz de modelar problemas e implementar aplicativos computacionais relacionados à Engenharia de Computação, utilizando os conceitos de abstração de dados e as estruturas de dados clássicas: pilhas, filas, listas, árvores e grafos.

JUSTIFICATIVA

  A disciplina de estrutura de dados é fundamental para um curso de graduação em Engenharia da Computação. Estruturas de dados para o Engenheiro da Computação são como a régua de desenho para o Engenheiro Civil: ferramenta básica de trabalho. Isto porque se trata de diferentes maneiras de representar, armazenar e manipular dados no computador. Cada estrutura tem seu potencial de aplicação que, por sua vez, está intimamente relacionado com os tipos de funcionalidades requeridas por um sistema computacional. Diante deste cenário, é de extrema importância que o egresso de um curso de Engenharia da Computação esteja habilitado a trabalhar com diferentes estruturas de dados.

OBJETIVO

Objetivo Geral:

  • Identificar as principais estruturas de dados.

Objetivos Específicos:

  • Ser capaz de projetar e implementar estruturas de dados.
  • Desenvolver sistemas computacionais de médio porte, utilizando as potencialidades que cada estrutura de dados possui, explorando ainda sua adequabilidade ao problema computacional em questão.

PROGRAMA

  1. Introdução
    1. Definição
    2. Tipos clássicos de estruturas de dados
    3. Aplicações de estruturas de dados
  2. Pilhas
    1. Definição e exemplos
    2. Representação de pilha
    3. Implementação de pilhas usando variáveis dinâmicas
    4. Uso de pilhas na avaliação de expressões numéricas e funções
  3. Recursividade
    1. Definição de processos recursivos
    2. Escrevendo programas recursivos
    3. Simulando recursividade
  4. Listas e filas
    1. Definição
    2. Representação de filas
    3. Listas encadeadas
    4. Implementação de pilhas e de fila usando listas
    5. Implementação de listas duplamente encadeadas usando memória dinâmica
    6. Lista circular duplamente encadeadas
  5. Árvores
    1. Árvores binárias
    2. Representação de árvores binárias como listas
    3. Aplicações de árvores
    4. Algoritmos de busca em árvores
    5. Árvores genéricas
    6. Uso de árvores para criação e modelagem de componentes elétricos e eletrônicos
  6. Grafos
    1. Definição de grafos, dígrafos e redes
    2. Aplicação de grafos
    3. Representação de grafos como listas
    4. Algoritmo de menor caminho
    5. Representação de grafos encadeados
    6. Uso de grafos na representação de relacionamento de cargas e conduites em instalações elétricas

Complexidade de algoritmos

METODOLOGIA

Técnicas de ensino:

- Aulas expositivas utilizando recursos áudio visuais e quadro negro.

- Aulas práticas com um aluno por computador no desenvolvimento de programas computacionais.

- Elaboração de problemas semanais de baixa complexidade.

- Desenvolvimento de um sistema de grande porte, de forma individual.

Recursos didáticos: Quadro e giz. Recursos audiovisuais: Projetor tipo datashow. 

AVALIAÇÃO

A avaliação será composta de:

Para ser aprovado na disciplina, cada aluno deverá cumprir os seguintes requisitos:

  1. Frequência mínima de 75% nas aulas ministradas, a qual é verificada através de chamada oral;
  2. Soma total das notas obtidas ou a nota da avaliação substitutiva igual ou superior a 60 pontos de um total de 100 pontos.

BIBLIOGRAFIA

Básica

  1. GUIMARÃES, Angelo de Moura e LAGES, Newton Alberto de Castilho; Algoritmos e estruturas de dados, 8ª. Edição, LTC, 2008.
  2. PREISS, Bruno R.; Estruturas de dados e algoritmos: padrões de projetos orientados a objetos com Java, Rio de Janeiro, Elsevier, 2001.
  3. CORMEN, Thomas H.; RIVEST, Ronald l.; LEISERSON, Charles E. e STEIN, Cliford. Algoritmos: teoria e prática. Rio de Janeiro: Campus, 2012. 926 p., il. Inclui bibliografia e índice. ISBN 9788535236996 (broch.).

Complementar

  1. AHO, Alfred V. e HOPCROFT, John E.;,Data structures and algorithms, Addison-Wesley, 1983.
  2. TENENBAUM, Aaron M e LANGSAM, Yedidyah; Estruturas de dados usando C, São Paulo, Makron Books, 1995.
  3. ASCENCIO, Ana Fernanda Gomes. Estruturas de dados: algoritmos, análise da complexidade e implementações em Java e C/C++. São Paulo: Pearson, c2011. 432 p., il. Inclui bibliografia e índice. ISBN 9788576058816 (broch.).
  4. DROSDEK, Adam; Data Structures and Algorithms in C++ - 4th edition; Cengage Learning; 2013.
  5. GOODRICH, Michael T.; TAMASSIA, Roberto and MOUNT, David M.; Data Structures and Algorithms in C++ - 2nd edition; John Wiley & Sons, 2011.

APROVAÇÃO

Aprovado em reunião do Colegiado realizada em: ____/____/______

Coordenação do Curso de Graduação: _________________________

 


logotipo

Documento assinado eletronicamente por Edgard Afonso Lamounier Junior, Professor(a) do Magistério Superior, em 08/08/2023, às 18:48, conforme horário oficial de Brasília, com fundamento no art. 6º, § 1º, do Decreto nº 8.539, de 8 de outubro de 2015.


QRCode Assinatura

A autenticidade deste documento pode ser conferida no site https://www.sei.ufu.br/sei/controlador_externo.php?acao=documento_conferir&id_orgao_acesso_externo=0, informando o código verificador 4721210 e o código CRC CB2A4514.




Referência: Processo nº 23117.054632/2023-86 SEI nº 4721210