Difference between Course and Student_Course probably isn't able to be implicitly converted. What you could do is use dynamic:
dynamic subject;
if (id == 1)
subject = new Student_Subject();
Or you can use certain design patterns around this; for instance, use a wrapper class around the various types of student classes or have custom interfaces, which you can check if one instance implements via:
object course;
//init logic
if (subject is IStudentSubject)
{
// Convert and do something with
}
There are ways around it that are convenient.