-
Apresentação
Apresentaçã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.
-
Disciplina do curso
Disciplina do curso
-
Grau | Semestres | ECTS
Grau | Semestres | ECTS
Licenciado | Semestral | 6
-
Ano | Natureza | Lingua
Ano | Natureza | Lingua
2 | Obrigatório | Português
-
Código
Código
ULHT6634-13558
-
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
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: Funções de dispersão: aberta e fechada;
CP10: Tabelas de hash (prática de utilização de Dicionários e Conjuntos);
CP11: Árvore binária, árvores AVL e árvore preta e vermelha;
CP12: Árvore binária (programação de árvore binária);
CP13: Noções básicas de grafos: grafo orientado, não orientado e etiquetado, caminho e comprimento;
CP14: Caminho mais curto entre dois vértices - Algoritmo de Dijkstra;
CP15: Algoritmo de Dijkstra (programação).
-
Objetivos
Objetivos
OA1: Analisar e comparar a complexidade de algoritmos;
OA2: Aplicar a recursividade na resolução de problemas;
OA3: Explicar e usar alguns dos principais algoritmos de pesquisa, seleção e ordenação;
OA4: programar algoritmos de ordenação [aplicar o conhecimento (AC)];
OA5: Explicar e usar os tipos abstratos de dados: Pilha e Fila;
OA6: Programar uma Pilha e / ou Fila utilizando arrays ou listas (AC);
OA7: Explicar as funções de dispersão;
OA8: Usar as estruturas de dados Dicionários e Conjuntos na resolução de problemas (AC);
OA9: Explicar e usar as estruturas de dados: árvore binária, AVL e preta e vermelha;
OA10: Programar uma árvore binária (AC);
OA11: Explicar e dar exemplos da utilização de grafos na resolução de problemas;
OA12: Programar o algoritmo de Dijkstra (AC).
-
Metodologias de ensino e avaliação
Metodologias de ensino e avaliação
M1: Ensino expositivo: A apresentação de conceitos teóricos é feita de forma expositiva através de slides. Disponibilizam-se num canal Educast da FCCN video-tutoriais curtos desenvolvidos sobre os conceitos chave da disciplina.
M2: Ensino ativo: os conceitos teóricos são demonstrados recorrendo a "live coding" pelo docente.
M3: Aprendizagem experimental: São usadas fichas em Jupyter Notebook que permitem a experimentação imediata dos conceitos lecionados.
M4: Aprendizagem participativa: Durante as aulas é estimulada a discussão em grupo dos exercícios e projetos semanais.
M5: Auto-avaliação: foi desenvolvida uma plataforma que permite realizar quizzes para avaliação de todos os conhecimentos, cuja solução submetida é validada de forma automática.
M6: Aprendizagem orientada a projeto: são realizados de forma autónoma exercícios e projetos semanais com desafios exploratórios de aspectos complementares.
M7: Avaliação contínua: fichas semanais, quizzes, projetos, minitestes e frequencias.
-
Bibliografia principal
Bibliografia principal
- Tamassia, Roberto, Goldwasser, Michael H., Goodrich, Michael T. - Data Structures and Algorithms in Python. First Edition. USA: Wiley, 2013
- Cormen, Leiserson, Rivest e Stein - Algoritmos, Teoria e Prática, tradução da 3ª edição EUA, Elsevier Editora Ltd., 2012
- Cormen, Thomas H. - Algorithms Unlocked. Cambridge, Massachusetts: MIT Press, 2013.
-
Horário de Atendimento
Horário de Atendimento
-
Mobilidade
Mobilidade
Não