Before they disappear into the wind, our department interviews each of our graduating students with regards to our program and curriculum. A recurring comment in recent years has been a desire to learn aspects of programming and bioinformatics/biocomputing. Seizing this opportunity to expose students to the command-line and interpreter languages, Joe and I offered to teach a course in “biocomputing” using primarily Python and MatLab.
Having only offered a dry run of the course earlier this year to get a feel of how such a course would flow and the amount of content that could be covered in one term, it made sense to design this course as a hybrid course from the get-go. So, this is not so much a course redesign as a course design. Programming, if you are not familiar with it, is quite often practiced in extreme solitude, accompanied with much head bashing. As we both learned – and continue – to program this way, Joe and I struggled mightly with how this content could best be delivered in a standard lecture course. The opportunity to “flip” the classroom and spend the face-to-face time with discussion and application is, we felt, ideal to learning new programming skills.
In class, we are proposing to utilize “Pair Programming”, which is an agile programming technique in which two people share one computer. The driver types in the code and the navigator (or observer) reviews the code as it is being typed in. Thus the driver is free to focus on completing the task at hand, and the navigator is there as a safety net/sanity-check. Among the benefits to pair programming is better code (usually of simpler design) and shared knowledge (both specific to the task and programming in general). In the classroom it is expected that knowledge will be passed and shared between pairs of programmers as they work, and that they will pick up programming techniques from each other. Additionally, as pair programming tends to reduce the number of bugs, morale among students should also be improved (writing a program that does what you want it to do is a nice feeling!). “Best practices” indicate that driver and navigator roles should be switched often to avoid disengagement. We also plan to switch up pairs during a coding assignment. This would necessitate that each member of a pair understands the code and the rationale for their approach so that they can explain it to the “incoming” person. Coding assignments will be given in class in order to reinforce concepts initially presented online.
That’s what we have so far…