Ficha Unidade Curricular (FUC)

Informação Geral / General Information


Código :
03587
Acrónimo :
03587
Ciclo :
1.º ciclo
Língua(s) 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
Aula Prática e Laboratorial (PL) :
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


2026/2027

Pré-requisitos / Pre-Requisites


Conhecimentos de desenvolvimento de software em Python correspondentes aos conteúdos da UC 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 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, reescrever e examinar formas comuns de organização de dados e algoritmos associados; OA2: Identificar a estrutura de dados mais apropriada e eficiente para um determinado problema; OA3: 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; OA4: Perceber as vantagens e desvantagens de algoritmos recursivos, iterativos e técnicas de programação dinâmica; OA5. Compreender diferentes algoritmos de pesquisa e ordenação apropriados a soluções computacionais.

Conteúdos Programáticos / Syllabus


CP1: Estruturas de Dados e Algoritmos: o que são e por que são importantes. Tipos Abstratos de Dados. CP2: Estruturas de dados lineares: pilhas, filas, filas de dupla entrada, listas e listas ligadas. CP3: Introdução à análise da complexidade (eficiência) de algoritmos. CP4: Algoritmos de pesquisa: linear e binária. CP5: Recursão, backtracking, iteração e programação dinâmica. CP6: Algoritmos de ordenação iterativos: Bubblesort, Selectionsort e Insertionsort. CP7. Algoritmos de ordenação recursivos: Mergesort e Quicksort. CP8: Estruturas de dados não lineares: árvores, árvores de pesquisa binária, árvores AVL e grafos. CP9: Algoritmos simples sobre estruturas de dados não lineares.

Demonstração da coerência dos conteúdos programáticos com os objetivos de aprendizagem da UC / Evidence that the curricular unit's content dovetails with the specified learning outcomes


No seu conjunto, os conteúdos programáticos propostos (CP1 a CP9) permitem ganhar conhecimento e experiência para identificar, reescrever e examinar formas comuns de organização de dados e algoritmos, propor e analisar estruturas de dados alternativas e resolver eficientemente novos problemas, os objetivos de aprendizagem propostos em OA1, OA2 e OA3. Especificamente o conteúdo programático CP5, mas também CP6 e CP7, permitem ganhar conhecimentos e experimentar o que são, e as diferenças entre algoritmos iterativos e recursivos, contribuindo para o objetivo de aprendizagem OA4. Os conteúdos programáticos CP4, CP6 a CP7 apresentam os principais algoritmos de pesquisa e ordenação implementados de formas diferentes, contribuindo para objetivo de aprendizagem OA5.

Avaliação / Assessment


Está aprovada pela Comissão Pedagógica da ISTA que a avaliação de EDA é feita apenas por avaliação ao longo do semestre (ver Observações 1). Não é, portanto, possível fazer a avaliação de EDA com um exame com valor de 100%. Critérios mínimos de assiduidade: 75% das 12 semanas x 3h de aulas. Elementos de avaliação e respetivas ponderações na nota final: - teste escrito individual -> 60%, nota mínima de 7,5 valores, previsto realizar na aula pós-laboral da última semana de aulas; - trabalho 1, individual, com teste oral -> 15%; - trabalho 2, individual ou em grupos de 2 elementos (a decidir), com teste oral individual -> 25%, nota mínima de 7,5 valores. A classificação final é obtida com a média ponderada: Nota_final = 60% x Nota_teste + 15% x Nota_trabalho1 + 25% x Nota_trabalho2. As classificações dos 3 elementos de avaliação são usadas na fórmula sem arredondamento à unidade. Para obter aprovação na UC a Nota_final tem que ser maior ou igual a 10 valores. Os alunos devem conhecer o Regulamento disciplinar de discentes (ver Observações 2) e cumprir os seus deveres gerais, conforme descrito no nº 2 do Artigo 2º desse regulamento (ver Observações 2). Os alunos com estatuto especial conferido pelos Serviços de Gestão do Ensino (contatar estes Serviços, pois os docentes não têm competência para conceder estes estatutos) podem ter acesso à época especial (ver Observações 3). 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 7,5 valores; - dois trabalhos individuais, com teste oral individual -> 15% + 25%, nota mínima de 7,5 valores em cada um dos trabalhos. A classificação final em época especial é obtida do mesmo modo que em época normal (avaliação ao longo do semestre).

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 de trabalhos individuais ou de grupo. MEA4: Ativas, com resolução prática pelos estudantes de exercícios de aplicação, quer em trabalho autónomo dos estudantes, quer acompanhados pelos professores.

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


Esta UC requer conceitos teóricos, fundamentais para a compreensão dos diferentes conteúdos programáticos, pelo que a parte teórica das aulas teóricao-práticas é fundamental para explorar e consolidar os conceitos base necessários para todos os objetivos de aprendizagem. As aulas prático-laboratoriais permitem a experimentação prática (em particular usando programação em Python) e a aplicação de conhecimentos, o que também implica trabalho autónomo por parte do estudante. As metodologias de ensino usadas prioritizam 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.

Observações / Observations


Regulamentos académicos: https://www.iscte-iul.pt/estudar/informacao-academica-3835/regulamentos-formularios De entre estes têm são particularmente relevantes para esta UC: 1. Regulamento Geral de Avaliação de Conhecimentos e Competências (RGACC): https://www.iscte-iul.pt/assets/files/2024/07/31/1722381490670_Regulamento_Geral_de_Avaliza__o_de_Conhecimentos_e_Compet_ncias__RGACC_.pdf 2. Regulamento disciplinar de discentes: https://www.iscte-iul.pt/assets/files/2022/07/01/1656694443408_Regulamento_disciplinar_de_discentes_Dez2010__002_.pdf 3. Regulamento dos estudantes com estatuto especial (2017): https://www.iscte-iul.pt/assets/files/2019/07/17/1563358290981_1504604949464_Regulamento_de_Estudantes_com_Estatuto_Especial.pdf e https://www.iscte-iul.pt/estudar/informacao-academica-3835/regulamentos-formularios/estudantes-com-estatuto-especial

Bibliografia Principal / Main Bibliography


- J. Wengrow, A Common-Sense Guide to Data Structures and Algorithms in Python, Volumes 1 and 2,. The Pragmatic Bookshelf, 2024. - 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


2026-07-31