Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Á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 dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular units content dovetails with the specified 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