Waking up to find 512 btc in your account =/= stealing/thieving.
He sold those Bitcoins shortly thereafter. So yes, it is stealing.
Transactions aren't reversible by design - those Bitcoins are now his.
You can't have it both ways people - you cannot have a system with 'no chargebacks' but call the lack of a receiving party to return mistakenly sent funds 'theft'.
Any and all rsposibility, if any at this point, falls on the programmer who coded this, not the person who received the funds.