Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Área científica / Scientific area
Matemática
Departamento / Department
Departamento de Matemática
Ano letivo / Execution Year
2025/2026
Pré-requisitos / Pre-Requisites
Os alunos devem estar familiarizados com os fundamentos do cálculo diferencial e integral em R^n e com noções básicas de álgebra linear. Os tópicos finais da cadeira (redes neuronais) também requerem conhecimentos básicos de teoria das probabilidades, como os lecionados no início da cadeira Probabilidades e Processos Estocásticos.
Objetivos Gerais / Objectives
Apreender conceitos e técnicas fundamentais de análise de Fourier discreta, teoria de números, criptografia, e de regressão e classificação com redes neuronais, com vista a aplicações em tratamento e processamento de sinal/imagem, cibersegurança, análise de dados e aprendizagem automática.
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 o aluno deverá ser capaz de: OA1. Determinar e interpretar transformadas de Fourier discretas. OA2. Utilizar métodos e propriedades de análise de Fourier no contexto de processamento de sinal, tratamento de imagem e compressão de dados. OA3. Implementar em python (numpy) exemplos concretos das aplicações referidas no ponto anterior. OA4. Utilizar técnicas de aritmética modular e propriedades da fatorização de números naturais no contexto de criptografia. OA5. Implementar em python (numpy) exemplos concretos das aplicações referidas no ponto anterior. OA6. Determinar arquiteturas básicas de redes neuronais para aplicar em problemas de regressão e classificação. OA7. Aplicar algoritmos de otimização numérica no contexto de problemas de aprendizagem automática com redes neuronais. OA8. Implementar em python (numpy e Keras) o descrito nos últimos dois pontos.
Conteúdos Programáticos / Syllabus
CP1. A transformada de Fourier discreta. 1.1. Números complexos 1.2. Produto interno e ortogonalidade. 1.3. Propriedades fundamentais de ondas e sinais. 1.4. A transformada de Fourier discreta e FFT. 1.5. Convolução discreta. 1.6. Tratamento e compressão de som e imagem; implementação em python. CP2. 2.1. Aritmética modular. 2.2. Números primos e fatorização. 2.3. Congruências. 2.4. Introdução à criptografia. 2.5. Implementação em Python de métodos básicos de criptografia. CP3. Redes Neuronais: 3.1. Introdução à aprendizagem automática supervisionada. 3.2. Otimização numérica: descida do gradiente e variantes. 3.3. Regressão e classificação linear. 3.4. Redes neuronais profundas. 3.5. O algoritmo Backpropagation. 3.6. Reconhecimento de imagem; implementação em python (numpy e Keras).
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
O CP1 aborda a transformada de Fourier discreta: partindo dos fundamentos matemáticos CP1.1-1.3, e das propriedades matemáticas e computacionais básicas dessa transformada CP1.4, para atingir o OA1; estes conceitos serão sempre motivados por algumas aplicações fundamentais CP1.6 e enquandrados com a sua implementação computacional eficiente em Python CP1.5 e CP1.6, em coerência com OA2 e OA3. O CP2 foca-se em temas clássicos de teoria de números, em consonância com OA4, com vista à sua aplicação em métodos de criptografia relacionados com OA4 e OA5. CP4 introduz redes neuronais e técnicas de otimização, alinhando-se com problemas de regressão e classificação (OA6, OA7). A implementação prática de métodos de aprendizagem automática em Python cria uma ligação explicita entre os CP3 e OA8.
Avaliação / Assessment
Aprovação com classificação não inferior a 10 valores numa das modalidades: - Avaliação ao longo do semestre versão 1: 3 testes (75%) + 3 avaliações práticas presenciais em python (25%), ou - Avaliação ao longo do semestre versão 2: Exame realizado na primeira época (75%) + 3 avaliações práticas presenciais em python (25%), ou - Avaliação por Exame (100%), em qualquer uma das épocas de exame. - Aprovação em avaliação ao longo do semestre v1 requer uma nota mínima de 8.0 em 20 em cada um dos testes. - Aprovação em avaliação ao longo do semestre v2 requer uma nota mínima de 8.0 em 20 no exame. - O 3º teste realizar-se-á durante a 1ª época de exames. - No caso da avaliação ao longo do semestre v1, os alunos poderão realizar pela primeira vez, ou repetir, 1 dos testes, e apenas 1, durante a 2ª época de exame, o que pode requerer a inscrição em melhoria junto dos serviçoes académicos. - A participação na aula e a apresentação de trabalho extra através da resolução de "desafios", que vão ser propostos ao longo do semestre, resultará numa possível bonificação até 1 valor. - As avaliações práticas presenciais serão realizados em grupos, formados idealmente por 3 alunos. No caso destas avaliações conterem uma componente competitiva, parte da sua avaliação irá refletir a classificação relativa dos grupos nessa competição. - Notas superiores ou iguais a 19, em qualquer das modalidades anteriores, poderão estar sujeitas a uma defesa de nota. - Todos os momentos de avaliação podem estar sujeitos a uma prova oral, caso o professor considere que há necessidade de algum tipo de clarificação.
Metodologias de Ensino / Teaching methodologies
As aulas dividem-se entre aulas de carácter teórico-prático TP e aulas em laboratório. Desenrolam-se segundo as seguintes metodologias de ensino-aprendizagem (MEA): MEA1. Exposição e discussão MEA2. Resolução de exercícios MEA3. Trabalho autónomo do aluno O aluno deve dedicar aproximadamente 4 horas semanais em trabalho autónomo para (i) leitura da bibliografia indicada e revisão da matéria, (ii) resolução de exercícios/problemas e na realização de experiências computacionais em python.
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
Metodologias de Ensino-Aprendizagem (MEA): MEA1. Exposição e discussão: Este método facilita a introdução teórica e conceptual dos temas, proporcionando aos alunos uma compreensão inicial e um espaço para esclarecer dúvidas. Ao discutir conceitos complexos como transformadas de Fourier discreta e aprendizagem automática com redes neuronais, os alunos podem começar a internalizar os fundamentos necessários para todos os OA. MEA2. Resolução de exercícios: A prática via exercícios reforça a aprendizagem teórica, permitindo aos alunos aplicarem conceitos em problemas específicos. Isso é crucial para todos os OA. MEA3. Trabalho autónomo do aluno: Incentiva a autossuficiência e o aprofundamento do conhecimento via estudo individual e prática. Com 4 horas semanais dedicadas a este fim, os alunos têm tempo para rever a bibliografia, resolver exercícios e realizar experiências computacionais em Python, essencial para todos os OA. Aulas Teórico-Práticas (TP) e Laboratoriais: Aulas TP: Integram exposição teórica com resolução de problemas, preparando os alunos para aplicar os conceitos aprendidos em situações práticas, conforme exigido pelos OA. Aulas em laboratório: Focam na implementação prática, principalmente em Python, onde os alunos podem desenvolver e testar algoritmos que surgem como aplicação dos conteúdos programáticos.
Observações / Observations
Bibliografia Principal / Main Bibliography
- João L. Costa, Slides e Notebooks da cadeira.
Bibliografia Secundária / Secondary Bibliography
- Boggess, A. and Narcowich, F. J., "A First Course in Wavelets with Fourier Analysis", Wiley, 2009. - Goodfellow, I and Bengio, Y and Courville, A, "Deep Learning", MIT press, 2016 - Chollet, F., "Deep Learning with Python: Second Edition", Manning Publications, 2021. - Rousseau, C and Saint-Aubin, Y., "Mathematics and Technology", Springer 2008. - "Discrete Mathematics and its Applications, Eighth Ediiton", McGraw Hill 2019.
Data da última atualização / Last Update Date
2025-07-25