Techniques for solving Nonlinear Programming Problems with Emphasis on Interior Point Methods and Optimal Control Problems