Efficient Numerical Methods for Non-local Operators