Algoritmos e Complexidade
Serão apresentados os algoritmos de ordenação elementares e avançados, focando naqueles que encontramos na maioria das bibliotecas. Serão apresentadas as principais técnicas para o desenho e a análise de algoritmos. Far-se-á uma introdução à complexidade em termos de tempo e de espaço, apresentando-se as principais notações.
Este curso inclui os seguintes tópicos:
– Algoritmos de ordenação elementares e avançados: insertion sort, selection sort, bubblesort, quicksort, mergesort e heapsort.
– Técnicas para o desenho dos algoritmos: dividir para conquistar, janela deslizante, programação dinâmica e algoritmos gananciosos.
-Algoritmos de ordenação em tempo linear.
– Análise da complexidade de algoritmos.
– Algoritmos sobre as diferentes estruturas de dados, como algoritmos de pesquisa e algoritmos de procura em grafos.
Três sessões por semana: 3a e 5a das 17:30 às 20:00 Sábados das 9:30 às 12:00
Este módulo tem como objetivo conhecer, compreender e utilizar os algoritmos fundamentais para a resolução de problemas computacionais. Estuda-se as técnicas fundamentais para o desenho de algoritmos. Analisa-se a complexidade das soluções em termos do tempo e do espaço necessários.
Os estudantes que terminam com sucesso este módulo serão capazes de:
- Analisar o desempenho de algoritmos simples;
- Escolher de forma fundamentada as técnicas algorítmicas e algoritmos para cada problema e aplicá-las na sua resolução;
- Desenhar algoritmos para a manipulação de estruturas de dados.
Fundamentos de Programação.
Os resultados da aprendizagem são avaliados através de uma componente prática (CP), nomeadamente da realização de um projeto e respetivo relatório (50%) e de uma componente teórica (CT), a qual é constituída por um exame (50%). Ambas as componentes têm nota mínima de 9,50.