filmeu

Disciplina Algoritmia e Estruturas de Dados

  • Apresentação

    Apresentação

    Esta UC surge no 2º semestre do 1º ano, na continuação do trabalho iniciado em Fundamentos de Programação (FP). Em FP, os alunos deram os primeiros passos na programação e preocuparam-se principalmente em produzir programas correctos. Agora, em Algoritmia e Estruturas de Dados, irão continuar a produzir programas correctos mas com preocupações de desempenho, a nível de tempo de execução e consumo de memória.

    Esta é uma UC fundamental no currículo de um Engenheiro Informático, que na sua vida profissional encontrará inúmeras situações em que terá que resolver problemas causados por fraco desempenho das aplicações e que exigem um conhecimento sólido dos princípios subjacentes aos principais algoritmos e estruturas de dados.

    Não obstante a aprendizagem de conceitos e técnicas de algoritmia e estruturas de dados, os alunos trabalham outras competências fundamentais. Nomeadamente, o espírito crítico e a capacidade de avaliar várias alternativas para resolver os problemas.  

  • Conteúdos Programáticos

    Conteúdos Programáticos

    • funções recursivas, algoritmos recursivos
    • tipos de dados complexos
    • eficiência e optimização (algorítmica e não-algorítmica)
    • complexidade de algoritmos
    • algoritmos de pesquisa
    • algoritmos de ordenação - bubble sort, selection sort, merge sort, quick sort
    • tipos de dados abstractos - pilhas e filas
    • listas ligadas
    • árvores binárias, árvores ordenadas, árvores AVL
    • hashtables
  • Objetivos

    Objetivos

    O objectivo desta unidade curricular é introduzir os conceitos fundamentais de algoritmos e das estruturas de dados básicas, numa perspetiva de resolver problemas complexos de uma forma eficiente. O aluno deverá ser capaz de analisar e avaliar a eficiência de um algoritmo sem necessidade de o implementar ou testar. Deverá ser igualmente capaz de aplicar a estrutura de dados mais eficaz e eficiente para resolver um determinado problema.

    Concretamente, o aluno deverá conseguir criar programas em Java cuja eficiência seja um critério significativo de sucesso (ex: pesquisa, ordenação).

  • Metodologias de ensino e avaliação

    Metodologias de ensino e avaliação

    Na componente teórica, algumas aulas utilizam o modelo "flipped learning": os alunos visualizam vídeos que explicam certos conteúdos antes da aula teórica, e a aula teórica acaba por ser teórico-prática, com os alunos a resolverem exercícios relacionados com os vídeos. São também feitas sessões de live coding, em que o professor projeta o seu computador e desenvolve programas à frente dos alunos.

    Na componente prática, é utilizada uma ferramenta de validação automática de código (Drop Project), que permite que os alunos avancem nos exercícios de forma relativamente autónoma. O projeto também é realizado nesse modelo, sem limite de tentativas: o aluno pode submeter quantas vezes quiser até passar os testes automáticos.

    O uso de LLMs é autorizado e até incentivado, no sentido de complementar e não substituir - no entanto, para evitar comportamentos de "copy&prompting" pouco didáticos, os exercícios são apresentados de forma visual (seja com diagramas seja com vídeos).

  • Bibliografia principal

    Bibliografia principal

    Lafore, R. (2003) Data Structures and Algortihms in Java. 2nd edition.

INSCRIÇÃO AVULSO
Lisboa 2020 Portugal 2020 Small financiado eu 2024 prr 2024 republica portuguesa 2024 Logo UE Financed Provedor do Estudante Livro de reclamaões Elogios