Factors affecting the success of non-majors in learning to program | Synapse