DEPARTAMENTO DE FÍSICA

 

Computadores e Programação - F

Ano letivo: 2019-2020
Especificação técnica - ficha curricular

Elementos especificos
código da disciplinaciclo de estudossemestre lectivocréditos ECTSlíngua de ensino
1002770114.5pt


Objectivos formativos
Objetivos de importância central:
- Conhecimento genérico do funcionamento de um computador e da representação de dados em formato digital.
- Capacidade de equacionar a resolução de um problema sobre a forma de um algoritmo.
- Conhecimento dos paradigmas da programação imperativa, funcional e por objetos.
- Capacidade operacional de programação numa linguagem de programação de muito alto nível (Python).

Objetivos de importância secundária:
- Capacidade para procurar e utilizar bibliografia e ferramentas de software adequadas usando a internet.
- Conhecimento operacional de algoritmos básicos de análise numérica aplicados a situações simples da física e da engenharia.
- Capacidade para realizar, em grupo, e de forma modular, pequenos projetos de software.
Programa genérico mínimo
Arquitetura (modelo de von Neumann) de um computador digital. Sistemas operativos.
Representação binária de números inteiros e reais, texto, imagens e som.
Introdução à linguagem Python.
A instrução de atribuição. Noção de ponteiro e ?aliasing?.
Tipos numéricos: inteiros, inteiros longos, vírgula flutuante e complexos.
Booleanos.
Sequências (listas, tuplas e strings) e conjuntos. Iteração e fatiagem. Abrangências.
Dicionários.
Instruções de controlo de fluxo.
Funções. Espaço dos nomes e regras de alcance. Mecanismo de passagem e devolução de argumentos.
Programação imperativa e funcional.
Módulos. Ficheiros. Formatação. Redirecção dos canais de entrada/saida.
Exceções e estruturas de gestão.
Programação orientada por objetos. Classe e instanciação. Atributos e métodos. Herança, encapsulamento e polimorfismo. Sobrecarga de operadores. Introspeção e metaprogramação.
Recursão. Iteradores e geradores.

Métodos Numéricos básicos aplicados a problemas de Física.
Pré-requisitos
Nenhuns
Competências genéricas a atingir
. Conhecimentos de informática relativos ao âmbito do estudo;
. Competência para resolver problemas;
. Uso da internet como meio de comunicação e fonte de informação;
. Competência em raciocínio crítico;
. Competência em aplicar na prática os conhecimentos teóricos;
. Competência em análise e síntese;
. Competência em organização e planificação;
. Conhecimento de uma língua estrangeira;
. Competência em gestão da informação;
. Competência em trabalho em grupo;
. Criatividade;
(por ordem decrescente de importância)
Horas lectivas semestrais
aulas práticas laboratoriais60
total horas lectivas60

Método de avaliação
Relatório de seminário ou visita de estudo- %
Trabalho laboratorial ou de campo- %
Resolução de problemas30 %
Trabalho de síntese- %
Projecto- %
Trabalho de investigação- %
Mini testes- %
Frequência70 %
Exame- %
Outros- %
- %
- %

Bibliografia de referência
1. Documentação online do Python:
- Homepage: http://www.python.org
- Tutorial: http://docs.python.org/tutorial/introduction.html
- Tutorial em português: http://turing.com.br/pydoc/2.7/tutorial/introduction.html
2. Learning Python, M. Lutz, D. Ascher, O'Reilly
3. How to think like a computer scientist, A. Downey, J. Elkner & C. Mayers, Green Tee Press
4. Numerical methods in engineering with Python, J Kiusalaas, Cambridge University Press
5. Python for dummies, S. Maruch, A. Maruch, Wiley
6. Computadores e Programação ? Apontamentos da disciplina, Helmut Wolters
Método de ensino
O ensino desta disciplina é teórico-prático, com grande ênfase na compreensão e desenvolvimento de algoritmos para problemas concretos, incluindo uma primeira abordagem a algumas ferramentas de análise numérica aplicada a problemas simples de física e de lógica.
As aulas comportam uma pequena exposição introdutória sobre aspetos formais da linguagem e no restante os alunos são desafiados a resolver interactivamente um conjunto de problemas utilizando a linguagem Python.
Recursos específicos utilizados
Laboratório de computação