People *seriously* underestimate just how pathetic the memory bandwidth is on your standard desktop PC.
For the coders among you: Suppose you had an algebraic structure datatype that you had test against a set of n! permutations. Standard programming dogma says: Generate the permutations once, store them in memory, and then grab them as needed... right?
At least on my Athlon XP (and, I suspect, any modern processor with a piece of crap bus)... WRONG. It ends up being MUCH faster to regenerate the permutations from scratch every freaking time you need them, rather than risk having a cache miss and grabbing them from RAM.
I know you won't believe me, because I didn't believe me at first either. I couldn't imagine that the memory bandwidth was THAT BAD. I coded it up this way to see how much WORSE it performed... and it ended up performing better. An important lesson about optimizing programs for modern Intel/AMD architectures was learned: often times is faster to recompute on the 2GHz processor, rather than wait for the not_2GHz_bus to fetch information from RAM.
But please, don't take my word for it, go try it for yourself.
As someone working in Bioinformatics, here are a couple of quick opinions on your post:
Bioinformatics is *NOT* "just data-mining". Certainly, data-mining of genetic information is one aspect, but its far from being the whole field. There are lots of really interesting problems besides just "how do we deal with this huge genome..." Protien secondary structure prediction, tertiary structure prediction, computational pharmacokinetics (and biomolecule docking problems) etc... there is just *so* much more to the field than data mining.
The other thing is that this is only going to be "hot" for a limited amount of time. Bioinformatics is here to stay, but right now its on a huge trendy upswing. Drug companies are throwing millions of dollars at it in hopes of developing an 'in silico' drug testing lab... sooner or later they are going to realize that there is still a LOT of basic science that needs to be done before this happens. People working in bioinfo in industy are getting some pretty ludicrous salaries these days (yes I'm jealous... I'm in academia), but it ain't gonna last. Like any other flavour of the week there will be a huge bursting of the bubble, followed by a nice levelling off.
If bioinformatics *interests* you, then I would highly recommend pursuing it. Its a very rewarding area, and it offers you the opportunity to work with people from many different disciplines. But if you are on the "Bioinformatics == $$" bandwagon... you're going to end up dissapointed.
I totally agree that most CS people end up as programmers or software engineers. But if they're *really* doing software engineering, then there is a LOT more to that than just coding. And just because thats what most people end up doing... doesn't mean that its all there is to CS. How many people with a BSc in physics end up doing something that could be comfortably labelled "pure physics"?
The ends do not the means make.
>most of the people who do what you consider CS are actually math majors
If you are from North America, I promise you that you are wrong on this one. Go to your local university.. walk into the mathematics department and ask the faculty there if they think: automata theory, complexity theory, formal language theory, information theory.. heck even semigroup and semiring theory are "pure mathematics". They'll laugh in your face and make some condescending remarks. (If you're in Europe, then all bets are off. Your comment is quite accurate... why this dichotomy exists is a mystery to me... but I have certainly observed it).
I do, though, think it possible to be a good theoretical computer scientist without being a "very good programmer". The level one works on here is so abstract, that being able to write blindingly efficient C code is far less important than being intimately familiar with axiomatic set theory. And these folks still make a very important contribution to computer science as whole.
Nice anti-Java rant =) I'm not a big Java fan myself... but for better or worse, its going to be sticking around for a while. It may be a beast, but on an aesthetic level, its a little better than C++... how many times do people have to re-invent "memory management" by reference counting before they realize it sucks??
Python is my favourite language for prototyping and scripting, so I'm 100% with you on that one. I haven't had more than a cursory look at Ruby, but it seems to have a pretty solid design.
Now, as for "applied computer science == programming"... yes, thats part of it, but it sure isn't the whole bag. Do you think the AI/computer vision guys working on cruise missile guidance systems are just simple coders? But at the same time, they aren't doing new research in computer vision... they are *applying* (probably quite a bit) of abstract academic research in the area. But their contribution is undoubtedly more than just writing code.
>Considering that that's right there in the core, I should think not.
The "core" of LISP is the eval function.. no more, no less...
>the timescales are totally absurd
I guess this depends. I think its reasonable and possible to write an exam that directly tests the material at hand without demanding too much. Certainly an exam question that reads "Design and implement a major software system..." is ludicrous. But a question along the lines of "Given the tree data structure listed above, write a depth-first search for it in pseudo code" is perfectly reasonable. And it tells me if the student has even the foggiest idea what a depth first search is and what these "tree" things are...
In any case your premise appears to be that "real CS" == large scale software engineering. I respectfully disagree... this is certainly *one* of the major areas of CS... but its not even close to the whole field.
Once again, Slashdot continues to perpetuate the (Computer Science == Programming) myth.
Programming IS NOT "computer science" any more than telescope design is Astronomy (with apologies to Dykstra).
Programming is a trade skill. Certainly, a challenging and rewarding one.. but it is not a science.
Being the first guy to figure out quicksort... thats science... thats research. Coding a quicksort in LISP is not.
I've ranted about this before, but it upsets me to see such a misleading headline.
I think *computer science* exams are quite fair... if you understand the data structures and algorithms associated with B-trees.... you shouldn't have any problem describing them on an exam. Likewise, if you understand the halting problem, reducing a simple contrived example should be doable on an exam.
On the other hand, I very much disagree with the "code this up in PL/I, using proper syntax" type of exam question. What an enormous waste of time...
The bottom line is that if you've been through a computer science program and understand the underlying principles, I should be able to give you a manual for 'trendy language x', a few examples, and 48 hours. After that, you should have no trouble coding in Jav^H^H^H 'trendy language x'. Will you screw up the syntax occasionally? You bet. Is it fair to dock points on a formal exam for being human and forgetting a semicolon? I sure don't think so; and I've *never* done that to my students.
But I stray from my point. Once more, for the record, since no matter how often I rant about it, no one seems to listen:
Yeah, the quote is certainly overused, but I figured a quote on the basic philosphy of your nation carries a little more credibility coming from one of your founding fathers rather than some outsider...
As for scampering off.. what more can I say? This isn't a black-and-white right-or-wrong type situation. Its a matter of personal opinion, and every opinion is valid.
Several millions of people throughout history have happily handed over their civil rights for security. Sometimes it works, sometimes it doesn't. Even in Stalinist Russia, there were people who were happy with the situation. Look at whats happened to crime in the former USSR since the KGB had their powers toned down.
I'm not saying you're wrong; I'm simply saying that you are living in a society founded on principles that appear fairly antithetical to your own.
>know most Canadians don't mind us USians, but really they should be joyful that we are there.
You see, its an attitude like this that causes the problems. In my experience 99.9% of the Americans I've met were wonderful, friendly, educated and generally first-class people. Its that remaining.1% that causes so many international image problems for the U.S.
You have clearly started with the base assumption that the U.S.A. is the most wonderful, bestest place in the whole wide world to live. For some types of people this is, no doubt, true.
It comes down to mindset. If you are a capitalist through and through, then yes... the U.S. is a utopian paradise. If you work hard, and have some luck, you can be amongst the elite. "The American Dream" they call it.
However, I would wager that there are several people worldwide who don't like: Watching fellow citizens die because they can't afford health care; the idea that anyone with a hankerin' for a gun can get one; the idea that children have ready access to serious firearms and use them to slaughter other children; the idea that when other nations attack its terrorism... but when the U.S. "influences" central american politics to achieve a desired outcome its "patriotism" and "defending democracy".... (again, please note I'm not trying to pass value judgement on these actions. I'm not saying they weren't justified... just that this is a matter of opinion, and not everyone agrees on it.)
I'm sure you see where this is going.
The point is: Many Candians do NOT like "everything good" about the US. Indeed, they are bitterly resentful that your culture continues to erode ours, and we are powerless to stop it because there are so few of us and so many of you. Its not an 'inferiority complexity' as you so pejoratively put it... its an expression of the fact that we have somewhat different values than you do.
Don't assume everyone deperately wants to be a U.S. citizen. It is arrogant, ignorant and makes you a poster boy for what non-americans hate about the U.S.
Again, I'm *not* saying the U.S. is a bad place. There are many wonderful things about it. I'm just saying that it isn't everyones deepest desire to live in your society.
Re:Wow, taking on IBM mainframes...
on
'Unbreakable Linux'
·
· Score: 4, Interesting
>Taking on IBM? Taking on IBM mainframes? That is truly a serious statement.
Indeed.
>A cluster of four Linux machines is more reliable and less expensive than an IBM mainframe.
Less expensive? No question. More reliable? Hmm.. I guess I'd have to see some hard numbers to back that up.
Notice he doesn't mention "more secure"... probably a reason for that, huh? Of course, a lot of it is good old fashioned security through obscurity. How many 14-year-old kids have OS/360 / MVS / [insert your big iron poison here] experience? How many have linux experience? Right. (Yeah, some whacko is bound to point out http://www.conmicro.cx/hercules/, and to that whacko I say "I didn't say *no* script kiddies would have the experience.. just a lot fewer.)
Its all semantics anyways. Everyone knows the ultimate in reliability and security is MPE running on an HP3000.../ducks
>> Scientists are detail-oriented by nature, and for them to miss a small detail such as the proper pluralization of a word they use constantly is out-of-character. >>
I have to respectfully disagree with you here. *Some* scientists are detail-oriented, but others are more "idea people" and hate getting bogged down with trivial details. Often times, you'll see a lot of two author papers where one author is "the idea guy" and the other author is "the detail guy". True story.
Also... as far as (detail-oriented == proper spelling)... again I have to disagree. I just finished refereeing some conference papers and one of them sticks out in my mind as having wonderfully detailed proofs, but also as being an atrocity commited against the English language. Attention to detail in one's research doesn't always carry over into other areas... (for example, I try to be very detailed in my research... but if you read through some of my slashdot posts, you'll find that I'm pretty much unable to spell and often abuse English grammar.)
Really though, the true thesis of your post was journalist-bashing; to which I can only respond: "Rock on, brother" =)
>I also have the option of going to medical school.
If your true interest is bioinformatics, then I would hazard to say that medical school would be a massive waste of your time. People will hate me for saying this, but Medical school is essentially a trade school. It has very little do with science, and lots to do with aquiring piles of knowledge along with the tools and techniques to apply that knowledge. The thing is though.. its a *very* difficult and demanding trade school.
If you are serious about pursuing a scientific career, you'd be much better served by doing the Master's degree which will expose you to wonderful world of doing new research (which you will not get at med school). Until you've tried doing your own research, its really tough to understand exactly how boring/frustrating/rage inducing/exciting/euphoric/fun/rewarding it is.
Now, on the other hand, if doing bioinformatics and getting a nice fat salary is your goal, then med school might not be a waste of time. In my limited experience, MD/Ph.Ds get paid truckloads more money than straight Ph.Ds.. though the dispairity is narrowing these days.
If straight bioinformatics is your goal, I would have a tough time recommending med school just because you will devote much time and energy to something that will have minimal value to your chosen career.
>I could pick up the languages and structure of CS by myself
This is a dangerous statement. Are you sure? Computer science is *NOT* (sorry for the shouting, but this is a very sore point for me) about programming. Bioinformatics research is also not about programming. Monkeys can write programs. Serious research in bioinformatics falls into many areas, but one of the major ones is designing new algorithms. Sure, at the end of the day you have to implement the new algorithm, but thats the trivial part. The hard part is coming up with the algorithm. If you don't believe me, write up a program and submit it to the journal/conference of your choice. If all you've done is implemented someone else's algorithm, it will not be considered new work and I can almost guarantee it will be rejected outright. (Now if you can *improve* on an existing algorithm.. thats definitely publishable. But whats interesting is the improvement in the algorithm.. not a new implementation).
You could pick up the CS on your own, but it has nothing to do with programming languages. It has to do with analysis and design of algorithms, formal language and automata theory, semantics, complexity theory and so very many other things. Learning this on your own is a very tall order. Although looking back at your post... I see you are doing a CS minor. I suppose I should've read more carefully before I threw on rantmode. In any case, the text above still applies, but if you are doing a CS minor I would imagine you would *have* a lot of that background... so I'll just shut up on that topic now.
For programming, I never use Perl for anything serious. BioPerl is great for parsing files and quickly formatting things, but for any serious work it is just too slow. Take a look at the major bioinformatics software packages (BLAST, clustal, etc.)... how many of them are written in Perl? None. Not one. Several have hooks so they can be called by BioPerl, but the programs themselves are usually written in a lower-level compilable language like C.
BioPerl is wonderful for biologists who want to *use* the tools that are created by bioinformaticians, but its not always appropriate for the people creating the tools. Many bioinfo problems are very computationally intensive and every iota of performance you can squeek out is critical. Perl is a bit of slug when it comes to performance;)
As for actually answering your question (sorry, I tend to rant on at times), I'll tell you first what I tell my students: anyone with a decent computer science background, 24 hours and a reference manual should be able to learn a new computer language. That may be true, but its still less than helpful.. if you really want concrete recommendations: definitely learn C.. it is the king of performance and you will need it. Learning LISP, Scheme, ML or some other functional language would be smashingly useful, as some problems can be solved very elegantly using the functional paradigm (and for those that will say "functional programs are too slow!".. rubbish. Check out a modern ML compiler and then get back to me). PROLOG would also be great.
In addition to BioPerl, you may want to check out Python/BioPython. In certain cliques, Python code is considered to be more scalable/maintainable than Perl code. I won't indulge in a holy war here, but I believe both have their advantages. (Though currently BioPerl is *far* more popular).
As for what you should be doing at this level, personally I'd stop fretting about what programming language to learn. You're obviously a bright person, so picking up new languages is no big deal. No matter what language you learn today, you can count on the fact that n years from now it won't be trendy and all the buzz will be about [cool new language x]. What I'd focus on is the actual *content* of the field rather than the implementations. Read up on the basic algorithms (stuff like Smith-Waterman), take a look at genefinding (HMMs and neural nets), secondary structure prediction, and so forth. This knowledge will never go out of date.
Finally, the disclaimer: Everything I've said here is a matter of personal opinion. I've been awake for well over 24 hours at this point and still haven't had my morning coffee.. so if the sentences even parse, I'll be amazed;) The point is: take everything I've said with a grain of salt. So *I* don't think med school is necessarily the right path. That doesn't mean that it isn't. If med school is something that you really want to do, then do it! The bottom line is that there is no such thing as the "canonical path to bioinformatics".. and even if there were, there will still be infinitely many other paths.
The only really good piece of advice I can give you is: do what will make you happy.
I hope that was moderately coherent and helpful in some way =)
I heartily agree on all points. I didn't mean to imply that bioinformatics is/should be dominated by computer science... merely that a deeper knowledge of algorithms and the theory of computation is as essential as deep biological knowledge of the problem at hand.
It has been my personal experience that my best work is almost always a result of a colloboration between biologists/biochemists and mathematicians/computer scientists. Thats what attracted me to the field in the first place... the opportunity for interdisciplinary research.
As for the HMM's... no mathematician would admit to being a Markov Model guru. Far too much voodoo (by which I mean complexity, of course).;)
- Designing sophisticated algorithms requires only "familiarity with computer technologies" (I suppose being a professional astronomer requires only "familiarity with telescope technologies" too)
- Bioinformaticians need graduate training in a biological science. This one scared the heck outta me... I *thought* I was a bioinformatician, but my graduate training is in computer science. Come to think of it... the great majority of 'bioinformaticians' I've met at conferences were CS grads. I must have been tricked into attending those fake bioinformatics conferences...
- Journalists don't need to bother researching or providing pesky 'facts' in their articles anymore. Its OK to just make stuff up... right off the top of your head.
>Seriously, what's so great about MMORPGs? Do people just like throwing money away?
I'm not a big fan myself.. but in some cases MMORPGs are more than worth the money. A friend of mine has a daughter that lives in another state (messy divorce, custody, and so forth) and he only gets to see her a few times a year. While talking on the phone provides a nice communication link... there is also something to be said for spending 'recreation time' with one's loved ones. In his case, EverQuest allows him an opportunity to "do something" with his daughter that he might otherwise not have. I believe he feels this is easily worth $120/yr.
I doubt, however, that he is the typical MMORPG player;) Just wanted to point out that its a nice way for people to spend time with each other without having to worry about pesky details like physical co-location. It certainly doesn't replace face-to-face time... but its better than nothing.
Yeah, but could you play multiplayer netmaze on several Amigas by daisy-chaining their MIDI ports together?
Oh yeah, and I think you could actually use the ST MIDI ports for MIDI too;) Seriously though, before Macs became (slightly) more affordable, there was a time when an ST with Cubase was a decent sequencing solution.
My personal memory is that once IBM and DEC started targeting the scientific computing community in the mid 80's... CDC's days were numbered. Prior to that, CDC had been pretty much the only game in town for hard-core numerical computing (I remember briefly being subjected to an old CDC Cyber.../shudder).
Thats a really insightful question. I wouldn't even want to hazard a guess to the general answer (being a mathematician, rather than a social psychologist;) ). I can, however, tell you why *I* am a DEC fanatic. Its based purely on sentiment.
The first 'real' computer I cut my teeth on was a VAX 11/780. It was such a wonderful piece of machinary. I remember a distinct excitement present in exploring the the system... marvelling at the architecture... fighting (and often winning) with VMS;)
I have similar feelings for HP3000 minis running MPE, as my first job involved some system programming on these beasties. Still, there really *was* something magical about DEC and VAXen in particular (I'm sure the PDPs are nostalgia-worthy too, but they're just a little before my time).
I guess that didn't end up answering your questions at all, but it any case... I heartily agree with your comments on DEC and its lasting legacy (if only the minds of the faithful).
This hardly counts as a showdown, but, here are some statistically meaningless personal observations on my Athlon XP 1700+:
I tried compiling a program I've been working on with gcc-2.96 and version 6 of icc with some cut'n'paste "heavily optimize" flags*.
(The program generates all finite semigroups of a given order, and consists completely of integer operations).
To generate all finite semigroups of order 7 took (under constant system load; result is the average of the system time reported by/usr/bin/time over three attempts):
~672 seconds with the gcc executable ~553 seconds with the icc executable
Its not an Earth-shattering difference, but its certainly non-trivial.
Again, please don't mistake this for a fair comparison of any sort... its simply a test of both compilers in the only domain that matters a tinker's cuss to me: Will it generate faster exectuables for the program I'm working on at the moment with little to no extra work? Extrapolate at your own risk.
Hey, if I could solve *any* of the problems I'm currently working on to even 90% correct, I'd be a happy man;)
I agree dealing with some academics can be infinitely frustrating... I have to do this on a daily basis. I just wanted to make sure that people know we aren't *all* like that.
Thanks for the dialogue, and for taking the time to respond to my rantings.
>Hate to break your illusions here, but I cannot do most of this. This is the academia equivalent to "Buzzword Bingo" in the IT workplace.
I respectfully disagree, but I admit that this is *very* much a matter of opinion.
You claim you are 'considered a top quality software engineer', so I assume you are familiar with some of the items I listed (SE techniques,structured programming, commenting code).
If you did anything with concurrent or real-time systems; believe me..you'd know about the sleeping barber problem. This is not some abstract theorem thought up by ivory tower mathematicians... this is a REAL problem in resource management. Deadlock is a very bad thing in an autopilot.
On the other hand, if your area of expertise isn't real-time systems, operating systems, etc. then I agree, this isn't knowledge you need. But as educators we don't have the luxury of knowing what area of work each student will go into. In any case, being aware of such problems and how to solve them doesn't seem like a liability to me.
If you don't understand complexity, again, this is probably fine for 90% of the 'code a gui for accounts payable' work. But if you ever have to design a new algorithm...
It gets even worse if you don't have even a tenuous grasp on computability. You could spend days of your life trying to write software to do something that has been mathematically proven to be impossible. If you knew that ahead of time, you could've put reasonable restrictions on the problem to make it solveable. Instead, you probably end up with code that works most of the time, but occasionally goes into an infinite loop "for no apparent reason".
Regarding the Quicksort example... you're dead right there. Picking the first element as a pivot is plain stupid. Change textbooks. But tell me.. if complexity theory should be "thrown right out the window".. how can you turn around and talk about Quicksort vs. Bubblesort?
In the absence of people doing the deep theoretical research... you have no foundation whatsoever for making this comparison.
>The skills being taught had little or no applicability to the real world
I think this depends a great deal on: the school, the program, the profs, what your personal definition of "applicability to the real world" is.
>you display an overly arrogant attitude in defining the standards by which CS skills should be judged.
My bad. This wasn't intended as a list of 'standards by which CS skills should be judged'. It was just a flippant comment; and the list was just some examples.
The bottom line here... you have totally confused Computer SCIENCE with "writing software". Computer SCIENCE has as much to do with computers (and programming) as Astronomy does with building telescopes (apologies to Dykstra).
You refer several times to being a top quality software engineer. I don't doubt that. But that has little to do with computer science. This is probably why you were disapointed by your University experience. Its like a plumber taking a course in fluid mechanics and being disapointed that all they talked about were "these stupid Navier-Stokes equations"... and no one ever mentioned how to fit pipes.
>I also think this is typical for most people who have been in the academic world for an extensive period of time, judging from my own experience.
I think you display an overly ignorant attitude in understanding what computer science is. I also think this is typical for most people who have been in industry and for some reason insist that (Computer Science == Coding).
People *seriously* underestimate just how pathetic the memory bandwidth is on your standard desktop PC.
For the coders among you: Suppose you had an algebraic structure datatype that you had test against a set of n! permutations. Standard programming dogma says: Generate the permutations once, store them in memory, and then grab them as needed... right?
At least on my Athlon XP (and, I suspect, any modern processor with a piece of crap bus)... WRONG. It ends up being MUCH faster to regenerate the permutations from scratch every freaking time you need them, rather than risk having a cache miss and grabbing them from RAM.
I know you won't believe me, because I didn't believe me at first either. I couldn't imagine that the memory bandwidth was THAT BAD. I coded it up this way to see how much WORSE it performed... and it ended up performing better. An important lesson about optimizing programs for modern Intel/AMD architectures was learned: often times is faster to recompute on the 2GHz processor, rather than wait for the not_2GHz_bus to fetch information from RAM.
But please, don't take my word for it, go try it for yourself.
As someone working in Bioinformatics, here are a couple of quick opinions on your post:
Bioinformatics is *NOT* "just data-mining". Certainly, data-mining of genetic information is one aspect, but its far from being the whole field. There are lots of really interesting problems besides just "how do we deal with this huge genome..." Protien secondary structure prediction, tertiary structure prediction, computational pharmacokinetics (and biomolecule docking problems) etc... there is just *so* much more to the field than data mining.
The other thing is that this is only going to be "hot" for a limited amount of time. Bioinformatics is here to stay, but right now its on a huge trendy upswing. Drug companies are throwing millions of dollars at it in hopes of developing an 'in silico' drug testing lab... sooner or later they are going to realize that there is still a LOT of basic science that needs to be done before this happens. People working in bioinfo in industy are getting some pretty ludicrous salaries these days (yes I'm jealous... I'm in academia), but it ain't gonna last. Like any other flavour of the week there will be a huge bursting of the bubble, followed by a nice levelling off.
If bioinformatics *interests* you, then I would highly recommend pursuing it. Its a very rewarding area, and it offers you the opportunity to work with people from many different disciplines. But if you are on the "Bioinformatics == $$" bandwagon... you're going to end up dissapointed.
I totally agree that most CS people end up as programmers or software engineers. But if they're *really* doing software engineering, then there is a LOT more to that than just coding. And just because thats what most people end up doing... doesn't mean that its all there is to CS. How many people with a BSc in physics end up doing something that could be comfortably labelled "pure physics"?
The ends do not the means make.
>most of the people who do what you consider CS are actually math majors
If you are from North America, I promise you that you are wrong on this one. Go to your local university.. walk into the mathematics department and ask the faculty there if they think: automata theory, complexity theory, formal language theory, information theory.. heck even semigroup and semiring theory are "pure mathematics". They'll laugh in your face and make some condescending remarks. (If you're in Europe, then all bets are off. Your comment is quite accurate... why this dichotomy exists is a mystery to me... but I have certainly observed it).
Excellent point.
I do, though, think it possible to be a good theoretical computer scientist without being a "very good programmer". The level one works on here is so abstract, that being able to write blindingly efficient C code is far less important than being intimately familiar with axiomatic set theory. And these folks still make a very important contribution to computer science as whole.
In most other areas of CS though, you're bang on.
Nice anti-Java rant =) I'm not a big Java fan myself... but for better or worse, its going to be sticking around for a while. It may be a beast, but on an aesthetic level, its a little better than C++... how many times do people have to re-invent "memory management" by reference counting before they realize it sucks??
Python is my favourite language for prototyping and scripting, so I'm 100% with you on that one. I haven't had more than a cursory look at Ruby, but it seems to have a pretty solid design.
Now, as for "applied computer science == programming"... yes, thats part of it, but it sure isn't the whole bag. Do you think the AI/computer vision guys working on cruise missile guidance systems are just simple coders? But at the same time, they aren't doing new research in computer vision... they are *applying* (probably quite a bit) of abstract academic research in the area. But their contribution is undoubtedly more than just writing code.
>Considering that that's right there in the core, I should think not.
The "core" of LISP is the eval function.. no more, no less...
>the timescales are totally absurd
I guess this depends. I think its reasonable and possible to write an exam that directly tests the material at hand without demanding too much. Certainly an exam question that reads "Design and implement a major software system..." is ludicrous. But a question along the lines of "Given the tree data structure listed above, write a depth-first search for it in pseudo code" is perfectly reasonable. And it tells me if the student has even the foggiest idea what a depth first search is and what these "tree" things are...
In any case your premise appears to be that "real CS" == large scale software engineering. I respectfully disagree... this is certainly *one* of the major areas of CS... but its not even close to the whole field.
Just what I want... a high-frequency transmitter randomly tossing out EM radiation while sitting in my pocket right next to the family jewels....
Don't fool yourself... SRI is trying to sterlize us.
... of someone's knowledge of fluid mechanics?
Once again, Slashdot continues to perpetuate the (Computer Science == Programming) myth.
Programming IS NOT "computer science" any more than telescope design is Astronomy (with apologies to Dykstra).
Programming is a trade skill. Certainly, a challenging and rewarding one.. but it is not a science.
Being the first guy to figure out quicksort... thats science... thats research. Coding a quicksort in LISP is not.
I've ranted about this before, but it upsets me to see such a misleading headline.
I think *computer science* exams are quite fair... if you understand the data structures and algorithms associated with B-trees.... you shouldn't have any problem describing them on an exam. Likewise, if you understand the halting problem, reducing a simple contrived example should be doable on an exam.
On the other hand, I very much disagree with the "code this up in PL/I, using proper syntax" type of exam question. What an enormous waste of time...
The bottom line is that if you've been through a computer science program and understand the underlying principles, I should be able to give you a manual for 'trendy language x', a few examples, and 48 hours. After that, you should have no trouble coding in Jav^H^H^H 'trendy language x'. Will you screw up the syntax occasionally? You bet. Is it fair to dock points on a formal exam for being human and forgetting a semicolon? I sure don't think so; and I've *never* done that to my students.
But I stray from my point. Once more, for the record, since no matter how often I rant about it, no one seems to listen:
COMPUTER SCIENCE != PROGRAMMING.
... but in perusing the comments attached to this story, I've seen quite a few people who are very confused about the nature of contract law.
l
Take a look at:
http://www.law.cornell.edu/topics/contracts.htm
. . . and then try and figure out again why it is that society tolerates lawyers...
Yeah, the quote is certainly overused, but I figured a quote on the basic philosphy of your nation carries a little more credibility coming from one of your founding fathers rather than some outsider...
As for scampering off.. what more can I say? This isn't a black-and-white right-or-wrong type situation. Its a matter of personal opinion, and every opinion is valid.
Several millions of people throughout history have happily handed over their civil rights for security. Sometimes it works, sometimes it doesn't. Even in Stalinist Russia, there were people who were happy with the situation. Look at whats happened to crime in the former USSR since the KGB had their powers toned down.
I'm not saying you're wrong; I'm simply saying that you are living in a society founded on principles that appear fairly antithetical to your own.
Maybe you should spend a little time reflecting on why it is that the U.S. is such a great country.
I'll even get you started with a very enlightened quote from one of your own founding fathers:
"Those who would sacrifice liberty for security deserve neither liberty nor security."
-Benjamin Franklin
>know most Canadians don't mind us USians, but really they should be joyful that we are there.
.1% that causes so many international image problems for the U.S.
You see, its an attitude like this that causes the problems. In my experience 99.9% of the Americans I've met were wonderful, friendly, educated and generally first-class people. Its that remaining
You have clearly started with the base assumption that the U.S.A. is the most wonderful, bestest place in the whole wide world to live. For some types of people this is, no doubt, true.
It comes down to mindset. If you are a capitalist through and through, then yes... the U.S. is a utopian paradise. If you work hard, and have some luck, you can be amongst the elite. "The American Dream" they call it.
However, I would wager that there are several people worldwide who don't like: Watching fellow citizens die because they can't afford health care; the idea that anyone with a hankerin' for a gun can get one; the idea that children have ready access to serious firearms and use them to slaughter other children; the idea that when other nations attack its terrorism... but when the U.S. "influences" central american politics to achieve a desired outcome its "patriotism" and "defending democracy".... (again, please note I'm not trying to pass value judgement on these actions. I'm not saying they weren't justified... just that this is a matter of opinion, and not everyone agrees on it.)
I'm sure you see where this is going.
The point is: Many Candians do NOT like "everything good" about the US. Indeed, they are bitterly resentful that your culture continues to erode ours, and we are powerless to stop it because there are so few of us and so many of you. Its not an 'inferiority complexity' as you so pejoratively put it... its an expression of the fact that we have somewhat different values than you do.
Don't assume everyone deperately wants to be a U.S. citizen. It is arrogant, ignorant and makes you a poster boy for what non-americans hate about the U.S.
Again, I'm *not* saying the U.S. is a bad place. There are many wonderful things about it. I'm just saying that it isn't everyones deepest desire to live in your society.
>Taking on IBM? Taking on IBM mainframes? That is truly a serious statement.
/ducks
Indeed.
>A cluster of four Linux machines is more reliable and less expensive than an IBM mainframe.
Less expensive? No question. More reliable? Hmm.. I guess I'd have to see some hard numbers to back that up.
Notice he doesn't mention "more secure"... probably a reason for that, huh? Of course, a lot of it is good old fashioned security through obscurity. How many 14-year-old kids have OS/360 / MVS / [insert your big iron poison here] experience? How many have linux experience? Right. (Yeah, some whacko is bound to point out http://www.conmicro.cx/hercules/, and to that whacko I say "I didn't say *no* script kiddies would have the experience.. just a lot fewer.)
Its all semantics anyways. Everyone knows the ultimate in reliability and security is MPE running on an HP3000...
>>
Scientists are detail-oriented by nature, and for them to miss a small detail such as the proper pluralization of a word they use constantly is out-of-character.
>>
I have to respectfully disagree with you here. *Some* scientists are detail-oriented, but others are more "idea people" and hate getting bogged down with trivial details. Often times, you'll see a lot of two author papers where one author is "the idea guy" and the other author is "the detail guy". True story.
Also... as far as (detail-oriented == proper spelling)... again I have to disagree. I just finished refereeing some conference papers and one of them sticks out in my mind as having wonderfully detailed proofs, but also as being an atrocity commited against the English language. Attention to detail in one's research doesn't always carry over into other areas... (for example, I try to be very detailed in my research... but if you read through some of my slashdot posts, you'll find that I'm pretty much unable to spell and often abuse English grammar.)
Really though, the true thesis of your post was journalist-bashing; to which I can only respond: "Rock on, brother" =)
>I also have the option of going to medical school.
;)
;) The point is: take everything I've said with a grain of salt. So *I* don't think med school is necessarily the right path. That doesn't mean that it isn't. If med school is something that you really want to do, then do it! The bottom line is that there is no such thing as the "canonical path to bioinformatics".. and even if there were, there will still be infinitely many other paths.
If your true interest is bioinformatics, then I would hazard to say that medical school would be a massive waste of your time. People will hate me for saying this, but Medical school is essentially a trade school. It has very little do with science, and lots to do with aquiring piles of knowledge along with the tools and techniques to apply that knowledge. The thing is though.. its a *very* difficult and demanding trade school.
If you are serious about pursuing a scientific career, you'd be much better served by doing the Master's degree which will expose you to wonderful world of doing new research (which you will not get at med school). Until you've tried doing your own research, its really tough to understand exactly how boring/frustrating/rage inducing/exciting/euphoric/fun/rewarding it is.
Now, on the other hand, if doing bioinformatics and getting a nice fat salary is your goal, then med school might not be a waste of time. In my limited experience, MD/Ph.Ds get paid truckloads more money than straight Ph.Ds.. though the dispairity is narrowing these days.
If straight bioinformatics is your goal, I would have a tough time recommending med school just because you will devote much time and energy to something that will have minimal value to your chosen career.
>I could pick up the languages and structure of CS by myself
This is a dangerous statement. Are you sure? Computer science is *NOT* (sorry for the shouting, but this is a very sore point for me) about programming. Bioinformatics research is also not about programming. Monkeys can write programs. Serious research in bioinformatics falls into many areas, but one of the major ones is designing new algorithms. Sure, at the end of the day you have to implement the new algorithm, but thats the trivial part. The hard part is coming up with the algorithm. If you don't believe me, write up a program and submit it to the journal/conference of your choice. If all you've done is implemented someone else's algorithm, it will not be considered new work and I can almost guarantee it will be rejected outright. (Now if you can *improve* on an existing algorithm.. thats definitely publishable. But whats interesting is the improvement in the algorithm.. not a new implementation).
You could pick up the CS on your own, but it has nothing to do with programming languages. It has to do with analysis and design of algorithms, formal language and automata theory, semantics, complexity theory and so very many other things. Learning this on your own is a very tall order. Although looking back at your post... I see you are doing a CS minor. I suppose I should've read more carefully before I threw on rantmode. In any case, the text above still applies, but if you are doing a CS minor I would imagine you would *have* a lot of that background... so I'll just shut up on that topic now.
For programming, I never use Perl for anything serious. BioPerl is great for parsing files and quickly formatting things, but for any serious work it is just too slow. Take a look at the major bioinformatics software packages (BLAST, clustal, etc.)... how many of them are written in Perl? None. Not one. Several have hooks so they can be called by BioPerl, but the programs themselves are usually written in a lower-level compilable language like C.
BioPerl is wonderful for biologists who want to *use* the tools that are created by bioinformaticians, but its not always appropriate for the people creating the tools. Many bioinfo problems are very computationally intensive and every iota of performance you can squeek out is critical. Perl is a bit of slug when it comes to performance
As for actually answering your question (sorry, I tend to rant on at times), I'll tell you first what I tell my students: anyone with a decent computer science background, 24 hours and a reference manual should be able to learn a new computer language. That may be true, but its still less than helpful.. if you really want concrete recommendations: definitely learn C.. it is the king of performance and you will need it. Learning LISP, Scheme, ML or some other functional language would be smashingly useful, as some problems can be solved very elegantly using the functional paradigm (and for those that will say "functional programs are too slow!".. rubbish. Check out a modern ML compiler and then get back to me). PROLOG would also be great.
In addition to BioPerl, you may want to check out Python/BioPython. In certain cliques, Python code is considered to be more scalable/maintainable than Perl code. I won't indulge in a holy war here, but I believe both have their advantages. (Though currently BioPerl is *far* more popular).
As for what you should be doing at this level, personally I'd stop fretting about what programming language to learn. You're obviously a bright person, so picking up new languages is no big deal. No matter what language you learn today, you can count on the fact that n years from now it won't be trendy and all the buzz will be about [cool new language x]. What I'd focus on is the actual *content* of the field rather than the implementations. Read up on the basic algorithms (stuff like Smith-Waterman), take a look at genefinding (HMMs and neural nets), secondary structure prediction, and so forth. This knowledge will never go out of date.
Finally, the disclaimer: Everything I've said here is a matter of personal opinion. I've been awake for well over 24 hours at this point and still haven't had my morning coffee.. so if the sentences even parse, I'll be amazed
The only really good piece of advice I can give you is: do what will make you happy.
I hope that was moderately coherent and helpful in some way =)
I heartily agree on all points. I didn't mean to imply that bioinformatics is/should be dominated by computer science... merely that a deeper knowledge of algorithms and the theory of computation is as essential as deep biological knowledge of the problem at hand.
;)
It has been my personal experience that my best work is almost always a result of a colloboration between biologists/biochemists and mathematicians/computer scientists. Thats what attracted me to the field in the first place... the opportunity for interdisciplinary research.
As for the HMM's... no mathematician would admit to being a Markov Model guru. Far too much voodoo (by which I mean complexity, of course).
Things I was unaware of until the article's author enlightened me:
- Bioinformatics == Computational Pharmacokinetics
- Designing sophisticated algorithms requires only "familiarity with computer technologies" (I suppose being a professional astronomer requires only "familiarity with telescope technologies" too)
- Bioinformaticians need graduate training in a biological science. This one scared the heck outta me... I *thought* I was a bioinformatician, but my graduate training is in computer science. Come to think of it... the great majority of 'bioinformaticians' I've met at conferences were CS grads. I must have been tricked into attending those fake bioinformatics conferences...
- Journalists don't need to bother researching or providing pesky 'facts' in their articles anymore. Its OK to just make stuff up... right off the top of your head.
>Seriously, what's so great about MMORPGs? Do people just like throwing money away?
;) Just wanted to point out that its a nice way for people to spend time with each other without having to worry about pesky details like physical co-location. It certainly doesn't replace face-to-face time... but its better than nothing.
I'm not a big fan myself.. but in some cases MMORPGs are more than worth the money. A friend of mine has a daughter that lives in another state (messy divorce, custody, and so forth) and he only gets to see her a few times a year. While talking on the phone provides a nice communication link... there is also something to be said for spending 'recreation time' with one's loved ones. In his case, EverQuest allows him an opportunity to "do something" with his daughter that he might otherwise not have. I believe he feels this is easily worth $120/yr.
I doubt, however, that he is the typical MMORPG player
Yeah, but could you play multiplayer netmaze on several Amigas by daisy-chaining their MIDI ports together?
;) Seriously though, before Macs became (slightly) more affordable, there was a time when an ST with Cubase was a decent sequencing solution.
Oh yeah, and I think you could actually use the ST MIDI ports for MIDI too
What happened to CDC?
c .h tml
/shudder).
http://www.digitalcentury.com/encyclo/update/cd
My personal memory is that once IBM and DEC started targeting the scientific computing community in the mid 80's... CDC's days were numbered. Prior to that, CDC had been pretty much the only game in town for hard-core numerical computing (I remember briefly being subjected to an old CDC Cyber...
>So why? What was it about DEC?
;) ). I can, however, tell you why *I* am a DEC fanatic. Its based purely on sentiment.
;)
Thats a really insightful question. I wouldn't even want to hazard a guess to the general answer (being a mathematician, rather than a social psychologist
The first 'real' computer I cut my teeth on was a VAX 11/780. It was such a wonderful piece of machinary. I remember a distinct excitement present in exploring the the system... marvelling at the architecture... fighting (and often winning) with VMS
I have similar feelings for HP3000 minis running MPE, as my first job involved some system programming on these beasties. Still, there really *was* something magical about DEC and VAXen in particular (I'm sure the PDPs are nostalgia-worthy too, but they're just a little before my time).
I guess that didn't end up answering your questions at all, but it any case... I heartily agree with your comments on DEC and its lasting legacy (if only the minds of the faithful).
Spoken like a gentleman.
Amongst its innumerable other virtues, VMS running on a VAX is pretty tough to beat for security...
... of course thats mainly just 'cause VMS scared the hell of the hackers.
This hardly counts as a showdown, but, here are some statistically meaningless personal observations on my Athlon XP 1700+:
/usr/bin/time over three attempts):
I tried compiling a program I've been working on with gcc-2.96 and version 6 of icc with some cut'n'paste "heavily optimize" flags*.
(The program generates all finite semigroups of a given order, and consists completely of integer operations).
To generate all finite semigroups of order 7 took (under constant system load; result is the average of the system time reported by
~672 seconds with the gcc executable
~553 seconds with the icc executable
Its not an Earth-shattering difference, but its certainly non-trivial.
Again, please don't mistake this for a fair comparison of any sort... its simply a test of both compilers in the only domain that matters a tinker's cuss to me: Will it generate faster exectuables for the program I'm working on at the moment with little to no extra work? Extrapolate at your own risk.
* flags for gcc were:
-O3 -fomit-frame-pointer -mcpu=pentiumpro -march=pentiumpro -malign-functions=4 -funroll-loops -fexpensive-optimizations -fschedule-insns2 -finline-functions -fstrict-aliasing
flags for icc were:
-O3 -tpp6 -xK -ipo -prof_use
(I compiled previously with -prof_gen and generated a profile running semigroups of order 6).
Hey, if I could solve *any* of the problems I'm currently working on to even 90% correct, I'd be a happy man ;)
I agree dealing with some academics can be infinitely frustrating... I have to do this on a daily basis. I just wanted to make sure that people know we aren't *all* like that.
Thanks for the dialogue, and for taking the time to respond to my rantings.
>Hate to break your illusions here, but I cannot do most of this. This is the academia equivalent to "Buzzword Bingo" in the IT workplace.
I respectfully disagree, but I admit that this is *very* much a matter of opinion.
You claim you are 'considered a top quality software engineer', so I assume you are familiar with some of the items I listed (SE techniques,structured programming, commenting code).
If you did anything with concurrent or real-time systems; believe me..you'd know about the sleeping barber problem. This is not some abstract theorem thought up by ivory tower mathematicians... this is a REAL problem in resource management. Deadlock is a very bad thing in an autopilot.
On the other hand, if your area of expertise isn't real-time systems, operating systems, etc. then I agree, this isn't knowledge you need. But as educators we don't have the luxury of knowing what area of work each student will go into. In any case, being aware of such problems and how to solve them doesn't seem like a liability to me.
If you don't understand complexity, again, this is probably fine for 90% of the 'code a gui for accounts payable' work. But if you ever have to design a new algorithm...
It gets even worse if you don't have even a tenuous grasp on computability. You could spend days of your life trying to write software to do something that has been mathematically proven to be impossible. If you knew that ahead of time, you could've put reasonable restrictions on the problem to make it solveable. Instead, you probably end up with code that works most of the time, but occasionally goes into an infinite loop "for no apparent reason".
Regarding the Quicksort example... you're dead right there. Picking the first element as a pivot is plain stupid. Change textbooks. But tell me.. if complexity theory should be "thrown right out the window".. how can you turn around and talk about Quicksort vs. Bubblesort?
In the absence of people doing the deep theoretical research... you have no foundation whatsoever for making this comparison.
>The skills being taught had little or no applicability to the real world
I think this depends a great deal on: the school, the program, the profs, what your personal definition of "applicability to the real world" is.
>you display an overly arrogant attitude in defining the standards by which CS skills should be judged.
My bad. This wasn't intended as a list of 'standards by which CS skills should be judged'. It was just a flippant comment; and the list was just some examples.
The bottom line here... you have totally confused Computer SCIENCE with "writing software". Computer SCIENCE has as much to do with computers (and programming) as Astronomy does with building telescopes (apologies to Dykstra).
You refer several times to being a top quality software engineer. I don't doubt that. But that has little to do with computer science. This is probably why you were disapointed by your University experience. Its like a plumber taking a course in fluid mechanics and being disapointed that all they talked about were "these stupid Navier-Stokes equations"... and no one ever mentioned how to fit pipes.
>I also think this is typical for most people who have been in the academic world for an extensive period of time, judging from my own experience.
I think you display an overly ignorant attitude in understanding what computer science is. I also think this is typical for most people who have been in industry and for some reason insist that (Computer Science == Coding).