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.

Sunday, July 27, 2014

Week 7

Class:
Onto a new week. This week marked an important shift in the course. The focus of the course has now shifted towards databases. More specifically SQL and XML/JSON representations of the data stored in these SQL databases. This doesn't exactly mean that we are not going to be looking at python anymore though. In fact earlier this week we worked on converting a select and project statement into python code. I guess this is the professors way of making us understand exactly what the SQL statements are doing. On a harsher note I received my Test 1 grade and it was much worse than I expected. I was expecting a high B especially since I had studied much harder for this exam over the other one (Generic programming). It has however been such a tiring and event packed week that I have not had any time to go talk to the grader and see what mistakes I (or hopefully he) has made. This will likely happen tomorrow during his office hours.

Project:
Phase two of the project was completed in one week this time since everyone was focusing on the exam for the first week. This phase of the project was really tough as I seemed to be a little lost. It seemed like everyone had gotten a hold of one or two particular aspects of the project that they had locked down and owned as their responsibility. I on the other hand (given a limited time schedule due to the Deque Project) kept bouncing from one team mate to the other trying to make myself as useful as possible. I kept asking "what do you need me to do?" and then did my best to own up to the task assigned. With all that said, Im hoping on this next and final phase I will have more opportunities to contribute since I was able to get pretty familiar with unit testing the Apiary API. It should also help that the professor has given us adequate time (two weeks) to get the final phase complete and the final exam won't be until the week after.

Sunday, July 20, 2014

Week 6

Class:
So now we are on the other side of the exam and boy what an exam that was. There was nothing out of the ordinary. I didn't see anything that wasn't expected. In fact I was somewhat surprised at the difficulty (which wasn't so bad) but I would like to attribute that to myself being adequately prepared. I really liked the new exam format the professor set up. The entire exam was like a giant test suite in which we would have to write the functions along with test cases for our solution. I really liked this set up for several reasons. First of all it didn't require us to know the painfully small details that the previous exam format demanded of us. No more multiple choice requiring us to know what the output would be with the annoying answer choice "does not compile" to make us second guess. The next reason I liked this test was because even if you were dead lost on how to code the solution, you still had the opportunity to write test cases for it and gain some easy points. Finally, this exam was better because it, like other aspects of the class, prepared you for the real world. If you walked out of this exam earning the majority of the points simply from writing test cases, then there is a good indication that you should pursue a Software Development Engineer in Test position (SDET) position rather than just a software development engineer position.

Project:
We were contacted earlier in the week by the grader for IDB1 (Tyler) who informed us that we lost 10 points because our site was down. This was hard to believe because none of us had touched any of the code since the Thursday night turnin and because it was all working fine up until Monday of this past week. The error seems to have been generated from within pythonanywhere as we had seen the site be fairly buggy from the start. We pulled our code using the same SHA that we had used to submit and replicated the site at a new address (also on pythonanywhere) and it miraculously worked... with no changes whatsoever... We explained ourselves to the TA and luckily got back all our lost points. Lets just hope whatever this bug was doesn't show itself again.

Sunday, July 13, 2014

Week 5

Class:
Once again we were faced with a short week as there was no class this past Friday due to final exams for first session classes. I am really thrilled to see that the material is finally shifting towards making classes. Im not sure how much the professor is going to stress object oriented programming principles and paradigms but seeing classes show up in the example slides is definitely refreshing. I feel like this will be very useful for our projects. Again the material is becoming trickier to remember as Python blurs the lines between where a function begins and where it ends... From what I understand functions are declared in the heap so that they retain some form of life even when the execution path leaves the function and similarly some functions can access data from the calling function which is odd behavior but definitely useful. Its finally test week so the professor has uploaded some useful information on how to prepare for the test which is a huge relief. We have also been told that the exam will involve strictly writing code. Good luck to everyone and see you on the other end!

Project:
Phase one of the project was fun. I'm super lucky to have found a very talented group of individuals. Since the idea that was chosen was my own, I was very pleased to see the result of the end of phase one. While the future of this project will definitely be beyond the scope of this class, I hope the rest of this project helps us create the solid ground work that will allow us to make this project generate some real cash and actually be a useful site for Austinites looking for a bite to eat. I went out this past weekend and secured a domain name for the future completed site to be housed at and Im going to suggest to my group this week that we officially go forth with the name kravester for our project. I believe the hardest part of this past week was juggling the project for this class with the Big Integer project for the STL class but more about that on the other blog...

Sunday, July 6, 2014

Week 4

Class:
We are now a good ways into the course and spent this past week working on function defaults. More specifically we learned how functions determine the values of their variables and the several ways in which we can specify those variables from the function call. This week was a little bit easier to follow in my opinion and I didn't have too hard of a time keeping up. I must say that it definitely helps to try and answer other peoples posts on piazza. This week a student posted a question and although I thought I knew the answer at first, I spent some time playing with python and trying different inputs to solidify my understanding of the material we learned this week while writing my response. Check out post 171 on piazza for a quick summary of some of the things we learned this week about unpacking and specifying function calls.

Project:
This project is extremely intimidating. I spent some time last year working on a dynamic website by following tutorials from www.lynda.com. It was a really cool experience but it was EXTREMELY time consuming. The main reason for that is a) I had no prior experience with any aspect of web development. b) I didn't know frameworks like django and bootstrap can make my life easier. But as a fortunate consequence, I learned how to read HTML, JavaScript, and some CSS (which I loathe). I also learned about MySQL and PHP. Most importantly I had learned how all of the above comes together to create a dynamic website. The challenging part about this project is that if you don't know much about any of the above, it can all really go over your head. I am really glad that the professor has grouped us together in hopes that we all learn something from each other but if you end up in a group that isn't very diverse in terms of skill sets, be prepared because there is likely a HUGE learning curve ahead. Our first week was off to a great start as we have a pretty solid, diverse, and experienced team. I can't wait to see all of the teams' end results.

Good Luck to all the teams :)