Learning to program is a unique experience for each student, and it is not fully understood why one person in an introductory programming course learns to program better and more quickly than the next. Self-efficacy is an individual’s judgment of his or her ability to perform a task within a specific domain [1]. A mental model is a person’s internal (mental) representation of real world objects and systems [9]. Research has shown that high selfefficacy and a good mental model are important to knowledge acquisition and transfer. This research investigates the effects of students’ self-efficacy and mental models of programming on learning to program. The results show that self-efficacy for programming is influenced by previous programming experience and increases as a student progresses through an introductory programming course. The results also show that the student’s mental model of programming influences self-efficacy and that both the mental model and self-efficacy affect c...