This course provides an introduction to some of the most widely used methods of computational physics, including numerical integration (elementary algorithms and Monte Carlo techniques), numerical solutions of differential equations (classical equations of motion, time independent and time dependent Schrodinger equations), molecular dynamics simulations (classical many-body systems), Monte Carlo simulations (classical models of magnetism), and exact diagonalization of quantum many-body Hamiltonians (models of quantum magnetism). In addition to giving the students a basic working knowledge of these particular techniques, the goal is to make them proficient in scientific computing and programming in general, so that they will be prepared to tackle also other computational problem that they may encounter in the future.