Designing an Introductory Programming Course to Improve Non-Majors' Experiences | Synapse