Ficha Unidade Curricular (FUC)

Informação Geral / General Information


Código :
03587
Acrónimo :
03587
Ciclo :
1.º ciclo
Línguas de Ensino :
Português (pt)
Língua(s) amigável(eis) :
Inglês

Carga Horária / Course Load


Semestre :
2
Créditos ECTS :
6.0
Aula Teórica (T) :
0.0h/sem
Aula Teórico-Prática (TP) :
18.0h/sem
Trabalho de Campo (TC) :
0.0h/sem
Seminario (S) :
0.0h/sem
Estágio (E) :
0.0h/sem
Orientação Tutorial (OT) :
1.0h/sem
Outras (O) :
0.0h/sem
Horas de Contacto :
37.0h/sem
Trabalho Autónomo :
113.0
Horas de Trabalho Total :
150.0h/sem

Área científica / Scientific area


Ciências e Tecnologias da Programação

Departamento / Department


Departamento de Ciências e Tecnologias da Informação

Ano letivo / Execution Year


2023/2024

Pré-requisitos / Pre-Requisites


Conhecimentos básicos de programação.

Objetivos Gerais / Objectives


Esta disciplina introduz conceitos importantes de estruturas de dados, de algoritmos e de eficiência algorítmica. Estes conceitos são introduzidos numa perspetiva de desenvolver e encorajar, nos estudantes, o pensamento crítico. Do ponto de vista do desenvolvimento de software, pretende-se uma consolidação do desenvolvimento de software de uma forma estruturada e segundo o paradigma de orientação a objetos. Serão apresentadas e utilizadas estruturas clássicas de organização de dados (lineares e não-lineares) e algoritmos associados, bem como algoritmos clássicos de procura e estruturação, numa perspetiva de resolver problemas complexos de uma forma eficiente. Caso o tempo o permita, tópicos adicionais poderão ser abordados. A componente prática de programação, com recurso à linguagem de programação Python, é essencial. Serão introduzidas práticas de trabalho centrados na gestão de dados.

Objetivos de Aprendizagem e a sua compatibilidade com o método de ensino (conhecimentos, aptidões e competências a desenvolver pelos estudantes) / Learning outcomes


No final da UC os alunos deverão ser capazes de: OA1: identificar e saber implementar a estrutura de dados mais apropriada para um determinado problema; OA2: saber avaliar e comparar a ordem de desempenho e eficiência de uma dada estrutura de dados e/ou algoritmo para as operações de inserção, remoção e acesso; OA3: compreender a importância de conceber algoritmos eficientes; OA4: compreender e saber aplicar os conceitos de implementações com representação estática ou dinâmica; OA5: compreender e saber aplicar programação por referência (ponteiros); OA6: perceber as vantagens e desvantagens de algoritmos recursivos.

Conteúdos Programáticos / Syllabus


CP1: Conceitos fundamentais (algoritmo e programa). CP2: Tipos Abstratos de Dados e Programação Orientada a Objetos. CP3: Estruturas de dados lineares: pilhas, filas e listas ligadas. CP4: Recursão. CP5: Introdução à análise de algoritmos. CP6: Estruturas de dados hierárquicas: árvores. CP7: Grafos.

Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes


OA1: CP1 a CP7 OA2,3: CP3 a CP7 OA4,5: CP3, CP4, CP6 e CP7 OA6: CP3, CP4, CP6 e CP7

Avaliação / Assessment


A aprovação nesta unidade curricular (UC) só pode ser conseguida pela modalidade de avaliação periódica ou pela época especial (para os alunos que a ela possam aceder). Não existe para esta UC a modalidade de avaliação por exame. Elementos de avaliação e respetivas ponderações na nota final: - teste 1, escrito individual -> 30%, nota mínima de 8 valores, previsto realizar no período de avaliações do 3º trimestre; - teste 2, escrito individual -> 30%, nota mínima de 8 valores, previsto realizar no período de avaliações da 1a época; - trabalho 1, individual, com discussão -> 15%, nota mínima de 8 valores; - trabalho 2, individual, com discussão (eventualmente em grupos de 2 alunos) -> 25%, nota mínima de 8 valores. Assim Nota_final = 30% x Nota_teste1 + 30% x Nota_teste2 + 15% x Nota_trabalho1 + 25% x Nota_trabalho2. Em Época Especial, os elementos de avaliação e respetivas ponderações na nota final são: - teste, escrito individual -> 60%, nota mínima de 8 valores, e - dois trabalhos, individuais -> 15% + 25%, nota mínima de 8 valores em cada um dos trabalhos. Assim Nota_final_época_especial = 60% x Nota_teste + 15% x Nota_trabalho1 + 25% x Nota_trabalho2. Para obter aprovação na UC a Nota_final ou a Nota_final_época_especial têm que ser 10 valores em 20 valores.

Metodologias de Ensino / Teaching methodologies


Serão utilizadas as seguintes metodologias de ensino-aprendizagem (MEA): MEA1: Expositivas, para apresentação do enquadramento teórico MEA2: Ilustrativas, para exemplificação dos conceitos teóricos em contextos reais MEA3: Argumentativas, com apresentação e discussão do trabalho de grupo. MEA4: Ativas, com resolução prática de exercícios de aplicação.

Demonstração da coerência das metodologias de ensino e avaliação com os objetivos de aprendizagem da UC / Evidence that the teaching and assessment methodologies are appropriate for the learning outcomes


As metodologias de ensino relevam a aquisição de conhecimentos de um modo ativo e através da resolução de problemas/projetos, de modo a consolidar o conhecimento e adquirir competências. O alinhamento entre cada instrumento de avaliação e os objetivos definidos para a UC é realizado progressivamente e à medida dos CP concretizados e de modo a que todos os objetivos sejam conseguidos da melhor forma.

Observações / Observations


Bibliografia Principal / Main Bibliography


- J. Wengrow, A Common-Sense Guide to Data Structures and Algorithms, Second Edition. The Pragmatic Bookshelf, 2020. - M. Goodrich, R. Tamassia, and M. Goldwasser, Data Structures & Algorithms in Python. Wiley, 2013.

Bibliografia Secundária / Secondary Bibliography


- B. Miller and D. Ranum, Problem Solving with Algorithms and Data Structures using Python, Second Edition, Release 3.0. 2013. - T. Cormen, C. Leiserson, R. Rivest, and C. Stein, Introduction to Algorithms, Fourth Edition. MIT Press, 2022. - Referências adicionais a indicar durante as aulas.

Data da última atualização / Last Update Date


2024-02-16