Cone programming is a natural abstraction of semidefinite programming in which we can conveniently develop some basic theory, most notably semidefinite programming duality.