I am looking to create a platform similar to Arduino for a side project using an [ARM Cortex M4 based microcontroller][1].  The device essentially will communicate with a bunch of sensors on the board and relay that information through a USB Serial Connection to a connected USB host (similar to the Arduino Serial Monitor).  I am not using an Arduino because I would like to learn about how to practically prototype a circuit like this.

My question is, what do I have to do to make my microcontroller reprogrammable via a USB connection to a computer like how the Arduino is.  I am looking for a hardware explanation like what I need to include in my circuit to accomplish this goal.

Thank you and hopefully my question makes sense.

EDIT:
I am looking for possible components that I have to include in my board to allow for native USB programming. 

  [1]: http://www.atmel.com/Images/Atmel-11289-32-bit-Cortex-M4-Microcontroller-SAM-G55_Datasheet.pdf