Fundamentos de Programação

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 Soares

Mé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)

CF = 0,15 * MA1 + 0,15 * MA2 + 0,15 * MA3 + 0,55 * MA4

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/