B22
Course Coordinator: 
Kenji Doya
Computational Methods
Description: 

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.

Target students
Students sho have not gone through courses for advanced programming or scientific computing yet.

Aim: 
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: 
Elective
Credits: 
2
Assessment: 
Exercise reports (75%): submitted within one week from each exercise session. Project presentation and report (25%): at the end of the course.
Text Book: 
Valentin Haenel, Emmanuelle Gouillart, Gaël Varoquaux: Python Scientific Lecture Notes. (http://scipy-lectures.github.com/)
The Python Tutorial (https://docs.python.org/3/tutorial)
Reference Book: 
Linge S, Langtangen HP (2016): Programming for Computations – Python. Springer. (https://doi.org/10.1007/978-3-319-32428-9)
Deisenroth MP, Faisal AA, Ong CS (2020): Mathematics for Machine Learning. Cambridge University Press. (https://mml-book.com/)
Prior Knowledge: 

Prerequisite courses and assumed knowledge: Basic computer skill with Windows, MacOS, or Linux is assumed. 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.