Saturday, April 10, 2010

What I am studying these days

So this one's about some key stuff that I am studying these days. I think I will maybe try to write some short posts summarizing some very specific stuff. I plan to write very brief summary of topics in these things (statistics, machine learning, multi-threaded programming, algorithms), as you have better sources than me to learn them. More importantly, I would like to write my experiences and things that occurred to me during my study.

I have been studying the following stuff lately :

  • Statistics : My aim is to gain a good solid understanding of machine learning (aka statistical inference). I am educating myself these days in the basics of statistics (and probability, I plan to write something soon in next posts on this). More importantly, I am trying to practice the problems and get a good intuitive feeling. I guess its pointless to go for advanced statistical methods and models, unless you have a good grounding in the basics. I am reading from the awesome book named Statistics, by Freedman, Pisani and Purves. This book doesn't have a lot of equations and that kind of stuff but its an awesome book in that it teaches you to think like a good statistician. Lots of case studies, interesting problems and nice cartoons :)

  • Concurrent Programming : using Java, that is. Now, I have read a lot of stuff how Java is not so good for it, but I still think that Java has one of the best support for concurrent programming. I am studying from two books : Java Concurrency in Practice (Doug Lea, Josh Bloch et al) and The Art of Multiprocessor Programming (Herlihy, Shavit). JCIP is a book that builds upon the framework supplied by Java while TAOMP also goes into the very core of how this framework is built (how these building blocks and synchronization primitives are built themselves, the algorithms and data structures). I try to code both examples showing the correct way and those showing flawed methods, and see the truth for myself. It really helps to clear things up, and build a good understanding. I am trying to get as good as I can as the future is going to be based on multi-core and not many programmers understand it enough to develop good multi-threaded software.

  • Algorithms : Well, this one's the usual thing but you need to keep revising, practicing and learning new ones. It always helps to be good at algorithms. Sometimes, you can suddenly recognize a situation that is perfectly fine to apply certain algorithm, if you keep in touch with algorithms. It feels really satisfying when you can solve something like that, and also inspires your co-workers to do some of their own study. Spread the word !


That's it for now. I hope to come back soon and write about some interesting cool stuff.

No comments: