Aspects of Semidefinite Programming