Disciplina

Á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

Algorithms in C

Robert Sedgewick

1997

Addison-Wesley Publishing Company


The C Programming Language,

Brian W. Kernighan, Dennis Ritchie

1988

Prentice Hall


Introduction to Algorithms

T. Cormen, C. Leiserson, R. Rivest e C. Stein

2001

McGraw Hill e MIT Press