Ficha Unidade Curricular (FUC)
Informação Geral / General Information
Carga Horária / Course Load
Área científica / Scientific area
480 - Informática
Departamento / Department
Departamento de Tecnologias Digitais
Ano letivo / Execution Year
2024/2025
Pré-requisitos / Pre-Requisites
Não existem pré-requisitos específicos para a frequência desta unidade curricular.
Objetivos Gerais / Objectives
A unidade curricular Fundamentos de Programação tem como principal objetivo dotar os estudantes de pensamento crítico, lógico e estruturado (algorítmico) na resolução de problemas de complexidade intermédia utilizando uma linguagem de programação.
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á estar apto a: OA1: Aplicar os conceitos fundamentais de programação. OA2: Criar procedimentos e funções com parâmetros. OA3: Compreender a sintaxe da linguagem de programação Python. OA4: Desenvolver soluções com programação para problemas de complexidades intermédia. OA5: Explicar, executar e depurar fragmentos de código desenvolvido em Python. OA6: Interpretar os resultados obtidos com a execução de código desenvolvido em Python . OA7: Desenvolver projetos de programação.
Conteúdos Programáticos / Syllabus
CP1. Ambientes integrados de desenvolvimento. Introdução à programação: Sequência lógica e instruções, Entrada e saída de dados. CP2. Constantes, variáveis e tipos de dados. Operações lógicas, aritméticas e relacionais. CP3. Estruturas de controlo. CP4. Listas e matrizes (listas de listas). CP5. Procedimentos e funções. Referências e parâmetros. CP6. Objetos e classes de objetos. CP7. Manipulação de ficheiros. CP8: Interface Gráfica.
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
A demonstração de coerência decorre da interligação dos conteúdos programáticos com os objetivos de aprendizagem (OA), como a seguir se explicita: OA1 está ligado aos conteúdos CP1,2,3,5,6,7, que cobrem conceitos essenciais como variáveis, controle de fluxo e manipulação de dados. OA2 conecta-se a CP1,2,3,4,5, abordando a criação de funções, parâmetros, listas e estruturas de controle, essenciais para código modular. OA3 está relacionado a todos os conteúdos inclusive CP8, desde a introdução até conceitos avançados, como objetos e interfaces gráficas. OA4 conecta-se a CP1,2,3,4,7, focando na resolução de problemas com estruturas de controle, listas e manipulação de ficheiros. OA5 e OA6 ligam-se a todos os conteúdos inclusive CP8, abrangendo execução, depuração e interpretação de código. OA7 está também ligado a todo o conteúdo inclusive CP8, exigindo aplicação total dos conhecimentos para a criação de projetos completos.
Avaliação / Assessment
A UC segue o modelo de avaliação ao longo do semestre por projeto pelo seu carácter eminentemente prático, não contemplando exame final. O estudante é avaliado de acordo com os seguintes parâmetros: A1 (30% da nota final): Tarefas de Aprendizagem validadas pelos docentes, com nota mínima de 8 valores na média das tarefas. São 10 tarefas de aprendizagem e contam as 8 melhores notas. A2 (70% da nota final): Projeto Obrigatório em Grupo (máximo 3 integrantes) com discussão teórico-prática (Entrega: 30%, Prático-oral: 40% com nota mínima de 8). O componente A2 possui nota mínima de 9,5 valores. O estudante que não atingir nota mínima poderá fazer um Projeto Prático a 100% com discussão oral. É exigida uma assiduidade mínima não inferior a 2/3 das aulas.
Metodologias de Ensino / Teaching methodologies
A Unidade Curricular seguirá uma abordagem baseada nas Teorias de Desenvolvimento Cognitivo, como a Teoria do Desenvolvimento Cognitivo de Jerome Bruner (para ensino), e Teoria da Aprendizagem Cumulativa de Robert Gagné (para aprendizagem). O Modelo Instrutivo é baseado em um Modelo Sistémico como o Modelo Instrucional dos Quatro Componentes para aprendizagens complexas (4C-ID, Merriënboer). As tarefas de aprendizagem são o centro do processo de instrução, com Aulas Teóricas (T), Aulas Práticas e Laboriatoriais (PL) e Orientação Tutorial (OT). Serão abordadas práticas pedagógicas ativas que se resumem nos tópicos de metodologias ensino e de aprendizagem a seguir: MEA1: Aprendizagem Baseada em Tarefas. MEA2: Aprendizagem baseada em Projeto.
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
A coerência entre as metodologias de ensino e avaliação (MEA) e os objetivos de aprendizagem (OA) é fundamentada em abordagens pedagógicas que favorecem a aplicação prática e a integração de competências. As metodologias adoptadas, nomeadamente MEA1 (Aprendizagem Baseada em Tarefas) e MEA2 (Aprendizagem Baseada em Projetos), promoverão desenvolver as habilidades e o conhecimento necessários para atingir cada objetivo de aprendizagem, especificamente segue detalhado caso a caso: OA1 (Aplicar os conceitos fundamentais de programação) é abordado por meio de MEA1, através de tarefas estruturadas que permitem a prática contínua de conceitos-chave, como variáveis, estruturas de controle e manipulação de dados. Além disso, MEA2 contribui ao exigir a aplicação desses conceitos em projetos mais abrangentes e integrados, consolidando a aprendizagem através da experiência prática. OA2 (Criar procedimentos e funções com parâmetros) é igualmente suportado por MEA1 e MEA2, já que os estudantes são incentivados a desenvolver funções e procedimentos em atividades específicas, com avaliação formativa que os ajuda a compreender a passagem de parâmetros e o desenvolvimento de código modular. MEA2 fortalece esse processo ao permitir a aplicação desses procedimentos em projetos que exigem a reutilização e integração de código. OA3 (Compreender a sintaxe da linguagem de programação Python) é abordado principalmente através de MEA1, onde tarefas específicas focam na sintaxe, gramática e estruturas da linguagem, permitindo aos alunos adquirir uma base sólida na compreensão do código. OA4 (Desenvolver soluções com programação para problemas de complexidade intermédia) é facilitado tanto por MEA1 quanto por MEA2. A abordagem de tarefas incrementais permite que os alunos desenvolvam e testem soluções para problemas de complexidade crescente. MEA2 reforça a capacidade de resolver problemas mais desafiadores em projetos mais amplos, que requerem a integração de várias soluções em um único sistema. OA5 e OA6 (Explicar, executar, depurar e interpretar fragmentos de código em Python) estão fortemente relacionados a MEA1, onde os estudantes são solicitados a depurar e interpretar fragmentos de código em tarefas específicas. A execução contínua de pequenas tarefas práticas permite que eles desenvolvam a habilidade de identificar erros, explicar o funcionamento do código e analisar os resultados de maneira rigorosa. OA7 (Desenvolver projetos de programação) está essencialmente associado a MEA2, uma vez que a metodologia baseada em projeto oferece um ambiente que exige a integração de todos os conhecimentos adquiridos, desde os conceitos fundamentais até a criação de soluções completas. Os projetos envolvem o planejamento, desenvolvimento e apresentação de soluções completas, exigindo uma aplicação aprofundada dos conceitos e técnicas de programação.
Observações / Observations
--
Bibliografia Principal / Main Bibliography
Portela, Filipe, Tiago Pereira, Introdução à Algoritmia e Programção com Python, FCA, 2023, ISBN: 9789727229314 Sónia Rolland Sobral, Introdução à Programação Usando Python, 2a ed., Edições Sílabo, 2024, ISBN: 9789895613878 Nilo Ney Coutinho Menezes, Introdução à Programação com Python: Algoritmos e Lógica de Programação Para Iniciantes. Novatec Editora, 2019. ISBN: 978-8575227183 John Zelle, Python Programming: An Introduction to Computer Science, Franklin, Beedle & Associates Inc, 2016, ISBN-13 : 978-1590282755 Ernesto Costa, Programação em Python: Fundamentos e Resolução de Problemas, 2015, ISBN 978-972-722-816-4,
Bibliografia Secundária / Secondary Bibliography
João P. Martins, Programação em Python: Introdução à programação com múltiplos paradigmas, IST Press, 2015, ISBN: 9789898481474 David Beazley, Brian Jones, Python Cookbook: Recipes for Mastering Python 3, O'Reilly Media, 2013, ISBN-13 ? : ? 978-1449340377 Kenneth Reitz, Tanya Schlusser, The Hitchhiker's Guide to Python: Best Practices for Development, 1st Edition, 2016, ISBN-13: 978-1491933176, https://docs.python-guide.org/ Eric Matthes, Python Crash Course, 2Nd Edition: A Hands-On, Project-Based Introduction To Programming, No Starch Press,US, 2019, ISBN-13 : 978-1593279288
Data da última atualização / Last Update Date
2024-09-09