Programação Avançada para Biologia

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

12492

Créditos

6.0

Professor responsável

Carla Maria Gonçalves Ferreira, David Fernandes Semedo

Horas

Semanais - 5

Totais - 60

Idioma de ensino

Inglês

Pré-requisitos

A disponibilizar brevemente

Bibliografia

  • 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 disciplina 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.

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 - 20%
  • T2 - Teste 2 - 35%
  • PR - Projeto prático - 40%
  • PA - Partipação nas aulas - 5%
  • ER - Exame de recurso - 55%

Cada um destes elementos de avaliação é cotado até 20 valores. 
Os projectos são efectuados por grupos de dois alunos. Poderão haver discussões de projectos para alguns grupos, através de uma prova oral ou escrita.

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 (por avaliação contínua ou exame final):

  • TEOR= (0.20*T1 + 0.35*T2) / 0.55
  • 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.40 * FREQ + 0.55 * TEOR + 0.05 * PA

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

  • Aprovação = FREQ >= 9.5 TEOR >= 9.5

ou seja, para aprovação, é necessária uma nota >= 9.5 em ambas as componentes.

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á válida apenas no próximo ano letivo.

Frequência do ano anterior

A frequência obtida no ano anterior é válida no ano letivo corrente e transita automaticamente. Permite-se também que essa nota seja melhorada, fazendo o projeto do ano corrente.

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. Ciclos;

8. Funções e módulos;

9. Strings;

10. Leitura e gravação de dados em armazenamento persistente;

11. Estruturas de dados básicas: listas, conjuntos, 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).