As old as this thread is, I still think it might help some who Google it and find this post. I recently had this issue and solved it with the following (C#) code to define the subject.
oContacts.Subject = "1";
The subject field is a string which takes a number in the form of a string. This will set the subject of the contact/activity to the first subject defined in the system.
You cannot add new subjects to an activity in oContacts because it does not contain a definition for it. It is held in a different table in the database OCLS. The field is not intended to have a million different subjects like say an email subject would over time. There might be a way to do that but I didn't look into it.
Hope this helps you Helene.
Peter