USB Communication on Standalone Arduino

I'm working on a standalone arduino project where my device will be connected to the users computer via usb and listen to commands from an application running on the users computer. I have a couple questions about getting the usb part working.

The circuit itself. Should I just use the Uno's USB circuit? ( ) Is there a simpler one?. does the ATMEGA16U2 need to be programmed if I don't want to upload sketches through USB? - Basically, I don't want the end user to be able to upload sketches through USB.

If there are any articles or tutorials on this feel free to post them. I searched google but didnt see anything of interest.

Thanks for the help.

If you use a programmer (USBtinyISP, AVR-ISP and several more) to upload the final sketch to your arduino then the bootloader is overwritten so you cannot just connect the device and upload a new sketch over USB/serial using the Arduino IDE you would need a programmer to either upload a new sketch or burn the bootloader onto the arduino again.