I took a left turn at ‘make a video’

One of last week’s assignments was to make a video tutorial/introduction/something. I balked, and I will get it done, but I’m not ready to right now, unless  you’re looking for a watermelon explosion. 🙂 Instead I decided to take my current ‘bricks & mortar’ class a little more online. I already use a wiki in my class as their place to document their work. We took a couple of days to focus on using the wiki and through collaborative work to better document what they learned during the first half of their semester. We have piles of sequenced viruses and each has lots of protein coding genes. The big question in our work is “what do all these genes do”?  Most of these genes have unknown function. They made a giant table of every gene for which they think they found some functional information through a variety of bioinformatics tools. Basically this was taking information buried in a software, and making it web-accessible and in one place. I did ask them to write something on their own wikis about one protein they want to work further on, but those posts didn’t go to any depth or encourage much reflection. So, while we haven’t done very well on the reflective side of learning, we did very well on the science side of things.

This is the jumping off point for a new activity we are starting on Monday, a sort-of March Madness for people who care about deciphering the functions of proteins (yep!). We are joining CACAO, an inter-university competition to declare The Function of a set of proteins through a rigorous set of criteria. The competition is set up on a wiki run by a scientist at Texas A&M. Between now and the end of the semester, we will go through several ‘innings’ of 1) examining proteins, their sequences, and the literature  to declare functions based on evidence and then 2) challenging declarations by students in similar classes at two other universities. There is a scoreboard where students earn points for their declarations and challenges. We don’t start until Monday and we’re already stirring up some good trash talk and competition = student engagement. [This competition could really use some of the social media tools we’ve tried out to encourage social interaction and science interaction between our students.]

Today, a professor from Texas A&M trained my students by skype in how to participate in CACAO. There were a couple “this guy is in Texas?” comments in the beginning, which I thought was pretty funny because 20-somethings shouldn’t be fazed by distance and a skype call into their classroom. They got to hear about JMU and University of Maryland Baltimore County students participating, and our trainer even made some custom examples for them related to their work. It was definitely better to use some (not even fancy) technology to bring another scientist into the classroom to broaden their experience and exposure. I believe the rest of the communication will be asychronous, so I’ll have to see if there are other ways I can encourage sychronous on-line interaction with JMU and UMBC students and faculty while we’re all going through this project together.

The outcomes for the students are that they know they are doing real work and the work they are doing is bigger than them. They learn to dig into papers and find solid evidence for an argument. They are making real contributions to science because the functions that are approved are entered into public databases that are used by scientists all over the world. They are communicating with students at other universities who are doing similar work. And they have multiple chances to get the ‘right’ answer- for me this is the most important characteristic.

Anyway, something fun and not what you asked for, but I wouldn’t have jumped into CACAO so easily without #vcuOLE.

A Phage Infographic

I think I have always secretly wanted to make an infographic. This make is a perfect make for me and I decided to use it for a class project this week. We have loads of data from sequencing the DNA of 11 different bacteriophages (viruses that infect bacteria).  My spring 2016 class has just finished documenting all of the genes of a phage named DirtyBetty. I used easel.ly and modified a template DirtyBetty

with a phage graphic and placeholders for several areas the students have explored. I thought I would ask them to digest their work and create the graphics and text in class this week to describe with is actually inside the the DirtyBetty genome. I’ll post the finished product when we are done. I think it will be fun to print it as a poster and share at the VCU Poster Symposium for Undergraduate Research and Creativity

Introducing Computational Thinking

For any life sciences student in 2016, we should be introducing computational thinking as a formative skill, like arithmetic and reading. In our current python programming course, we know what it looks like to teach ‘tools’ in the classroom. It’s easy to fall back to teaching programming from a very practical perspective. In the future, I’d like to ask students to take more responsibility outside of class for learning python syntax through an online environment so we can spend more time in the classroom coaching them in problem solving and computational thinking. So this week I’m thinking about “What does it look like to teach computational thinking in the classroom?” How will the class be different by taking much of the tool learning out of the teaching time? This can be done without programming, which makes this approach a good fit for beginning programmers to develop their problem solving skills. My explorations may or may not impact what I think we’ll take online, but will be important to shaping the portion of the course that remains in the classroom. I am looking for resources to share with students about this new approach and to reset their expectations for what they are going to learn during class time, and I’m also looking for how others have accomplished this shift in their course.

I looked for models of the types of material, resources, instruction to include in a course emphasizing computational thinking. Some of those resources are posted to by diigo library. Somehow at the beginning of this assignment, my googlefu advanced search happened upon a 2006 article by Jeanette Wing, who is the director of the Center for Computational Thinking at Carnegie Mellon University. Her article is an easy to read description of computational thinking, and is an example of the type of reading we should be sharing with students in the first few days of the course to re-orient their goals away from syntax and line spacing and towards learning a new set of ‘mental tools’ that reflect the computer science approach. We need to be talking to students less about programming, and more about process: abstraction, a moderate collection of computational concepts, and common computational practices (iterating, testing/debugging).

To develop a computational thinking mindset, we will need new class activities and materials that demonstrate each concept and provide students with an opportunity to practice the approach initially without using a computer. I am starting to identify concepts and the way we might approach them, sometimes with real world examples and then specific bioinformatics implementations. Just scratching some thoughts down here along with some resources that might be useful:

  • Converting a biology problem to a computational problem.
  • Identifying the goal and subgoals of a problem. I found Google for Education resources for exploring computational thinking. There is a lot to dig through here, much might be for a younger audience. ClustalW as an algorithm is an example that uses pairwise approach to progressively build a multiple sequence alignment. [Note: As I built this list, I saw some of this material may be more relevant to their next class, BNFO 301 Introduction to Bioinformatics, and this is a good example.]
  • Giving sequential instructions. Have the instructor ‘robot’ demonstrate a simple task like how to brush teeth based only on instructions from students. The example is for younger students, but could easily be modified for college and group work. Students will initially do this imprecisely and need to learn to give very clear instructions for the computer to complete the task they want. Subsequent examples will be bioinformatics-based.
  • Practice loops. I like this MIT video about iterative vs. recursive processes using eating a bowl of cereal to illustrate both techniques. Pipetting and PCR are great lab examples of iteration and recursion.
  • Explore parallelism. I can see timing the class to complete a real world or bioinformatics task on paper one at a time vs. all at once. Here is a neat video about creation of a sculpture that visualizes parallel computing made by collaboration between a computer scientist and an artist at Virginia Tech. Bioinformatics example – talking about genome analysis prior to implementing a program.
  • Conditional statements. The action elements. Explore how each are used to control workflow in programming.
    • Boolean and arithmetic operators/Transition to evaluating true/false of objects
    • This topic lead me to a great resource of python specific resources! This is “Interactive Python”, an open source, online resource that seems to include windows for practicing python as well as self-assessment of understanding. I’m really excited about seeing more of the material here.
  • Search for patterns. This video provides a great hands-on exercise students could use to ‘build’ their own pattern matching algorithm on brown paper. Students use many rich datasets in the class, and some background in the structure and content of the data is required for them to be able to approach a problem.

I still don’t know what teaching computational thinking will look like. This will take quite a while to work out, and presumably each of these would be developed into a module. Once students are working on programs, each class should feature the same set of steps to approach a problem- decomposition of the problem into manageable parts, pattern recognition, and then algorithmic design using a series of ordered steps. This is a habit of the mind that not only should help our students become better bioinformaticists, but is also transferrable across a wide variety of life experiences. Along the way I found a great video tutorial to use for my current class in phage discovery!

Goals for learning Bioinformatics programming online

The course I’ll work on first is BNFO 201 Computing Skills in Bioinformatics. It is an introductory python programming course for sophomore and junior level bioinformatics students. We created this class two years ago, and it’s time to reflect on how it’s working to improve student learning. I don’t teach the course, but helped design the course with a colleague, and we direct the course and make sure the course happens each fall. (The course has been taught by a talented staff bioinformaticist for the past two iterations.) I am also responsible for using program assessment to improve our courses and for making sure our undergraduate curriculum responds to the larger goals of our program learning outcomes. The Bioinformatics Program learning outcomes include very little content, but instead focus on behaviors and abilities displayed by scientists and behaviors and abilities that build life-long learning (quite reflective of this post). Finally, all of our bioinformatics courses require students to take an active approach to their own learning and include many opportunities for hands-on practice in problem solving. This is the background I’ll use to approach implementation of an on-line piece in our python course.

The goals of the class are to teach students how to write python programs to solve bioinformatics problems. That’s really a two-part goal of 1) writing python programs and 2) solving bioinformatics problems. We are finding the students learn the syntax of python programming but even at the end of the course are still struggling with problem solving- both in how to put their program together, and how to break down big problems into manageable pieces. This is a typical situation for undergraduate students, and an area that we need to address so students have time to practice in their junior and senior years.

As a first goal for online teaching in our program, I would like to identify or create an online system for students to learn the syntax of python out side of class so that class time can focus on teaching problem solving. This would be a sort of ‘flipped’ class approach to programming to create more active learning time in the classroom. We’d like to include more ‘algorithmic thinking’ in the course to help the students develop problem solving skills. Currently, the students have to write pseudocode in English before they start writing in python. We’ll have to work to build more structure into the class problem-solving process and perhaps find a framework to use, especially as their programs grow in complexity. I think this is very doable, so if folks have ideas to push us further, please keep them coming!

As a second goal, our students need more background in the science of the problems they are being asked to solve, and they don’t have class time to cover it. One of the reasons we created this class was to provide their first programming experience in an environment directly relevant to their interests in biology. But, the biology can quickly get more complex than the student’s biology background at the sophomore level. There are great resources we can pull together to provide context to the problems they are solving, which will also help their problem solving approach. This might be too big a goal right now, but perhaps there is an opportunity for us to create some of our own content here, in conjunction with our Nucleic Acids Research Facility or faculty doing bioinformatics research on campus, and the technology and approach to creating this material would have to be identified.

As far as course goals, I think the goals rewritten as essential questions are more inviting for exploration and learning. They lead me to want to try to answer them, to test my current state and think about what might be next. I do wonder if college students even read our course syllabi. We could certainly encourage students to care to read these things through writing them in a way that is more inviting. So, thanks for that push.

I have a class of Cooperators

The class I’m currently teaching is a science lab class where the experiments are done on computers. My course builds a great community through working on a shared research project, it’s what my program really likes about the course. I tend to teach and build that community from a more intuitive approach- and I haven’t spent much time thinking about what makes this happen. The article about building an online community got me thinking about how my in person class works (made some progress) and how I might do it differently online (still have no idea).

During my class today we discussed a scientific paper students read to answer an assigned question set. Today, I tried to be extra mindful of the interactions that were occurring and how those interactions facilitated student learning, honestly because the interactions are what I really enjoy about the class. Groups of 4 were responsible for knowing one figure each from the paper. I didn’t ask them to prepare anything ahead of time to share with the class, only to come with understanding of their particular figure. I prepared one or two slides for each figure with supplemental images to help explain the parts of each experiment.

I requested each group draw the experimental setup on the dry erase board, and then talk trough each part. Then they talked through the data/figure on their slide. It was clear the four students presenting learned during their presentations because of the drawing they did of the experimental setup. That learning may have happened outside of class if I had them prepare the slides, but I was also worried that as freshmen without any lab experience, they really have no idea how the experiments are performed and wouldn’t accurately depict them by themselves. I’m pretty sure it was better to discuss and draw on the spot, and to develop the approach together.

Students from the class would then ask questions to the presenting students (or the presenting students were welcome to ask questions), and we had several out loud “Ahhh” moments of realization today- I believe all occurred when other students were asking questions to presenting students and come to an understanding of the data represented in the figure. The questions students asked were very good because they had the pieces of the experimental setup from the drawing.

As a second observation, we had 30 minutes left for them to work on the genes in their region of a genome. Each genome was divided up into overlapping pieces so students compare work to two other students when they are done. If you imagine an alphabet, David Croteau might work on A-D, while I work on C-F, and Michael Ries works on E-H, etc. When we are done, I’d need to compare half of my work to David and the other half to Michael. Today they finally introduced themselves to each other, to check out who they would be comparing with and to prepare for those interactions. The social community was strengthened by announcement of the approaching deadline, and they became collaborators!

My observations of my class today helped me to visualize the interactions I want to maintain, and the interactions that I think are important to learning, and to begin to think about how this sort of environment might be facilitated on line. I still can’t really imagine how a rich discussion takes place on line. So I asked my Facebook friends about their online course experiences and I’ll report back in a few days. My gut says I would want synchronous communication  to occur because  the back and forth interactions between students today were important for them to complete their understanding. Learning would be diluted by time, and perhaps washed out without careful attention, in an asynchronous environment.

My students have moved from Newcomer to Cooperator, and Collaborator is right around the corner…can’t wait for them to start their small group research projects after spring break!

Hello World!

aajohnson$ hello.py

print “Hello World!”

Here is my blog post for the #vcuOLE. I am going to use what I learn in this community towards creating online course content for bioinformatics. I don’t know if I will use it for our programming course, but I thought I should greet you all with a traditional first Hello World program in python, instead of the template first page.