Week 5
Welcome to Week 5 of the CS 373 Blog.
1. What did you do this past week?
This week was mainly focused on getting the Netflix project completed. The project was fairly straightforward, but we did hit a few snags along the way. Coming up with the logic for making a correct prediction was not as easy of a process as we thought it would be, but we eventually figured out a decent soultion to get our RMSE below one. Our biggest issue was having an efficient way to do the lookup of the actual ratings. We initially had the idea to use one of the provided caches, which would give us the lookup in constant time once we had the initial overhead of reading the cache. Unfortunately this method had significant space complexity since all the ratings would be stored in memory, and since there was such a large amount of data, we ended up having about 6GB of memory usage when running the application. This was OK, but ended up giving us an issue with Travis. Our eventual solution was to use this approach on the local machine, but on Travis we would look up the rating from disk on demand. This ended up being an alright solution, except we forgot to add a critical if statement to load the cache on the CS machine. Instead, our implementation would do the lookup, which ended up being very slow. This issue caused us to have to resubmit with a late penalty.
2. What’s in your way?
The next big task for the course will be to prepare for the first exam. This seems like it will be very comprehensive. The fact that it will be on canvas is quite intimidating as well. Some of Canvas's constraints, such as the inability to go back on a question, or the inability to annotate code with pencil, will be very different from tests that I am used to.
3. What will you do next week?
I'll take steps to start preparing for the midterm. This will mostly be reviewing the quizzes and code examples.
4. Experiences
Not too much new stuff to report here!
5. Tip of the week
This is probably something that most Python programmers are aware of but don't always make good use of. The python interpreter was something that I found very useful for testing small bits of code in a sort of sandbox to learn how they worked before integrating them with a project.
Written on February 21, 2016