  This manuscript was written because I found no other introduction to SDP
programming that targets the same audience. A first difference compared to
other existing introductions to SDP is that this work comes out of a mind that
was itself struggling to understand. This may seem to be only a weakness, but,
paradoxically, it is both a weakness and a strength. First, I did not try to
overpower the reader, but I tried to minimize the distance between the author
and the reader as much as possible, even hoping to achieve a small level of
mutual empathy. This enabled me avoid a quite common pitfall: many
long-acknowledged experts tend to forget the difficulties of beginners. Other
experts try to make all proofs as short as possible and to dismiss as
unimportant certain key results they have seen thousands of time in their
career. I also avoided this, even if I did shorten a few proofs when I revised
this manuscript two years after it was first written. However, I also kept
certain proofs that seem longer than necessary because I feel they offer more
insight; an important goal is to capture the "spirit" of each proven result
instead of reducing it to a flow of formulae.
  The very first key step towards mastering SDP programming is to get full
insight into the eigen-decomposition of real symmetric matrices. It is enough
to see the way many other introductions to SDP programming address this
eigen-decomposition to understand that their target audience is different from
mine. They often list the eigen-decomposition without proof, while I give two
proofs to really familiarize the reader with it.
