Conhecimentos de Base Recomendados
-
CB1. Literacia digital básica: utilização de um computador, gestão de ficheiros e pastas, e instalação de aplicações.
-
CB2. Competências de raciocínio lógico-matemático ao nível do ensino secundário (operações aritméticas, comparações e proposições lógicas simples).
-
CB3. Compreensão básica da língua inglesa para leitura de documentação técnica oficial e interpretação de mensagens de erro.
Métodos de Ensino
A unidade curricular adota uma metodologia eminentemente teórico-prática, centrada no modelo “aprender fazendo” (learning by doing) e na aprendizagem baseada na resolução de problemas:
-
ME1. Exposição Teórico-Prática: Apresentação breve e focada de cada conceito, seguida de aplicação imediata em ambiente de desenvolvimento (IDE), com resolução de exercícios em aula. [OA1, OA2]
-
ME2. Resolução de Problemas Práticos: Exercícios de programação de dificuldade crescente ao longo do semestre, com feedback regular do docente, consolidando progressivamente cada bloco de conteúdos. [OA2, OA3, OA4]
-
ME3. Aprendizagem Baseada em Projeto (PBL): Desenvolvimento do projeto prático final, que integra e aplica de forma transversal os conteúdos lecionados, simulando a resolução de um problema real. [OA3, OA4, P8]
-
ME4. Orientação Tutorial: Sessões de apoio para esclarecimento de dúvidas, acompanhamento do projeto e orientação sobre o uso crítico de ferramentas de apoio, incluindo Inteligência Artificial, na aprendizagem e depuração de código. [CD2, CD3]
Resultados de Aprendizagem
A unidade curricular de Fundamentos de Programação é destinada a estudantes sem experiência prévia na área. Tem como propósito dotar os estudantes dos alicerces necessários para o desenvolvimento de algoritmos utilizando a linguagem Python.
Objetivos de Aprendizagem (OA):
-
OA1. Compreender os fundamentos da lógica algorítmica e do pensamento computacional.
-
OA2. Aplicar a sintaxe básica, os tipos de dados e as estruturas de controlo de fluxo da linguagem Python na resolução de exercícios.
-
OA3. Desenvolver, testar e depurar (debug) programas funcionais simples para a resolução de problemas práticos.
-
OA4. Utilizar funções, estruturas de dados (listas, tuplos, dicionários e conjuntos), bibliotecas/módulos e operações básicas de leitura e escrita em ficheiros na construção de programas Python.
Competências a Desenvolver (CD):
-
CD1. Capacidade de abstração para traduzir problemas reais em sequências lógicas e computacionais.
-
CD2. Autonomia na pesquisa, leitura e interpretação de documentação técnica oficial e mensagens de erro.
-
CD3. Utilização crítica de ambientes de desenvolvimento integrados (IDE) e ferramentas de apoio, incluindo o uso responsável de Inteligência Artificial para auxílio na aprendizagem e depuração de código.
Programa
-
P1. Algoritmia, Introdução ao Python e Ambiente de Desenvolvimento: Introdução ao pensamento computacional, lógica de programação e algoritmos. Instalação, configuração do ambiente de desenvolvimento Python (IDE) e introdução ao uso crítico de ferramentas de apoio/IA para aprendizagem. [OA1, OA2, CD1, CD3]
-
P2. Tipos de Dados, Variáveis e Operações: Declaração de variáveis, tipos de dados primitivos, operadores lógicos e aritméticos, e operações básicas de entrada e saída (Input/Output). [OA2]
-
P3. Estruturas de Controlo de Fluxo: Estruturas sequenciais, de seleção (if, elif, else) e de repetição (for, while). [OA2, OA3]
-
P4. Funções e Programação Modular: Definição de funções, passagem de parâmetros, retorno de valores e boas práticas de estruturação de código. [OA4]
-
P5. Estruturas de Dados: Compreensão e manipulação de listas, tuplos, dicionários e conjuntos, incluindo a manipulação avançada de strings. [OA4]
-
P6. Módulos e Bibliotecas: Compreensão, importação e utilização de bibliotecas e módulos para expansão de funcionalidades. [OA4, CD2]
-
P7. Tratamento de Ficheiros: Operações básicas de abertura, leitura e escrita em ficheiros de texto estruturado. [OA4]
-
P8. Integração, Depuração (Debugging) e Projeto Prático: Teste, identificação e correção de erros lógicos e sintáticos, consolidação global dos conteúdos e desenvolvimento/acompanhamento do projeto prático final. [OA3, CD2]
Docente(s) responsável(eis)
Paulo Jorge Pinto SoaresMétodos de Avaliação
A unidade curricular contempla dois regimes de avaliação autónomos:
A) Avaliação Contínua
Exige assiduidade mínima de 75% das sessões letivas presenciais. Estrutura:
-
MA1. Frequência 1 (15%): avaliação escrita/prática em contexto de aula sobre a matéria lecionada até à data. (Diretriz IA: Nível 0)
-
MA2. Frequência 2 (15%): avaliação escrita/prática em contexto de aula sobre a matéria lecionada até à data (caráter acumulativo). (Diretriz IA: Nível 0)
-
MA3. Frequência 3 (15%): avaliação escrita/prática em contexto de aula sobre a totalidade dos conteúdos lecionados. (Diretriz IA: Nível 0)
-
MA4. Projeto Prático e Defesa Oral (55%): implementação de um programa Python que integra os conteúdos lecionados, podendo ser realizado individualmente ou em grupo (máx. 2 alunos), culminando numa apresentação e defesa oral individual obrigatória na última semana de aulas. Nota mínima de 9,5 valores. A incapacidade de justificar ou demonstrar compreensão do código apresentado resulta na anulação total do projeto. (Diretrizes IA: Fase de desenvolvimento - Nível 2, com responsabilização do estudante; Fase de defesa oral - Nível 0, o estudante explica e justifica o código)
Nota mínima final de aprovação: >= 9,5 valores.
B) Avaliação por Exame Final
Destinada aos estudantes que não optem pelo regime de Avaliação Contínua, que não cumpram o requisito de assiduidade mínima (75%), ou que não obtenham aprovação na mesma.
-
Prova de Exame (100%): Prova escrita e/ou prática global abrangendo a totalidade dos conteúdos programáticos lecionados na unidade curricular. Durante a realização da prova, é permitida a consulta de documentação fornecida pelo docente. Sempre que seja considerado pertinente pelo docente, a nota obtida na prova escrita/prática ficará sujeita à realização de uma defesa oral individual do exame realizado. (Diretriz IA: Nível 0)
Nota mínima final de aprovação: 9,5 valores.
Diretrizes Transversais para a Utilização de Inteligência Artificial Generativa (IA)
-
Enquadramento e Nível de Utilização:
-
Fase de Aprendizagem e Desenvolvimento do Projeto (Nível 2 - Utilização Assistida e Crítica): É permitido e encorajado o uso de ferramentas de IA Generativa (ex.: ChatGPT, Claude, GitHub Copilot) exclusivamente como apoio à aprendizagem, consulta de sintaxe, exploração de conceitos e depuração de erros (debugging).
-
Provas Presenciais e Defesas (Nível 0 - Utilização Proibida): É estritamente proibida a utilização de ferramentas de IA durante as Provas de Frequência (MA1, MA2, MA3), na Defesa Oral Individual do Projeto e na Prova de Exame Final.
-
-
Responsabilização e Autoria do Código: O estudante é inteiramente responsável pela integridade, correção e autoria técnica de todo o código submetido. O uso de assistentes de IA não diminui nem substitui a responsabilidade individual.
-
Critério de Validação e Anulação: Durante a Defesa Oral do projeto prático ou a defesa oral do exame (caso solicitada), o estudante será avaliado estritamente pela sua capacidade de explicar, justificar e responder a questões sobre o código e/ou prova apresentada. A incapacidade de demonstrar compreensão técnica cabal resulta na anulação da respetiva prova/projeto.
Estágio(s)
NAO
Bibliografia
Bibliografia Principal
-
Matthes, E. (2023). Python crash course: A hands-on, project-based introduction to programming (3.ª ed.). No Starch Press. ISBN: 978-1-71850-270-3.
-
Sweigart, A. (2025). Automate the boring stuff with Python (3.ª ed.). No Starch Press. [Disponível gratuitamente em https://automatetheboringstuff.com/].
Bibliografia Complementar
-
Python Software Foundation. (s.d.). The Python tutorial – Official documentation. https://docs.python.org/3/tutorial/
-
Ramalho, L. (2022). Fluent Python: Clear, concise, and effective programming (2.ª ed.). O’Reilly Media. ISBN: 978-1-49205-635-5.
-
W3Schools. (s.d.). Python tutorial and references. https://www.w3schools.com/python/