# Learning computational science through guided discovery

I am currently trying to get through Pattern Classification by Duda et al (for a course). However, the book seems too dense for me. Pattern recognition seems like a topic that could be better learned through guided discovery. That made me think... There is a a thread over at mathematics SE about books that teach math by guiding you from exercise to exercise; So, essentially you prove every result yourself.

Are there any similar books on the mathematics used in computational science? It seems to me that computational science is something that can be learned by doing.

I learn computation science through Practical Numerical Methods with Python.

https://github.com/numerical-mooc/numerical-mooc/wiki

It covers finite differencing and many other numerical algorithms. For me the most interesting part is that it shows how various factors impact the stability, accuracy, and performance through small working examples.

One project I have discovered since I initially asked this question is the following:

https://projectlovelace.net/

It is still a work in progress, but is building up a set of problems that can aid in learning computational science.

For a similar resource that focuses primarily on bioinformatics we have Rosalind:

http://rosalind.info/problems/locations/

I am adding another answer here since this is the kind of resource I was originally looking for.

The Journal of Inquiry Based Learning has a book on mathematical modelling. The abstract says the following:

This is a set of notes for a one semester course in Mathematical Modeling. The topics covered are difference equations, Markov chains, Monte Carlo simulations, and linear programming. The notes emphasize scientific computing and include both problems and projects. These notes are written to be used with Sage, but they could be modified to incorporate another language.

There are very few explanations and the like in this PDF, and unlike most of the other answers here, you are not given the solution beforehand; You're meant to learn mathematical modelling by doing exercises and solving problems.

A great example in this vein is Lorena Barba's CFDPython also known as "12 Steps to Navier Stokes", which consists of a sequence of jupyter notebooks that go from really basic numerical analysis up through more complex problems.