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 who have not gone through courses for advanced programming or scientific computing yet.

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.

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.