Monthly Archives: October 2011

CS373 Week of 10/16

This week, we began the World Crisis Project.  I’m a little frightened, since we are using many technologies I am not experienced with.  On the bright side, this should be quite a learning experience, though very much by the seat of my pants.  The Google App Engine is really cool–I didn’t really know anything about it until we started this project, but I am continually impressed with Google’s ability to put out practical, profitable services that serve the developer community.

We are continuing to learn about Python’s idiosyncrasies.  I have to pick my battles when deciding which ones to try to understand and which ones to take for granted as being wise decisions.  For instance:

x = 257
y = 257
assert x is y
x = 257
y = 257 + 0
assert x is not y
assert x == y
This is very foreign to me, the idea that values from -5 to 256 are cached by Python due to frequent use, but is fairly easy to understand.
Today I listened to a podcast with Guido Van Rossum, creator of Python.  Like most important figures in the world of Computer Science, he is quite the noble benefactor.    It was an interesting interview that I highly recommend:
http://twit.tv/show/floss-weekly/11

CS373 Week of 10/9/11

Python began to show its teeth this week.  I like that we are being exposed to all these neat little ways to make typing code more efficient.  What I’m curious about is when Python succinctness begins to push the boundaries of readability.  Industry code is scrutinized by so many sets of eyes, it seems to me justified to sometimes sacrifice conciseness for effective communication.

Maybe I’m the only one wondering this because Python has been destroying my quiz average with its confusing, typeless syntax and my lack of practicing with it in the interactive environment.  I strongly recommend doing that to anyone who hasn’t already resigned themselves to subtracting their entire potential quiz percentage from their projected final grade.  With the addition of UML to the quizzes, I have not been doing so hot.

I’m pretty stoked about the next project.  I love working in teams, assuming everyone pulls their weight.  As far as I can tell, most people who have made it this far as CS majors are reliable enough.

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!