The dataset used is available freely and widely. Though, the one used here comes from Kaggle.
The methods used for cleaning data and handling missing are quite basic and there is huge scope to refine it further. For more details.
The model is a two layer neural network written in python (little numpy) and is easy to follow. Increasing the number of epochs will continuously decrease the loss. However accuracy will increase at first and decrease at later stages which reflects overfitting, I think.