Monday, October 31, 2011

Week 9

          This week we covered global, class, and instance variables, constructors and destructors, and static and non-static methods in python and java, which were more straightforward than some of the topics covered in the material on the second exam. I know that many people in the class feel that lectures should cover topics like refactoring more than the semantics of the languages, but either way, I feel as though a day has not gone by in class without me learning something new about the languages. Even though CS307 and CS315 were very programming oriented as well, they were not nearly as detailed.
          On Friday we also had to read the first 5 chapters in Refactoring. Unlike some of the other readings we have done this semester, I felt like this one was very long and tedious. Most of the information presented seemed repetitive and, in some cases, common knowledge.

Sunday, October 23, 2011

The Second Midterm and World Crises Project

             On Friday we took the second midterm for the course and I thought the programming questions were quite a bit more difficult than the ones on the first exam. While the reading questions were my main weakness on the first exam, I thought the reading questions, the few there were, were pretty simple this time around. Unfortunately, knowing that I had a hard time with the reading questions last time made me study the readings that much more this time. I reread all of the papers and the Database Design website and filled up half of my cheat sheet with important points for each, but did not use this whatsoever on the exam. I thought the programming questions on the first exam were very straightforward and simple for the most part, but the ones on the second exam took much more critical thinking and I felt much more unprepared for them.Overall, I wasn't expecting the level of difficulty on the programming problems that I had faced.
               This week we also finished up the first part of the World Crises project. This is the first project I've ever worked on with more than three people. It was definitely a different experience from any other group project I've ever worked on. It was hard keeping track of what everyone else was working on since the scope of the project was so large and to be honest I felt a lot more unsure about the details of what everyone was doing. Usually when working on group projects I would have some hand in everything that was done, but this time we split up the work between everyone so my main focus was the front end. I worked mostly on the static html pages which was quite enjoyable since I had worked with html before. 


           

Sunday, October 16, 2011

Preparing for the Second Midterm

           This week we're preparing for our second midterm exam. This one seems like it will take longer to study for because of all the subtleties between the languages, especially Python. Plus it will be very important to memorize the numerous terms in the sql readings.
           One of the things we talked about this week was the caching that each of the languages implements. It's very interesting to see how the designers decided to implement their language. To be honest, Java's implementation makes more sense to me than Python. For example, the Java int cache goes from -128 to 127 while the Python cache strangely goes from -6 to 256. The more I learn about Python, the more I think that the language is too flexible, if there exists such a thing. All of the different ways to represent a string seem to only make the language more confusing and prone to error.

Sunday, October 9, 2011

Week 6

           Recently, I've been having some difficulty with the reading questions on the quizzes. I also found this the most difficult portion on the exam, and I'm not sure what the best strategy is to do well on these questions. While reading the assigned papers or books I try to identity potential questions that could be asked over the readings, but the questions are often more specific than I'm expecting. It seems far too difficult to memorize every detail in the papers and very easy to overlook some things, so I'm at a lost for how to study for these portions of the quizzes and exams.
           The coding examples seem to be getting more difficult to understand and the more unfamiliar as we go, specifically, the python examples. Needless to say, it will take a little more studying to fully grasp everything that can be done in python. Python is definitely a flexible language, but it also makes me question whether some of the flexibility improves the language or makes it more confusing and prone to error. For example, python allows you specify parameters in a function call in almost any order if you specify the name of the parameter you are assigning. An example on the class webpage is f(2, z = 4, y = 3). This can lead to problems though if the method header is changed. Then, the function calls may need to be changed as well. For this reason, I don't see how specifying the parameters in an arbitrary order can be that much more beneficial that putting them in a set order. Perhaps I am so used to java that I don't see some of the benefits of such flexibility.

Sunday, October 2, 2011

Netflix

          This week my partner and I started working on the Netflix project which has been the most difficult project thus far. The scope of this program is the largest I've ever had to manage, considering how much input there is to handle (~2GB). My partner had this great idea to compare each user to every other user and calculate the RMSE between them. Then, we would find which pair was most similar in their ratings and predict that subsequent ratings would continue to be similar. Unfortunately, creating the cache for this implementation is proving to be a project of its own because there are so many comparisons to make and so much data to keep track of. I think that this method would be able to produce a more accurate rating prediction, but it might be a struggle to implement.
          In class, we discussed different types of loops, operators, and assignments. Studying all of the different ways it is possible to achieve the same result has shown me that there is so much to learn about a language. I have been writing code in java for over 4 years, but it has made me realize that there is so much about the language that I never knew, not just about what's going on underneath but also about syntax. For example, I never knew you could index an array on-the-fly, even though this seems like a pretty useless function...