Personally, I prefer to use surrogate keys.
If there is some chance that the Program Name could change in the future (and names are usually subject of change as the business changes), then I would strongly recommend to use a surrogate key (Program ID).
If there is a natural key which makes sense to use as a primary key then use the natural key. In your example TrainingProgramName probably isn’t is the natural key, but because the value can change it doesn’t make a good primary key. Now if you were working for the IRS and you had to design a table which held tax payer information, there would be a natural key that you could use. The tax payer id (it being tax time right now, I’ll try and work it into my examples) would make an excellent natural primary key. Each person has one, and only one. And they are rarely changed.