Can you program Atmega32M1 with UART?
Yes you can but...
What I mean by that is you must first program the 32M1 with your initial program using the Microchip-provided debugWIRE interface.  For that you will need a programmer that supports the debugWIRE protocol.  Something like the AtmelICE or one of a number of 3rd party ISP (in circuit programmer) suppliers.
To program via the UART, you will need to write and program, as above, an application that will accept your data over the UART and &quot;self-program&quot; the new data.  Generally this means a &quot;boot loader&quot; and you can find examples of this in my places including the 32M1 Complete Datasheet.
This is basically how the Arduino, and for that matter nearly all other microcontrollers that are common in the market today.  The MCU in the Arduino is first programmed using the built-in programming interface and then a serial-programming protocol is available.