There are a number of USB to TTL converters available that will connect USB to the receive and transmit pins of a microcontroller's UART. There are converter cables that have the USB chip built into the cable. Arduino uses an ATmega 16U2 as a on board USB to TTL converter. See the Arduino Uno schematic for the design. The USB software for the 16U2 is included with the Arduino software package if one wants to build their own. There are converter boards using chips such as FTDI. All of these are recognized by Linux and Windows (drivers are available), so they are plug and play on a PC. They can communicate using a terminal program like, hyperterminal, Putty or Minicom. They can be used with programs that upload software using an on-chip bootloader, such as Atmel Flip and Pic Tiny bootloader.