COMPUTAÇÃO II - J2D12 - 2002
  Luiz Ernesto Merkle
  Carga Horária: T(30) TP(00) L(30) 
Nº de créditos: 03
Pré-requisito:  Computação I
S11 Sextas-Feiras B106 15:00-17:30  e Q 304 19:30 - 21:00 
S12 Sextas-Feiras B106 17:50-19:30  e Q 304 19:30 - 21:00 
Ementa 
  • Tipos Abstratos de Dados
  • Estruturas de Dados Estáticas e Dinâmicas
  • Armazenamento e Recuperação de Dados
  • Algoritmos de Pesquisa e Ordenação
  • Atividades de Laboratório
Livro Texto Jeffrey Esakov e Tom Weiss 1989  Data Structures: An Advanced Approach Using C Prentice Hall 
 
Conteúdo Programático
  • Revisão de Construções Avançadas em C (Capítulos 1 e 2) [18 e 25 / 10]
    • Estruturas (struct)
    • Uniões (union)
    • Conjuntos enumerados (enum)
    • Chamadas de funções
    • Ponteiros
    • Ponteiros para funções
    • Typedef
    • Alocação Dinâmica de Memória
    • Funções Recursivas 
    • Armazenamento e Recuperação de Dados
  1. Estrutura de Dados e Desenvolvimento de Software (Capítulo 3) [1/11/02]
    • TIPOS ABSTRATOS DE DADOS
    • tipos polimórficos
    • Ciclos de Desenvolvimento de Software
    • Métodos ágeis e Programação Extrema
  2. LISTAS (Capítulo 4) [8 e  22/11/2002]]
    • Conceitos
    • Listas Encadeadas
  3. PILHAS e FILAS (Capítulo 5) [29/11 e 6/12/2002]
    • Pilhas
    • Implementação de Pilha através de Estruturas Estáticas
    • Implementação de Pilha através de Estruturas Dinâmicos
    • Implementação de Pilha através de Listas
    • Filas
  4. AVALIAÇÃO PARCIAL I [13/12/2002]
  5. Estruturas de Listas Avançadas (Capítulo 6) [20/12/2002 e 24 e 31/01/2003]
    • Listas Circulares
    • Listas Duplamente Encadeadas 
    • Matrizes Esparsas
  6. ÁRVORES E GRAFOS (Capítulo 7) [7 e 14/02/03] 
    • Conceitos de  Árvores
    • Árvores Binárias 
    • Heaps 
    • Árvores N-árias 
    • Grafos 
    • Algoritmos de Grafos: Percorrendo um Grafo
    • Implementação de Grafo através de Matrizes de Adjacência
    • Algoritmo: O problema do caminho mais curto. 
    • Implementação de Grafo através de Listas de Adjacência
    • Outras Implementações
  7. Conjuntos, Buscas, e ORDENAÇÃO (Capítulo 8) [21 e  28/02/03]
    • Complexidade de Algoritmos
    • Conjuntos e Buscas
    • Ordenação
  8. APRESENTAÇÃO DE TRABALHOS[7/3/2003]
  9. AVALIAÇÃO PARCIAL II [14/03/2003]
  10. Segunda chamada [21/03/2003]
  11. EXAME FINAL  [28/03/2003]
Bibliografia
Adicional 
ESTRUTURAS DE DADOS 
Em Portugol:
Marcos Vianna  Villas e alii 1993 Estrutura de dados: Conceitos e Técnicas de Implementação  Editora Campus 

Em C (K&R): 
Aaron M . Tenenbaum, Yedidyah Langsam, e Moshe J. Augenstein 1995  Estrutura de Dados usando C  Makron Books 

Em ANSI C: 
Jeffrey Esakov e Tom Weiss  Data Structures: An Advanced Approach Using C Prentice Hall 1989 (Livro Texto)
Celso Roberto Moraes 2001 Estrutura de Dados e Algoritmos: Uma abordagem didática Berkeley Brasil

Em Java: 
Michael T Goodrich e Roberto Tamassia 2001 Estrutura de Dados e Algoritmos em Java, 2 Edição, Bookman, São Paulo
Bruno R. Preiss 2001 Estrutura de Dados e ALgoritmos Editora Campus

Em Eiffel:
Richard S. Wiener 1996 Object-Oriented Introduction to Data Structures Using Eiffel Prentice Hall 
Richard S. Wiener 1996 An Object-Oriented Introduction to Computer Science 

Em C++:
Adam Drozdek 2002 Estrutura de Dados e Algoritmos em C++ Pioneira 

EXTREME PROGRAMMING
David Astels, Granville Miller, e Miroslav Novak 2002 Extreme Programming: Guia Prático Editora Campus
 

 Laboratório  As práticas desenvolvidas no Laboratório da disciplina de Computação II tem por objetivo principal dar suporte ao aprendizado de Estrururas de Dados e outros tópicos relativos da ementa. 

Nesta edição, a coordenação das engenharias me recomendou que utilizasse a linguagem de programação C, padrão ANSI, como ferramenta de suporte a estas práticas. Assim, os conteúdos serão trabalhados de forma a facilitar uma futura transição para o uso de metodologias orientadas a objeto, enfatizando Tipos Abstrados de Dados. Embora C não seja uma linguagem Orientada a Objetos, é muito difundida em Engenharia Eletrônica por ser muito próxima da máquina. Vale salientar que muitas linguagens OO como Eiffel e C++, ao serem utilizadas no desenvolvimento de equipamentos eletro-eletrônicos e sistemas embutidos, utilizam  C como uma linguagem intermadiária no processo de desenvolvimento de software. 

A metodologia de desenvolvimento de software neste laboratório fará uso do que que se denomina "programação em pares", explorada em metodologias conhecidas como Processos Ágeis ou Programação Extrema. Também será enfatisado o reutilização de código, através de refabricação. 
Ressalva-se que atividades de programação são apenas uma das atividades necessárias ao desenvolvimento de software. Ou seja, saber programar não é suficiente. Deste modo o espaço e o tempo destinado a este Laboratório NÃO SERÁ DESTINADO exclusivamente A PROGRAMAÇÃO. Atividades como planejamento, testes, reuniões curtas, serão priorizadas. Os docentes devem vir para os laboratórios com a parte do programa que vai executar o código já trabalhada. 

Tarefa A - PRAZO FINAL 25/10/2002- Antes do Laboratório II