• Não
  • Muitos projetos na área da programação envolvem a resolução de problemas computacionais complexos, para os quais soluções rápidas e simplistas podem não ser suficientemente eficientes. Esta UC foca-se na problemática da conceção de bons algoritmos e de como analisar a sua correção e a sua eficiência. Estas são questões particularmente importantes, numa altura a qualidade do software se vem tornado, progressivamente, numa questão central. Trata-se portanto de uma UC particularmente relevante para o ciclo de estudos.
  • Semestral
  • Descrição Data Ponderação
    Teste de avaliação (A definir com os alunos) 40%
    Trabalhos práticos

    (A definir com os alunos)

    60%

     

     

    A avaliação final baseia-se numa componente prática, baseada em trabalhos práticos, e, e numa componente teórica baseada num teste escrito sobre os diferentes tópicos abordados. A componente prática terá um peso de 60% e a componente teórica terá um peso de 40%, na nota final. A nota mínima de ambas as componentes será de 8 valores.

     

     

     

    Os alunos poderão ainda ser avaliados por exame de recurso, este valerá 100% da nota final.

     

  • CP1: Complexidade, classes, funções típicas e análise de algoritmos; CP2: Complexidade e recursividade (conjunto de problemas recursivos); CP3: Algoritmos de pesquisa e seleção; CP4: Algoritmos de ordenação: Insertion Sort, Heap Sort, Merge Sort e Quicksort; CP5: Comparação dos algoritmos de ordenação quanto à sua complexidade (programação do Quicksort); CP6: Tipos abstratos de dados: Pilha e Fila; CP7: Array circular, listas simples e duplamente ligadas; CP8: Implementação de Pilha e Fila (programação em array e / ou listas); CP9: Utilização de Dicionários e Conjuntos; CP10: Árvores binárias; CP11: Programação de árvores binárias; CP12: Noções básicas de grafos.
  • Os estudantes que terminam com sucesso esta unidade curricular serão capazes de: OA1. Conhecer, compreender e utilizar os algoritmos e as estruturas de dados fundamentais; OA2: Analisar e conceber algoritmos recursivos; OA3. Analisar a correção a complexidade e o desempenho de algoritmos simples; OA4. Escolher de forma fundamentada as estruturas de dados adequadas a cada problema e aplicá-las na sua resolução; OA5. Desenhar estruturas de dados ligadas e algoritmos para a sua manipulação    
  • Obrigatório
  • Utilização da metodologia de aprendizagem baseada em exercícios, através da qual os alunos são estimulados a desenvolver autonomamente soluções para problemas que lhes são colocados e que abordam a generalidade dos tópicos lecionados.
  • Português
  • Cormen, Thomas H. - Algorithms Unlocked. Cambridge, Massachusetts: MIT Press, 2013. Tamassia, Roberto, Goldwasser, Michael H., Goodrich, Michael  T. - Data Structures and Algorithms in Python. First Edition. USA: Wiley, 2013  
  • 4
  • 0
  • 5
  • 1
  • IPLUSO6382-18752
  • Algoritmos e Estruturas de Dados
  • 18752
  • 6382
  • Aplicações Informáticas para Ciências de Dados (T) (IPLUSO)