Providing Choice of Programming Language: Student Outcomes in an Algorithms Course
Students learn multiple programming languages during their undergraduate studies in Computer Science. In some cases, students learn at least two languages during their first two courses, such as Java and Python. While the transition between languages early in the curriculum is well-studied and usually scripted, little is known about students’ language preferences and outcomes when given a choice in later courses. We provided students in a third-in-a-sequence major-required algorithms course the choice of language on each programming assignment (PA). Following a CS1 course in Python and a CS2 course in Java, students were asked to complete their PAs in either Java or Python, given equivalent scaffolding code. We conducted pre-course surveys of language preferences and analyzed the language use and resulting overall performance of 268 students across two semesters. On average, students had more self-reported familiarity and had taken more courses in Java, but felt Python had a better reputation. Additionally, while students tended to program in the language they were more familiar with, over 25% of students completed at least one PA in the other language. In two individual PAs (one per semester), students who used Python scored significantly higher than those using Java. However, there was no statistically significant difference in overall scores across PAs, problem sets, and quizzes based on their chosen PA language. Students also faced similar struggle—i.e., average number of submissions—on PAs regardless of language. Therefore, educators of upper-level courses should not worry about the impact of programming language choices on student outcomes.