|
2002 . 2003 - º semestre
Specification sheet N.B. these sheets are defined only since 2007 (agreement of Bologna). Specific details
Learning goals
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 objectos e capacidade operacional de programação numa linguagem de programação de muito alto nível (Python) 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 Capacidade para realizar, em grupo, e de forma modular, pequenos projectos de software Syllabus
O modelo de von Neumann do computador digital. Arquitectura de um computador moderno. Representação digital de dados. Códigos binários para representação de inteiros, reais (vírgula flutuante), caracteres (ASCII, unicode), imagem e som. Operações numéricas sobre dados binários. Processadores. Funcionamento de um CPU. Linguagens de programação. Sistemas operativos. Introdução à linguagem de programação Python. A instrução de atribuição. Aliasing. Noção de ponteiro. Tipos numéricos: inteiros, inteiros longos, números em vírgula flutuante e complexos. Sequências (listas, tuplas e sequências de caracteres). Booleanos e operações sobre booleanos. Iteração sobre sequências e operações de fatiagem. Abrangências. Dicionários. Instruções de controlo de fluxo. Funções. Espaço dos nomes e regras de alcance. Mecanismo de passagem de argumentos e devolução de valores. Programação funcional e imperativa. Módulos. Ferramentas de introspecção e metaprogramação. Ficheiros. Formatação. Redirecção dos canais de fluxo de entrada e saída. Excepções. As instruções raise e try..except..finally. Programação orientada por objectos. Noção de classe e instâncias de classe. Atributos e métodos. Herança, encapsulamento e polimorfismo. Sobrecarga de operadores. Recursão. Iteradores e geradores. Aplicações em Análise Numérica aplicada a problemas de Física. Resolução de equações não-lineares Interpolação de Lagrange. Ajuste de curvas por mínimos quadrados. Derivação e integração numérica Resolução de equações diferenciais ordinárias (aplicações: equações do decaimento radioactivo, osciladores, projécteis, movimento planetário, etc. ) Método de Monte-Carlo (aplicações simples). Prerequisites
Generic skills to reach
. Computer Skills for the scope of the study;. Competence to solve problems; . Using the internet as a communication medium and information source; . Critical thinking; . Competence in applying theoretical knowledge in practice; . Competence in analysis and synthesis; . Competence in organization and planning; . Knowledge of a foreign language; . Competence in information management; . Competence for working in group; . Creativity; (by decreasing order of importance) Teaching hours per semester
Assessment
Bibliography of reference
1 Tutorial de Python, Guido van Rossum 2 Learning Python, M. Lutz, D. Ascher, OReilly 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), J.A. Paixão e F. Nogueira Teaching method
O ensino desta disciplina é teórico-prático, com grande ênfase no 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. Resources used
Laboratório de computação
|