Good advice for 11th graders...

xkcd has some good advice for high-schoolers:

i-ebc929944697a280001f8cf4b4c7548b-xkcd_11th_grade.jpg

That goes doubly for anyone even vaguely interested in a career in biology, and particularly genetics - right now, even some basic scripting experience will take you further than any amount of pipette-wrangling. I wish I'd known this when I was back in high school...

Subscribe to Genetic Future.

More like this

razib is right, but it's too late for me - save yourselves, 11th graders! start with python!

I'll chime in:

For high schoolers:

Install Linux. Use it exclusively. You will learn how to really use a computer without junking up your brain with Windows, and it _might_ help keep you off the computer games. Learning Python or other tools won't click for you until you understand how they're supposed to be used on a real operating system.

OSX is good, too, though not all kids in high school can afford a nice mac. Anybody can find an old PC for linux ---probably for free.

True story: please don't work at McDonald's at $5.15/hour to save up $1500 for a "sweet machine." It's not worth your time or reputation or complexion... really.

As a programming language to learn from, I'd say forget Perl or even Python. Something like Pascal, Modula 2, Modula 3, or Oberon would be much better.

I'd also suggest introducing them to a (mathematically) functional programming language, like ML, Haskell, or something like that,

-- Python for sure. I actually know Perl extremely well and switched to Python early in 2007. Python is definitely where all the momentum is. A few things are more verbose than in Perl, but the overall maintainability of the language is far greater. For example, you might feel very clever when you set $/ to something other than a newline, e.g. for parsing GENBANK files.

But lemme tell you that heavy use of such variables results in "write only" code. And try googling "$/". (Hint: won't work. But see: http://www.kichwa.com/quik_ref/spec_variables.html).

-- If you're going to learn a programming language, you should learn (in order) C, C++, Lisp [maybe SLIME in Emacs and some Elisp], OCaml [maybe], and Python. I put them in that order because it will be very hard to make yourself code something in raw C after you've done something in a higher level language -- but you need to know how to do it to optimize any kind of scientific routine.

That said, these days when I "drop into C" from Python I really drop into C++, because the logic of the code usually involves a lot of python lists and dicts...and I obviously don't want to write vector and map from scratch (does someone know of good standard C libraries for that stuff?).

Anyway, you can do just about anything extremely quickly if you know Python and C++ at a high level. Most programming paradigms are subsumed within those two languages. Most awesome of all is template metaprogramming, which just needs a better syntax.

-- OS X is definitely the shiz. Linux is fine, but better as a backend to ssh into. Do you really need to save up for a Mac, though? The Mac Mini is only $599, and should be good for a lot of high-school level programming.

-- Dark Horse: Javascript scripts. I keep meaning to become a Javascript ninja. This new Tracemonkey shiz (google it and see link below) has made me think I might want to push it up a bit on the priority queue. The kinds of optimizations that Chrome and Firefox are doing with Javascript can be ported over to other dynamic languages (I know Python is paying attention), but Javascript will definitely be the first beneficiary. Which means it would be the best language to code anything in -- as fast as C or at least Java (the holy grail!), heavy library support, easy to code. Maybe JS is a little less elegant than Python -- but it *lives* on the Web and makes webifying your shiz much easier.

Definitely check this link out if you're into this stuff:

https://wiki.mozilla.org/JavaScript:TraceMonkey

By genomeunit (not verified) on 31 Dec 2008 #permalink

I wish I had known that in high school, or college, grad school was too late. A postdoc in my lab tried to learn Perl. He worked on it all day, was still in front of the computer when I went home that evening, and he was still in front of the computer when I came in the next morning. He was disheveled and hadn't gone home! We were hoping to use it for SNP linkage studies - no such luck. My advisor had to outsource to another institution.