Abstract

Scope, aliasing, mutation, and parameter passing are fundamental programming concepts that interact in subtle ways, especially in complex programs. Research has shown that students have substantial misconceptions on these topics. But this research has been done largely in CS1 courses, when students' programming experience is limited and problems are necessarily simple. What happens later in the curriculum? Does more programming experience iron out these misconceptions naturally, or are interventions required? This paper explores students' understanding of these topics in the context of a programming languages class for third- and fourth-year CS majors. Our pre- and post-tests pose questions in two programming languages to gauge whether upper-level students transfer knowledge between languages. Many students held misconceptions about these concepts at the start of the course. Students made progress in only some languages and topics, and cross-language transfer does not occur naturally. We also discuss various pedagogic activities we used to engage students with these concepts, and provide data and student opinion on their effectiveness.

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call