| Código |
12121
|
| Ano |
3
|
| Semestre |
S2
|
| Créditos ECTS |
6
|
| Carga Horária |
PL(30H)/T(30H)
|
| Área Científica |
Informática
|
|
Tipo de ensino |
Presencial.
|
|
Estágios |
Não aplicável.
|
|
Objectivos de Aprendizagem |
Os principais objetivos desta Unidade Curricular são: - adquirir conhecimentos sobre algoritmia, em particular algoritmos recursivos, de ordenação, de pesquisa e tabelas de Hash, e análise de complexidade dos algoritmos; - compreender os conceitos fundamentais associados aos vários tipos de estruturas de dados sequenciais (listas ligadas, pilhas, filas e listas com saltos) e não sequenciais (árvores binárias), e dos algoritmos passíveis de aplicação a cada estrutura.
No final da Unidade Curricular o estudante deve ser capaz de - desenvolver competências de algoritmia, em particular em problemas que envolvam recursividade, ordenação e/ou pesquisa; - analisar a eficiência dos algoritmos, através da respetiva análise de complexidade, de forma a usar os algoritmos mais eficientes na resolução do problema em questão; - idealizar, esquematizar e implementar estruturas de dados e respectivos algoritmos com vista à resolução de problemas.
|
|
Conteúdos programáticos |
1. Apontadores e Alocação Dinâmica de Recursos 2. Recursividade 3. Algoritmos de ordenação: iterativos (selecção e Bubblesort) e recursivos (QuicKsort e fusão) 4. Algoritmos de pesquisa: iterativos (exaustiva, sequencial e binária) e recursivo (binária) 5. Tabelas de dispersão (Hash) 6. Análise de complexidade dos algoritmos 7. Estruturas de Dados Sequênciais: Listas, Pilhas, Filas e Listas com Saltos 8. Estruturas de Dados Não-Sequênciais: Árvores binárias 9. Grafos e redes
|
|
Metodologias de Ensino e Critérios de Avaliação |
Estão previstas para a UC; - 2 horas semanais de aulas teóricas para exposição dos conceitos teóricos e teórico-práticos, através de slides - 2 horas semanais de práticas num dos laboratórios de desenvolvimento de software, nas quais o estudante irá aplicar e testar os conhecimentos adquiridos nas aulas teóricas.
Avaliação: Aprendizagem: - 4 Fichas de Trabalho: 6 valores (a realizar nas aulas práticas - 1,5 valores cada) - 2 Testes Escritos: 14 valores (7 valores cada) - Assiduidade: 75% Aprendizagem = Fichas Trabalho + Testes Escritos em que, - Assiduidade < 75% => Reprovado e Não Admitido a Exame - Fichas de Trabalho < 1,5 (em 6) => Reprovado e Não Admitido a Exame - Aprendizagem < 5,5 => Reprovado e Não Admitido a Exame - Aprendizagem >= 9,5 => Aprovado e Dispensado de Exame - Outros casos => Reprovado e Admitido a Exame Exame = Fichas Trabalho + Teste Escrito (Exame) em que, - Fichas Trabalho (realizadas durante o semestre): 6 valores - Teste Escrito (Exame): 14 valores
|
|
Bibliografia principal |
Bibliografia principal: - "Estruturas de Dados e Algoritmos em C", Tecnologias de Informação, António Manuel Adrego da Rocha, FCA - Editora Informática, 2008 - "Linguagem C", Luís Damas, FCA - Editora de Informática, 1999 Bibliografia complementar: - "Algorithms in C, Parts 1-5 (Bundle): Fundamentals, Data Structures, Sorting, Searching, and Graph Algorithms", By Robert Sedgewick, Addison-Wesley Professional; 3rd Edition, 2001 - "Elementos de Programação com C", 3ª Edição Actualizada e Aumentada, Pedro Guerreiro, FCA - Editora Informática, 2006
|
| Língua |
Português
|