What You Can Learn from Fishing

One of the things I do to stay sane (always a questionable goal) is to disappear into the woods or onto the water.   Saturday I was fishing and unlike the serious bass fishermen on the lake at the same time – was actually catching fish.

You may ask – “what does this have to do with CS or being a professor or care of graduate students?”.   A lot.

Do Your Homework. In order to catch fish you have to know where each species is, when it is there, and what it likes to eat.    You can have the best technique, fanciest lures and nicest boat – but if the fish aren’t there or aren’t feeding then you won’t catch them.   It took three months of being “skunked” while studying the lake and its life cycles before I began to catch fish.  I don’t get “skunked” now.  In science, in order to identify a significant problem you have to be aware of the state of the art – this means you have to read the literature and (what is more difficult) understand it and its context.

Choose the Right Tools.  The bass fishermen where looking for bass (DUH), but at this time of the year the bass are in the shallows chasing minnows.   (the minnows themselves are chasing the water fleas and fresh water shrimp, while hiding from the bass).  So if you want to catch bass, you need to be able to get into the shallow water.  Modern bass boats cost $10000-$30000, have a 2-3 foot draft (all right 1/2 meter).  They are designed to quickly move the fisherman from one spot to another and easily make 40mph.  Running into a stump or grounding at 40mph is not good for your boat.   On the other hand my canoe cost $700 or so, has a draft measured in inches and easily makes 2mph (4 with a strong tailwind). But I can get wherever I want.    In CS, the tools are critical – both the formal and mathematical ones as well as mundane things like languages.  We don’t use assembly languages (most of the time – except hardware people), and in most of my classes I insist that the students learn new languages.  Java may be great but it’s not the best tool for everything.

Don’t Do What Everyone Else is Doing.  The bass fishermen were seeing that I was catching fish.  (Binoculars help).  They would come racing up and try to catch some as well.  The trouble was – I wasn’t catching bass.  I was looking for mid-column fish (Crappy or Catfish) and catching them.   It must have been intensely frustrating to see this (relatively) low-tech fisherman hauling in fish (if two counts as hauling in) while not getting any strikes yourself.  This is one lesson I have trouble teaching the students – if everyone is doing it then you shouldn’t do more of the same.  Last year the fashion was SVM’s.  Nice algorithm, reasonable code, and you didn’t need to write much to make it work.  Every student wanted to work on secondary structure prediction with a SVM or some conglomeration of SVM’s.  Trouble is, it’s really hard to make a significant improvement in that field by tuning parameters on a piece of code that other people are using and moving from 83% accuracy to 83.5% accuracy isn’t going to win you a Turing prize.

Build the Resource Base.  I release most of the fish I catch.  My family cleans our section of the shore and builds fish attractors.  We encourage cover for wildlife (not just fish).  We practice conservation.   In science – publish, publish, publish and make the code available.  Build servers (yuck practical stuff), and try to educate the next generation.

Written by Rob in: Uncategorized |

What are we teaching them?

Just finished grading.  Grading students is one of those things that you have to do – just like trying to find funding.  Anyway, reflecting on the course(s) I found that a lot of what I was teaching was stuff – the meat of the course – but that isn’t what is important.

What really matters is academic honesty.   I could easily have failed a third of my class for cheating – sometimes quite brazen cheating.  (their grades suffered for it).  Many of the students, both international and from the USA, seem to think that it is acceptable to copy and that I won’t catch them.   What they don’t realize is that they are cheating themselves.

There is a basic standard of professional conduct.  My central task is to teach this – not just the “stuff”.   You can plagiarise on professional papers only if you don’t get caught – and once you’re caught (and you will be -  it’s easy to run a google search) everyone involved suffers.  The plagiarizer is ostracized, his coauthors treated with justifiable suspicion, and the status of the institution is diminished.

So I guess one good side effect of teaching is that now I know which students not to recruit for my lab.

Written by Rob in: pedagogy |

Introduction and Theme of this Site

It’s time to try blogging.  This site is dedicated to explaining what a computer science (and for that matter a science professor) does in general.  Some of it is about research, some about politics and some is about those things I do to stay sane.

Written by Rob in: Uncategorized |

Powered by WordPress | Aeros Theme | WordPress Themes