-
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.
-
Disciplina do curso
Disciplina do curso
-
Grau | Semestres | ECTS
Grau | Semestres | ECTS
Licenciado | Semestral | 6
-
Ano | Natureza | Lingua
Ano | Natureza | Lingua
1 | Obrigatório | Português
-
Código
Código
ULHT2531-13397
-
Pré-requisitos e co-requisitos
Pré-requisitos e co-requisitos
Não aplicável
-
Estágio Profissional
Estágio Profissional
Não
-
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
Metodologias de ensino
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.
-
Avaliação
Avaliação
Componente teórica (40% da nota final, nota mínima 9,5)
tem duas opções: avaliação contínua ou apenas uma frequência completa
- Avaliação contínua
- Frequência parte 2 (segunda metade da matéria) - 45% - nota mínima: 8 (apenas para quem passou na frequência parte 1)
- Frequência parte 1 (primeira metade da matéria) - 45% - nota mínima: 8
- 3 TPCs - 10%
- Frequência completa (toda a matéria) - 100% - nota mínima: 9,5
Componente prática (60% da nota final, nota mínima 9,5)
-
2 mini-fichas presenciais - 25%, feitas durante a aula prática, usando o Drop Project (ferramenta de validação automática de código)
- Participação - 10%, calculada a partir do número de fichas práticas submetidas dentro do prazo
- Projeto em grupos de 2, com defesa presencial - 65% (apenas serão aceites grupos de 1 aluno em situações excepcionais, devidamente justificadas)
- A defesa presencial inclui alterações no código da aplicação que cada aluno terá que fazer individualmente assim como perguntas colocadas individualmente.
- A nota da defesa presencial pode ir de 0 a 100% e é aplicada à nota do projecto
Nota: Se tiver nota mínima numa componente, essa nota é transferida para época de recurso e época especial do mesmo ano letivo.
Em época de recurso e especial, mantém-se a obrigatoriedade de aprovar na componente teórica e prática (nota mínima em cada uma é 9,5). A componente teórica é avaliada através de um exame e a componente prática é avaliada através de um projeto e respetiva defesa individual.
- Avaliação contínua
-
Mobilidade
Mobilidade
Não




