This is the course web page for MAS212 *Scientific Computing and
Simulation* in **2017/18**.

Last year's material is here.

MAS212 is a 10-credit, Level 2, first-semester module which covers various techniques in scientific computing, and their implementation in Python. The course is intended to follow on from MAS115 Mathematical Investigation Skills.

This year I will also use MOLE for some course materials, such as video clips.

We will be using the Anaconda distribution of Python (version 3.6), which includes Jupyter Notebook and Spyder.

Anaconda3 is available on (the majority of) Managed Desktop machines. From the Start Menu, select the folder "Anaconda3 (64-bit)".

To install Anaconda on your own computer, use the link below, and choose the Python 3.6 version

There are many books on Python and scientific computing. For this course, I recommend:

*Learning Scientific Programming with Python*by Christian Hill (Cambridge University Press, 2015).

A range of material is available on the web, including:

- Think Python: How to think like a computer scientist
- A Crash Course in Python for Scientists
- Python Scientific Lecture Notes

In this course we will use Jupyter notebooks to combine code, text, plots and media. To view a notebook in the browser, click on the links in the left column. (Alternatively, copy-and-paste the notebook's URL in to the box at nbviewer.jupyter.org).

To interact and modify a notebook, right-click on a link in the right column (.ipynb) and download to your Jupyter notebook directory.

Title | Description | notebook |
---|---|---|

Fern | The Barnsley Fern: an image of a fern with self-similar (fractal) properties, generated by iterating certain affine transformations. | .ipynb |

ODE_Example | Shows how to (a) solve a first-order single-variable ODE using scipy.integrate.odeint, and plot; (b) solve a second-order equation by writing as a pair of first-order equations; (c) solve predator-prey equations. | .ipynb |

Curve_Fit_Example | Shows how to (a) generate a data set with simulated noise; (b) save and then re-load the data; (c) fit the data to a simple model using scipy.optimize.curve_fit(). | .ipynb |

Media_Example | Shows how to load and interact with various media: data, images, web pages, YouTube videos and maps. | .ipynb |

Week | Lectures | Computer labs | Solutions |
---|---|---|---|

0 | Revise Python for the class test with: | --- | |

1 | Lab Class 1: Jupyter Notebook | ||

2 | Class Test 1 (.ipynb) | ||

3 | Lab Class 3: matplotlib | .html .ipynb | |

4 | Lab Class 4: Solving ODEs with scipy.integrate.odeint() | .html .ipynb | |

5 | Lab Class 5: Explicit methods for ODEs | .html .ipynb | |

6 | Lab Class 6: Implicit methods for ODEs | .html .ipynb | |

7 | Lab Class 7: Animations Codes 5 and 6 by J Vanderplas |

To take a test, right click on ".ipynb" link, save the file in your notebooks directory (choose 'All Files' not 'Text Documents'), and then open the notebook using Jupyter Notebook. Read the rubric. Then click on a question and select 'Insert Cell Below'. Change the cell type to 'code' or 'markup', as appropriate. Completed tests will be submitted here.

To view a test, left click on the ".html" link.

Description | Links | Due |
---|---|---|

(2017) Class Test 1 with answers |
.ipynb
.html |
-- |

(2017) Class Test 1 |
.ipynb
.html |
Sun 8th Oct 2017 |

(2016) Class Test 1 with answers |
.ipynb .html Marker's notes | -- |

(2016) Class Test 1 | .ipynb | --- |

(Mock) Class Test with answers |
.ipynb .html | -- |

(Mock) Class Test | .ipynb .html | -- |

# | Title | Summary | Due | Feedback |
---|---|---|---|---|

1 | Asymptotic series | Use Python to calculate a Taylor series and an asymptotic series. | Sun 22nd Oct (23:59pm). | Example code |

2 | The damped driven pendulum | An investigation into the behaviour of a pendulum on a rod. | Sun 26th Nov (23:59pm). |