programming with python

Programming with Python

Programming (EN)

About

Course Introduction to scientific programming
Lecturers Ivo van Vulpen en Martijn Stegeman
Context Introduction to scientific programming for every science student
Challenge Planning a traditional course across fields and across years is impossible in our faculty
Design Online course so students can study on their own pace; a few exams are planned during the academic year
Evaluation The course attracted quite a few students during its initial run and with this solid core further expansion is possible

Interview with Martijn Stegeman and Ivo van Vulpen

Could you tell something about this new course?
The course introduction to scientific programming was based on an existing course for first year physics students. The learning goals are to show students that programming is an essential skill for every science student. By starting from a set of problems closely related to the field of study of the students and introducing programming as a means rather than the goal of the course, we take a different approach from traditional programming courses.

In four modules we try to show the students four distinct areas where programming is used for; basic mathematics, numerical techniques, simulations, and big-data. Students are not allowed to use existing tools, but are forced to build their program starting with a limited set of elementary building blocks. We do this to stimulate creativity rather than testing their skills using Google. To demystify programming itself and build confidence we decided to use Python as a programming tool which allowed students to perform all the exercises on their own laptop.

In what way was this course blended? Why did you choose this innovative approach?

Planning a course across fields and across years is impossible in our faculty. To allow students to take the course in their own time we decided to publish the course online and organize only a few exams during the academic year. Students make the exercises on their own laptop, can check their answers using a tool we developed, and hand in the exercises online.

To make sure we target each population of students we added a few elements:

  • Create clips (small movies). For each module we interviewed a scientist or ex-science student on how they use  programming in their daily lives. It was meant to show students that programming is everywhere and that the usefulness of the skill is enormous.
  • Target different student groups; although the programming goals are the same, it is important that students start from a problem they relate to and would like to solve. For each module we tried to create multiple paths, each targeted at a different field of study. Where colliding particles in a box would be great for a physics student, framing the same problem as a prey-predator model for biologists might work better. Same idea, same tool, but different frame.

Are you satisfied with the result?

The course is in Dutch and already attracted quite a few students. I’m happy that we went for a ‘solid’ approach. The core is now there and we could in principle expand to different disciplines, like the social sciences.

A challenge in these designs is to monitor student participation. How do you organize feedback, collect both questions from the students and figure out where they get stuck? This is something that could be improved by looking at these course in a broader sense. Maybe this could be something that we could organize in a faculty/university-wide recommendations.

Is there anything you learned that you would like to share with other teachers?

One crucial advantage we discovered was the enormous added value you get when combining expertise from different fields. This course was created by a combination of an information scientist and a physicist. Each of us would have come up with a completely different course. It was the combination that created this special mix that works much better than parallel development by each of us.

One more tip, something on the additional layer that we think is still missing – where we have the different paths to target different fields of study it would be good to also have some more practice exercises (or more advanced problems) for students who have difficulty programming (students that are already quite advanced).

A last tip is maybe not to aim too high. Make sure you get a solid course that is sustainable and then expand.

Would you recommend this approach/design to other teachers?

Just try it!