During the course of the semester, we'll be making use of various software systems. The primary one that you'll need to get familiar with is Lucene, an open source free-text indexing system. I don't really have a preference with respect to programming language. The main Lucene project is java-based, but there are several versions in other languages (python, ruby, etc.). Some of these are native reimplementations, others like pylucene are wrappers. Your mileage may vary with these.