Higher Arithmetic : An Algorithmic Introduction To Number Theory