Disciplina
Introdução aos Algoritmos e Estruturas de Dados
Área
Área Científica de Metodologia e Tecnologias da Programação > Algoritmia
Activa nos planos curriculares
LEIC-T 2021 > LEIC-T 2021 > 1º Ciclo > Área Principal > Introdução aos Algoritmos e Estruturas de Dados
GENI > GENI > 1º Ciclo > Área Principal > Obrigatórias > Introdução aos Algoritmos e Estruturas de Dados
LEME 2021 > LEME 2021 > 1º Ciclo > Área Principal > Introdução aos Algoritmos e Estruturas de Dados
LETI 2021 > LETI 2021 > 1º Ciclo > Área Principal > Introdução aos Algoritmos e Estruturas de Dados
LEIC-A 2021 > LEIC-A 2021 > 1º Ciclo > Área Principal > Introdução aos Algoritmos e Estruturas de Dados
Min-EG 2022 > Min-EG 2022 > Inteligência Artificial e Robótica > Introdução aos Algoritmos e Estruturas de Dados
LERC 2006 > LERC 2006 > 1º Ciclo > Ciências da Engenharia Informática > Introdução aos Algoritmos e Estruturas de Dados
LEIC-A 2006 > LEIC-A 2006 > 1º Ciclo > Ciências da Engenharia Informática > Introdução aos Algoritmos e Estruturas de Dados
LEIC-T 2006 > LEIC-T 2006 > 1º Ciclo > Ciências da Engenharia Informática > Introdução aos Algoritmos e Estruturas de Dados
Nível
Exame (60%) + 2 Projectos Individuais + 1 Teste Prático (40%).
Tipo
Não Estruturante
Regime
Semestral
Carga Horária
1º Semestre
2.5 h/semana
1.5 h/semana
112.0 h/semestre
Objectivos
Ganhar conhecimentos de programação numa linguagem imperativa. Adquirir conhecimentos sobre algoritmos básicos de ordenação e procura. Saber seleccionar, criar e utilizar estruturas de dados elementares. Saber projectar algoritmos iterativos e recursivos, para a resolução de problemas. Saber analisar a complexidade dos algoritmos utilizados para resolver um dado problema por forma a poder escolher aqueles que sejam mais eficientes.
Programa
Introdução à programação imperativa e à linguagem de programação C. Introdução ao estudo da eficiência de algoritmos. Algoritmos de ordenação elementares e avançados: inserção directa, selecção directa, bubblesort, quicksort, fusão binária, heapsort, shellsort, counting sort e radix sort. Tipos de dados: pilhas, filas de espera, filas de prioridade, amontoados, árvores. Implementações vectoriais e dinâmicas. Árvores binárias de pesquisa. Árvores de pesquisa equilibradas. Tabelas de dispersão. Resolução de colisões por encadeamento e por endereçamento aberto. Endereçamento linear, quadrático e dispersão dupla.
Metodologia de avaliação
Exame (60%) + 2 Projectos Individuais + 1 Teste Prático (40%).
Pré-requisitos
Aprovação à cadeira de Fundamentos da Programação
Componente Laboratorial
Exercícios de Programação a desenvolver todas as aulas no seguimento das matérias aprendidas nas aulas teóricas.
Princípios Éticos
Todos os membros de um grupo são responsáveis pelo trabalho do grupo. Em qualquer avaliação, todo aluno deve divulgar honestamente qualquer ajuda recebida e fontes usadas. Numa avaliação oral, todo aluno deverá ser capaz de apresentar e responder a perguntas sobre toda a avaliação.
Componente de Programação e Computação
No curso onde esta UC é oferecida estão asseguradas as componentes de Computação e Programação de acordo com o MEPP 2122.
Componente de Competências Transversais
Não existindo uma componente explícita de Competências Transversais a desenvolver no âmbito desta UC, o desenvolvimento de 2 projectos individuais levará ao desenvolvimento de Pensamento Crítico e Inovador e Competências Intrapessoais.
Bibliografia
Principal
Addison-Wesley Publishing Company
Brian W. Kernighan, Dennis Ritchie
T. Cormen, C. Leiserson, R. Rivest e C. Stein