CS373 Week of Oct 2nd

This week we began Netflix, the most difficult and most interesting project thus far.  Piazza was a great help here, with someone posting standard deviations for ratings of movies and by users on the message board.  While our simplest algorithm based on these was faulty, we eventually achieved a RMSE of .99 through a combination of ingenuity and lucky number juggling.

Python is a sweet language.  I’m glad I am learning it.  My understanding is that Python is becoming increasingly prominent because the inefficiencies produced from programming in a higher level language are ameliorated by modern processing power.  Nonetheless, it still feels like I am cheating when I am typing so little code and so much is happening–and I am a Java programmer!

Haskell is interesting to me.  I think that the reason CS students complain about learning languages from a functional perspective is that they don’t see them in the right context.  Haskell been practically applied to develop a number of projects.  Here is a quote from the Haskell wiki:

“Haskell is increasingly being used in commercial situations.[18] Audrey Tang‘s Pugs is an implementation for the long-forthcoming Perl 6 language with an interpreter and compilers that proved useful after just a few months of its writing; similarly, GHC is often a testbed for advanced functional programming features and optimizations. Darcs is a revision control system written in Haskell, with several innovative features. Linspire GNU/Linux chose Haskell for system tools development.[19] Xmonad is a window manager for the X Window System, written entirely in Haskell.”

Before reading this, I kind of thought Haskell was a language that students are given exposure to solely because it illustrates certain concepts about programming languages or formal logic by arranging syntax in a strange way that still manages to make sense and be Turing Complete.  On the contrary, it is a practical enough paradigm to work in that it is used to develop revision control!