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 - 62

Idioma de ensino

Português

Pré-requisitos

A disponibilizar brevemente

Bibliografia

- Python Distilled, Dave Beazley, Addison-Wesley Professional, 2021.

- Think Python, Allen B. Downey, 2nd edition, O’Reilly, 2015.

- 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 - 40%
  • T2- Teste 2 - 40%
  • PR- Projeto - 20%
  • ER - Exame de recurso - 80%
  • Cada um destes elementos de avaliação é cotado até 20 valores.
  • Os testes e exame são presenciais e não é permitido o uso de instrumentos eletrónicos. Os testes e exame são sem consulta.
  • Os projetos são efectuados por grupos de dois alunos. Poderão haver discussões de alguns projetos para alguns grupos.

Notas das componentes prática e teórica

A nota da componente prática é definida como:

  • PRAT = PR

A nota da componente teórica é definida de duas formas diferentes, consoante o momento em que a nota é obtida:

  • TEOR= (T1 + T2) / 2
  • TEOR = ER

Frequência

A nota de frequência é igual à nota da parte prática:

  • FREQ = PRAT

Nota final e Aprovação

A nota final calcula-se assim:

  • FINAL = 0.2 * FREQ + 0.8 * TEOR

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

  • APROVAÇÃO = FREQ >= 9.5 e TEOR >= 9.5

As notas intermédias são arredondadas para duas casas decimais.
A nota final é um número inteiro.

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

Qualquer tipo de fraude em qualquer elemento de avaliação implica a impossibilidade de fazer a cadeira no ano lectivo corrente (mesmo que haja exames marcados).



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).