[BioPython] "Developing Bioinformatics Computer Skills"

Johann Visagie johann@egenetics.com
Wed, 28 Mar 2001 15:32:22 +0200


Brad Chapman on 2001-03-27 (Tue) at 14:21:45 -0500:
> 
> I'm a biologist who tried C++, Java and Perl before deciding python was the
> right bet for me.

And I'm a computer scientist[1] who has used and continues to use a whole
slew of programming languages, and though I have yet to find the perfect
language for teaching programming to a complete newcomer, Perl is very high
on my list of languages which are utterly UNsuited to that task.[2]  If you
want to teach someone all the wrong habits, start him off on Perl.

(Sorry, Ewan.)

> Count-me-in-for-a-Python-and-Bioinformatics-book-ly y'rs;

For some time now I've had these ideas percolating[3] in my head as to how
the ideal "introduction to programming" course should be structured.  To
over-simplify things horribly, I'd like to try a top-down approach instead of
a bottom-up one.

Most programming tutorials spend about five chapters telling you what a
variable is, around three explaining types, then another two explaining basic
programming structures, and finally one about functions.  The concept of a
class or an object may or may not be introduced in an appendix.

Frankly, I feel that in the 21st century that's putting the cart before the
horse.  I want to get the novice programmer comfortable with the concept of
objects *before* they really know how to write a syntactically correct line
of code.  I want to see if it's possible to instill OO as a natural basis for
problem solving.

The company I work for has close ties with an academic institute, and said
institute has a number of postgrad students who want to learn to program.
(Mmmmm, guinea pigs...)  I've been thinking for some time that I should put
together an "introduction to programming for bioinformatics", using Python as
a vehicle.  In my copious free time these past six months, I've even written
one half of one tutorial.  :-)  Unfortunately I've found that top-down,
though great in theory, does not work that well in practice.  You sort of do
need to know what a variable and a for loop are before you can be taught
about classes.  Hmm.  I'm open to suggestions.  I'm also very open to the
idea of such a course being developed communally.  :-)

(Top-down may not really possible without an entirely graphical programming
environment, though.  OO Logo, if you will.  In fact, Alice[4] may be the
answer (and it's Python-based!).)

More things to check out:

The edu-sig (and specifically CP4E:
  http://www.python.org/sigs/edu-sig/

Two nice online books introducing the novice to programming, using Python:
  http://www.ibiblio.org/obp/thinkCSpy/
  http://www.crosswinds.net/~agauld/

An intro to Python for the experienced OO programmer (very cool):
  http://diveintopython.org/

-- Johann

[1] OK, OK.  Electrical engineer by training, actually.
[2] Says he who started with BASIC.
[3] Hmm, almost time for coffee.
[4] http://www.alice.org/