Theory and numerical methods for solving inverse and ill-posed problems