add isElective to rotation, rename in_program to inProgram for res