Central importance: generic knowledge of the operation mode of a computer and of the representation of data in digital format; Ability to consider the resolution of a problem on the form of an algorithm; Knowledge of the paradigms of imperative, functional and object-oriented programming, and operational capacity of programming with a very high level programming language (Python). Secondary importance: Ability to search and use appropriate bibliography and software tools using internet. Operational knowledge of basic algorithms of numerical analysis applied to simple physical situations. Ability to perform small software projects as a group and in a modular way.
The von Neumann model. The architecture of a computer. Digital representation of data. Binary number operations. Operation of a CPU. Programming languages. Operating Systems. The Python language. Attribution. Aliasing. Pointers. Numeric types. Sequences. Booleans and Boolean operations. Iteration over strings and slicing operations. Ranges. Dictionaries. Flow control. Functions. Names space and rules of range. Mechanism for passing arguments and returning values. Functional and imperative programming. Modules. Tools of introspection and metaprogramming. Files. Formatting. Redirection of the flow channels of input and output. Exceptions. The statements raise and try .. except .. finally. Object-oriented programming. Notion of class and class instances. Attributes and methods. Inheritance, encapsulation and polymorphism. Operator overloading. Recursion. Iterators and generators. Applications to problems in physics
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
total of teaching hours
Bibliography of reference
1.Documentação online do Python:
?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
The teaching of this subject is theoretical-practical, with great emphasis on understanding and developing algorithms for concrete problems, including a first approach to some tools of numerical analysis applied to simple physical problems.