Sunday, August 17, 2014

Final Week

Class:
I'm sure a lot of people have already complained about this but I might as well throw in my two cents as well. The exam was a massacre. I had studied the SQL queries, the python equivalents, XML, Java Refactoring, and the likes... But when it came time for the exam, the unthinkable happened. The entire exam was in Python and had nothing to do with the SQL queries, XML, exercises or even the quizzes that we had in class. I won't go into detail about what was on the exam but as I said it was a massacre. For some strange reason, and I'm not alone when I say this, I felt misled. I'm not sure why the exam was set up the way it was. It seemed largely unfair compared to the first test. Some part of me feels that the professor had set up the exam this way because the average for the first exam may have been too high. My assumption is that by making the second exam excessively difficult, the professor will exercise his right to curve. I guess he will curve the second exam up to make the average of the two test averages lie in the 70-75 range.

Overall Final Words:
I believe this class should be required for all CS students. I am actually very shocked that this class is not currently required. I have learned more from this class about life after college as a software developer than from any other class. In fact, if test driven development would have been stressed earlier in my academic career I feel as though many of my other classes would have been made much easier. I would highly recommend this class to any CS students that are serious about becoming better programmers and especially for those looking to get a job. Finally a word of advice to the professor. While the SQL queries and XML are important aspects of software development I feel that the last few weeks would have been more helpful to students if you had spent more time on the refactoring and the design patterns. I think the presentations from the guest speakers are helpful but the speakers should be required to have powerpoint presentations to stay on track. Finally a special thanks for everything that you do to ensure our success. It is evident that you are dedicated to your students' success and we appreciate it. Thank you.

Sunday, August 10, 2014

Week 9

Class:
Once again this was a rather short week. We had a guest speaker from Indeed.com on Wednesday. For those of you who don't know Indeed is a job listing aggregator and search site. Our speaker was a software engineer and had come in to talk in particular about various tools and processes used in development. Early into the presentation however the presentation seemed to turn more into a question answer session in which we asked the speaker various questions about developing the in the real world and he answered them to the best of his ability. Although the presentation was quite informative I strongly feel the speaker would have benefited by creating a powerpoint presentation ahead of time. This would have helped him organize his thoughts and stay on topic as there were several occasions where we digressed.

The week started off by going over some code written in java in which we abstracted a video rental store application that calculated the rental charges of a given video. Through each iteration of code we refactored and modified the general architecture of the code and explored the consequences of our decisions. This helped to show how a little bit of pre-thought can help make the code cleaner and run faster. We finished off the week by revisiting the final iteration of the video store and also covering some popular design pattens like factor method, singleton, etc... I do however feel that we should have had the guest speaker come in on a Friday as I feel a lot of people had a hard time remembering the examples from Monday.

Project:
The final phase of the project was not as difficult as I had expected. The only real major addition to our site was the search function. Our partner Kevin came up with a brilliant solution in which we used Beautiful Soup (html parser) as the text that we would search in order to determine our results. For a small dataset this is feasible but we feel in the future we will definitely have to revisit our search function. Given that our final exam is coming up we all elected to not push the bar and implement user logins. The end goal is to do better on our exams instead.

Sunday, August 3, 2014

Week 8

Class:
This was rather a short week. Class was cancelled as the professor had to take care of some official UT business on Friday. We also had a guest speaker on Wednesday. The guest speaker was from a local austin company that makes software for mobile devices for various clients. The topic of the lecture was about responding to change in the world of software development. Imagine that you have written thousands of lines of code that uses a specific underlying content service provided by a third party and then all of a sudden the company that provides that services goes out of business. As a result the service is no longer supported. Although other companies quickly move in to replace that service, your code is now broken. This catastrophe can be made much more manageable by using the SOLID principles discussed in class. Such was the case when Google decided to discontinue their RSS feed reader. Companies that had written code using the SOLID principles were able to quickly interchange small portions of code that connected their software to one of the many new services after choosing an alternate service provider and the rest of the pieces worked as they should with minimal to no changes at all. Other companies had to start from scratch.

Project:
The final phase of the project is a bit more involving. One of the biggest challenges is having to critique another groups website. The problem arrises when we have to critique something that is changing frequently and heavily. The group we were tasked with critiquing decided to modify their API drastically after we had already coded up many test cases for their API. Another problem we faced early on was that Django 1.6 doesn't allow us to change our model without forcing us to dump all of our data. I spent an entire day early on trying to upgrade our website to Django 1.7 to prevent this problem but pythonanywhere kept giving me lots of issues. After loosing a day we decided to stay on 1.6 and cut our losses.
Being ambitious, we are looking to launch our site publicly soon and seek to allow the general public to submit reviews. This means we have to really hustle and put together the entire underlying architecture that will be able to support multiple users logging into our site to leave comments, ratings, and reviews for dishes.