Roles of programming self-efficacy, cognitive styles, and self-regulated learning strategies on computational thinking in computer programming | Synapse