Neural Networks and Deep Learning