We present a problem-based approach to teach computational physics to junior-level students with a variety of programming skill levels, many of whom have only 10 weeks of prior programming experience. The students solve tasks, relating to their current class topics, which are mathematically challenging but computationally tractable. The tasks are chosen to develop and reinforce student understanding of traditional physics content. We provide students with minimal code examples (47 lines of python code in a one-year lab sequence) and no textbook, and require students to search the internet for help to achieve the tasks assigned. This is effective through the use of a pair-programming pedagogy, when students are given tasks at a suitable level. This pedagogical approach should be transferable to any mathematical discipline for which computation is appropriate. Because student effort is focused towards accomplishing tasks within their discipline, they gain the practical skills needed to use computation effectively. Because we give students no templates or example code, they are forced to develop the skill of learning a programming language, and debugging code. This gives students confidence, and prepares them to learn other programming languages in their future career: a most important skill!
['David Roundy', 'Eric Krebs', 'Jeff B. Schulte', 'Greg Mulder']
Look ma, no templates! Problem-based learning of computational physics for novice programmers