Which device can understand difference between Data and programs?
Computers can't tell the difference between instructions and data in memory. The only clue is if memory pages have protection, in which case pages containing instructions will have the execute bit set. If you take some data and set the execute bit and then jump into it, the computer will try and execute it.