Course Coordinator: 
Kenji Doya
Computational Methods

The course starts with basic programming using Python, with some notes on other computing frameworks. Students then get acquainted with data manipulation and visualization using “numpy” and “matplotlib.” After learning how to define one’s own function, students learn iterative methods for solving algebraic equations and dynamic simulation of differential equations. The course also covers basic concepts in stochastic sampling, distributed computing, and software management. Toward the end of the course, each student will pick a problem of one’s interest and apply any of the methods covered in the course to get hands-on knowledge about how they work or do not work.


This course aims to provide students from non-computational backgrounds with the basic knowledge and practical skills for computational methods required today in almost all fields of science. Python is used as the standard programming language, but the concepts covered can be helpful also in using other computing tools for data analysis and simulation.
Course Content: 

1. Introduction to Python

2. Vectors, matrices and other data types

3. Visualization

4. Functions and classes

5. Iterative computation

6. Ordinary differential equation

7. Partial differential equation

8. Optimization

9. Sampling methods

10. Distributed computing

11. Software management

12. Project presentation


For each week, there will be homework to get hands-on understanding of the methods presented.

Course Type: 
Homework: 75% (2 hours per week), Project 25%.
Text Book: 
Valentin Haenel, Emmanuelle Gouillart, Gaël Varoquaux: Python Scientific Lecture Notes. (http://scipy-lectures.github.com/)
Reference Book: 
Python Documentation. (https://docs.python.org/)
Prior Knowledge: 

Prerequisite courses and assumed knowledge: Basic computer skill with Windows, MacOS, or Linux is assumed. Each student will bring in a laptop provided by the Graduate School. Knowledge of basic mathematics, such as the calculus of vectors and matrices and the concept of differential equations, is assumed, but pointers for self-study are given if necessary.