Looking for Books/Websites that can teach me computer programming.

I actually have a degree in computational biology as well as CS.

With that as a context, especially since your experience extends back to your teenage years, it is odd for you to ask such a general question in your post. What does your existing expertise consist of that you find inadequate? I mean someone with a CS and computational biology degree should in all likelihood have a better idea and experience than the average code monkey of what tools and techniques would to be effective in the addressing relevant problem sets. I'm not trying to rag on you for asking questions here - just saying that you could have framed your inquiry more clearly so we aren't given the impression you're completely new and in need of basic guidance.

I will offer some personal and admittedly subjective thoughts on things you might want to pursue, so here goes my very humble 2 cents on the subject.

In your CS/computational biology course work, were you able to develop proficiency in any languages? If you are trying to pick up a new one, my personal feeling is that Java should be avoided. There is nothing wrong with Java as there are very good reasons why it is a language of choice for "intro to programming" classes at universities the world over. But its strengths do not lend itself to applications, especially in scientific computing, where speed and efficiency are a priority over, say for example, portability. C/C++ has never lost its usefulness in this niche despite its venerable heritage.

Some would even argue for good reason that Fortran is still relevant. Detractors would respond that LAPACK and other such tools gives you the same benefits and features that made Fortran powerful without having to actually learn a "dinosaur" which lacks a lot of the really nice features of more modern languages.

As of late, Python appears to be enjoying growing popularity as a light-weight tool for biologists. This makes sense because, for all its power, not everyone needs the "bare metal", low-level control and complexity of C/C++.

But if that sort of thing appeals to you, you can embrace it as I am trying to do.

You can perform truly huge scale calculations on whatever data for just a few bucks.......In the genetics field we're actually at the point where we have too much data and not enough quality analysis.

I'm not sure how many are aware how much computational power is actually available in commodity hardware these days. Pretty much all CPUs currently on the market are multi-core/multi-threading/hyper-threading capable. But you rarely encounter much attempt in general programming classes that makes a good faith effort to expose coders to these features. I could be wrong/outdated, as I realize it takes time for things to percolate and topics that such may now be covered in higher level classes. But even therein, some things are really new and not quite settled enough for a pedagogical treatment to be established. The emergence of general purpose GPU computing is already putting the insane number of computational units in your graphics chips to use solving equations and crunching numbers rather than drawing monsters in game engines. Yes, there are high level technical books on the subject. I'm familiar with this topic because I'm currently taking a class in parallel computing with the hope that I can eventually do things like this:

https://engineering.purdue.edu/~milind/docs/sc14.pdf

I have been keeping my eyes open for tidbits of news relating to developments in parallel/distributed computing. So it was somewhat exciting to learn about GCHQ's "Bramble" Raspberry pi - based HPC cluster. Based on the gist of what you wrote, I have a feeling this is the sort of thing that appeals to you as well. If you are interested in parallel computing in this vein, I'd be happy to take take this discussion further. Let me know if anything I've mentioned so far intrigues you.

/r/computing Thread Parent