First, the free online Coursera course Computing for Data Analysis just started. The 4 week course is being taught by Roger Peng, associate professor of biostatistics at Johns Hopkins, and blogger at Simply Statistics. From the course description:
This course is about learning the fundamental computing skills necessary for effective data analysis. You will learn to program in R and to use R for reading data, writing functions, making informative graphs, and applying modern statistical methods.Here's a short video about the course from the instructor:
Next, for quickly learning Python, there's the Python track on Codeacademy. Codeacademy takes an interactive approach to teaching coding. The interface gives you some basic instruction and prompts you to enter short code snippets to accomplish a task. Codeacademy makes learning to code fun by giving you short projects to complete (e.g. a tip calculator), and rewarding you with badges for your accomplishments, which allow you to "compete" with friends.
Once you've learned some basic skills, you really only get better with practice and problem solving. Project Euler has been around for some time, and you can find many solutions out there on the web using many different languages, but the problems are more purely mathematical in nature. For short problems perhaps more relevant, head over to Rosalind.info for some bioinformatics programming challenges ranging from something as simple as counting nucleotides or computing GC content, to something more difficult, such as genome assembly.
Coursera: Computing for Data Analysis
Codeacademy Python Track
Rosalind.info bioinformatics programming challenges
I'd like to point out that udacity.com has several useful courses on python. It has a course cs101 on Python which is probably to basic for most of the audience of this block, but cs212 is a lot tougher. Then there are advanced courses on how to do artificial intelligence, statistics and differential equations in Python.
ReplyDeleteThese offerings are especially interesting for people who would like to get deeper into computer science without having access to university level computer science classes. While the courses are very accessible, even to high school students, they still provide a solid grounding in theory and practical exercises.