If969 -‐ Algoritmos e Estruturas de Dados

Propaganda
If969 -­‐ Algoritmos e Estruturas de Dados Centro de Informá-ca Universidade Federal de Pernambuco Sistemas de Informação Vinicius Cardoso Garcia [email protected] © 2011 – Vinicius Cardoso Garcia Missão •  Mo-var, apresentar, exercitar e consolidar o uso de algoritmos de programação e estrutura de dados para a resolução de problemas computacionáveis Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 2 Ementa •  Ensinar os conceitos básicos de algoritmos; algoritmos e estruturas de dados dinâmicas básicas; técnicas de construção de algoritmos; conceitos de complexidade de algoritmos. Este curso visa trabalhar principalmente introdução a algoritmos e estruturas de dados, incluindo projeto, análise e implementação na linguagem Java. Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 3 Obje<vo Geral da Disciplina •  Discu-r técnicas de programação e estruturação de dados para o desenvolvimento de programas eficientes Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 4 Obje<vos Específicos da Disciplina •  Revisão dos conceitos fundamentais de computação e linguagens de programação –  Java e Python •  Resolução de problemas por meio do uso de construções básicas de programação •  Solução computacional de problemas u-lizando mecanismos de abstração e estruturação •  U-lização de -pos de dados estruturados na solução de problemas computacionais •  Inves-gação de algoritmos de pesquisa e ordenação e seus usos na resolução de problemas •  Ives-gação de noções de complexidade computacional Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 5 Programa da Disciplina 1.  Análise de Algoritmos a.  Análise do Pior Caso; b.  Notação Assintó-ca; 2.  Estruturas de Dados. a. 
b. 
c. 
d. 
Listas ligadas: simples, duplas, circulares; Alocação dinâmica de memória; Pilhas, Filas: alocação está-ca e dinâmica; Árvores: binárias; i.  Construção recursiva de árvores; ii.  Caminhamento em árvores: préfixo, pósfixo e central; e.  Grafos: orientados e não-­‐orientados; f.  Aplicações. Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 6 Programa da Disciplina 3.  Pesquisas de Dados. a.  Seqüencial e Binária; b.  Árvores: busca (largura e profundidade), inserção e remoção; balanceamento; c.  Grafos: busca, árvore geradora; d.  Aplicações. 4.  Conceitos Básicos de NP-­‐Completude a.  Problemas NP-­‐completos; b.  Redu-bilidade; c.  Aplicações. 5.  Projeto Final da Disciplina Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 7 Infra-­‐estrutura de Apoio •  Site da disciplina –  hhp://viniciusgarcia. com/courses/if969 •  Lista de Discussão [google] •  Referências Bibliográficas –  Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronaldo L.; Stein, Clifford; Introduc-on to Algorithms -­‐ Third Edi-on, MIT Press, 2009. Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 8 Bibliografia Complementar •  Estruturas de Dados e Algoritmos em Java. Michael T. Goodrich & Roberto Tamassia. 4ª edição. Ed. Bookman, 2007 •  TENENBAUM, A. M.; LANGSAN, Y.; AUGENSTEIN, M. J. Estruturas de Dados Usando C. São Paulo: Makron Books, 1995. •  ZIVIANI, Nivio. Projeto de Algoritmos. Editora Nova Fronteira, 2004. •  SEDGEWICK, Robert. Algorithms in C++. Addison Wesley, 2000. •  MANBER, Udi. Introduc-on to Algorithms: A Crea-ve Approach. Addison Wesley, 1989. •  SEDGEWICK, Robert. and Flajolet, Philippe. An Introduc-on to the Analysis of Algorithms. Addison Wesley, 1996. Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 9 Bibliografia Complementar •  Boas prá-cas –  A. Hunt, D. Thoma,. The Pragma-c Programmer, Addison Wesley, 2000 –  A. Oram, G. Wilson, Beau-ful Code, O’Reilly, 2007 –  R. C. Mar-n, Clean Code, Pren-ce Hall, 2009 –  How to Think Like a Computer Scien-st – Python Version •  hhp://www.greenteapress.com/thinkpython/
thinkCSpy Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 10 SoGware •  Python versão 2.7.2 –  hhp://www.python.org/download/ •  Gedit ou IDLE –  hhp://www.python.org/cgi-­‐bin/moinmoin/
PythonEditors •  Eclipse –  hhp://www.eclipse.org/downloads/ •  Netbeans –  hhp://netbeans.org/downloads/index.html Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 11 Avaliação •  Lista de Exercício: 10% nota –  2.0 pts •  Prova: 65% nota –  (1º E.E.) 8.0 pts –  (2º E.E.) 5.0 pts •  Projeto: 25% nota –  5.0 pts Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 12 Sobre as ferramentas • 
• 
• 
• 
O curso é Algoritmos e Estrutura de Dados Linguagem de programação Normalmente u-liza-­‐se C/C++ Nós vamos u-lizar Python para descrever os algoritmos em sala e Java para implementação das Listas –  Python: a melhor LP para ensino de algoritmos –  Sem burocracias (declaração de variáveis, de classes, etc) que desviam do foco algoritmo –  Roda! (nao é um pseudo-­‐código), –  Tem vida (um grupo forte e crescente de usuários) –  Casos de sucesso: hhp://www.python.org/about/success/ Algoritmos e Estrutura de Dados Apresentação do Curso © 2011 – Vinicius Cardoso Garcia 13 
Download