Algoritmos e Estrutura de Dados
- Detalhes
- Categoria: Disciplina
- 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 limite
Ponderação
Trabalhos práticos e mini-questionários
Última semana de aulas do semestre
60%
Testes escritos
Última semana de aulas do semestre
40%
Exame de Recurso
Fim da época de exames
100%
A avaliação final baseia-se numa componente prática, baseada em trabalhos práticos, participação nas aulas e assiduidade, e numa componente teórica baseada em testes escritos 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. No caso de uma nota inferior a 8 valores numa das componentes, essa será a nota final de avaliação.
O aproveitamento nesta UC está dependente da frequência de um mínimo de 75% das aulas lecionadas no semestre.
As componentes prática e teórica são requeridas em todas as épocas de avaliação.
Assim, a época de recurso pode consistir em:
- Exame escrito: para os alunos que não tiveram aproveitamento na componente teórica em avaliação contínua.
- (Re)Submissão dos trabalhos: para os alunos que não tiveram aproveitamento na componente prática em avaliação contínua.
- Exame escrito + (re)submissão dos trabalhos: para os alunos que não tiveram aproveitamento nem na componente teórica nem na componente prática em avaliação contínua.- 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 projetos, 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. Esta metodologia prevê a realização de um “produto”, que representa uma solução para o problema proposto.
- 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
- IPLUSO6378-6291
- Algoritmos e Estrutura de Dados
- 6291
- 6378
- Desenvolvimento para a Web e Dispositivos Móveis (T) (IPLUSO)