Introdução à Programação para Ciência e Engenharia

Objetivos

Saber: as construções do fragmento coberto de Python; construir uma aplicação no fragmento a partir de uma especificação informal, com a metodologia definida; os componentes e ferramentas básicas de um ambiente de desenvolvimento de software e sua função.

Fazer: desenvolver programas de pequena dimensão, segundo certas convenções; desenvolver algoritmos simples; entender código escrito no fragmento coberto de Python; utilizar ferramentas de programação e interpretar os seus resultados; realizar, em grupo, um mini-projecto de desenvolvimento de software, integrando competências.

Desenvolver: hábitos de trabalho, individuais e em grupo, e de cumprimento de prazos; preocupação com a organização, o rigor e a execução de planos de trabalho.

Caracterização geral

Código

12566

Créditos

6.0

Professor responsável

Artur Miguel de Andrade Vieira Dias, Carla Maria Gonçalves Ferreira

Horas

Semanais - 5

Totais - 67

Idioma de ensino

Português

Pré-requisitos

A disponibilizar brevemente

Bibliografia

- Artur Miguel Dias, "Folhas de IPCE, incluindo lista de exercícios", 2024.
- Think Python (book), O''Reilly Media; 3rd edition, 2024.
- Programação em Python, Ernesto Costa, 2.ª Ed., Lidel, 2024.
- Python Distilled, Dave Beazley, Addison-Wesley Professional, 1st edition, 2021.
- Fundamentals of Python: First Programs, Kenneth A. Lambert, 1st edition, 2011.

 

Método de ensino

Esta cadeira tem um forte caráter aplicado e a nota final depende da capacidade de resolver problemas de programação práticos usando a linguagem Python.
Nas aulas teóricas, os conceitos fundamentais da cadeira são transmitidos, exemplificados e discutidos.
Nas aulas práticas, os alunos resolvem pequenos problemas onde aplicam os conceitos e técnicas estudados. Parte desses problemas estarão disponíveis num sistema de avaliação automática de programas (Mooshak).
O projeto final da cadeira é realizado parcialmente nas aulas práticas e parcialmente fora das aulas. O projeto final é importante pois destina-se a sedimentar tudo o que se aprendeu ao longo da disciplina e a ganhar desenvoltura na resolução de programas de programação.

Método de avaliação

Elementos da avaliação

Os elementos de avaliação são os seguintes, com os pesos na nota final indicados:

  • T1- Teste 1
  • T2- Teste 2
  • PR- Projeto
  • ER - Exame de recurso

Cada um destes elementos de avaliação é cotado até 20 valores, com a nota arredondada às centésimas.

Os testes e exame são presenciais, individuais, escritos e sem consulta. Não é permitido o uso de instrumentos eletrónicos.

O projeto é efetuado por grupos de dois alunos. Poderão haver discussões de alguns projetos para alguns grupos.

O calendário do projeto encontra-se na página da disciplina e nos "eventos" do CLIP.

Nota da componente teórica-prática

A nota da componente teórica-prática (CompTP) tem um peso de 80% da nota final e pode ir até ao valor máximo de 20 valores.

A nota CompTP define-se de três formas diferentes, consoante as situações:

  • CompTP= (T1+T2)/2    (no caso de avaliação contínua pura)
  • CompTP= ER                (para alunos não aprovados na avaliação contínua)
  • CompTP = max((T1+T2)/2, ER)   (avaliação contínua + tentativa de melhoria de nota)

Nota da componente laboratorial e frequência

A nota da componente laboratorial (CompLab) tem um peso de 20% da nota final e pode ir até ao valor máximo de 20 valores.

A nota CompLab é definida simplesmente como a nota do projeto:

  • CompLab = PR

Para obter frequência, é necessário que CompLab >= 9.5.

Para além disso, no caso dos alunos inscritos no 1º ano, é requerida a participação em pelo menos 50% das aulas práticas.

Nota final e aprovação

A nota final dos alunos com frequência calcula-se assim (sendo arredondada às unidades):

  • FINAL = 0.8 * CompTP + 0.2 * CompLab

A aprovação na disciplina é determinada pela seguinte condição:

  • APROVAÇÃO = CompTP >= 9.5 e CompLab >= 9.5

Validade da frequência obtida neste ano

A frequência obtida no ano letivo corrente será valida no próximo ano letivo, pelo menos.

Frequências dos anos anteriores

A frequência obtida no ano letivo anterior é válida no ano letivo corrente (e permite-se também que essa nota seja melhorada, fazendo o projeto do ano corrente). As frequências mais antigas não são válidas.

Fraude

As questões de fraude/plágio são tratadas de acordo com o Regulamento de Avaliação de Conhecimentos da FCT NOVA. Por exemplo, qualquer tipo de fraude em qualquer elemento de avaliação impossibilita fazer a disciplina no ano letivo corrente, podendo haver ainda outras consequências.

No projeto final, alunos podem conversar com os colegas sobre aspetos gerais do trabalhos. Mas não podem partilhar código (mesmo que sejam "poucas linhas") em nenhuma circunstância, oralmente ou por escrito. A escrita de código tem de ser uma tarefa interna a cada grupo. Por exemplo, não é permitido mostrar código no ecrã, ditar código, enviar ficheiros com código nem colocá-los em sítios acessíveis a terceiros.

Nesta disciplina introdutória desaconselha-se o uso de ferramentas de IA no projeto. Mas se forem pontualmente usadas no projeto, os fragmentos de código correspondente têm de referir isso explicitamente. Omitir essa informação é considerado plágio e fraude.

 

Conteúdo

1. Introdução às linguagens de programação;2. Noções básicas de Python; 3. Variáveis e tipos de dados; 4. Legibilidade de código; 5. Metodologias de programação; 6. Estruturas de controle; 7. estruturas de repetição; 8. Funções e módulos; 9. Strings; 10. Leitura e gravação de dados em armazenamento persistente; 11. Estruturas de dados básicas: arrays, listas, dicionários, tuplos; 12. Algoritmos básicos: ordenação e procura dicotómica, percursos de dicionários; 13. Design e estrutura de programação; 14: Bibliotecas para manipulação e visualização de dados. 15. Seleção de algoritmos científicos fundamentais relevantes à area do curso (biologia, física, etc).