Sunday, December 7, 2014

Week 14

This past week was very intense aside from it having been the last week for our object oriented class. I one more 'last midterm' and I interviewed in Seattle from Tuesday to Thursday, which by the way did not go as good as I had planned. The midterm for our class was tough, I found it very challenging but thankfully so did the rest of the class. There were two questions that had to do with implementing singletons that only changed by one word and put together they were worth a considerable chunk of points, I found that curious. We will see how it goes when they give the grade cutoffs.

I found the class incredibly interesting and I think that I can safely say that it is one of the classes in which I have learned the most throughout my undergraduate career at UT CS. I think that the way prof. Downing teaches it also is very well complemented with it because you definitely have to stay on top of the material otherwise you will not do good neither on the test nor in the projects... nor will you be able to answer correctly in class and you will be humiliated for life. I would definitely recommend this course, especially since I realized that the material I used to prepare for my interviews this semester is exactly what we learned in the class so it is extremely relevant to what they are looking for out there and I am thankful for that.

Sunday, November 23, 2014

Week 13

This week has been pretty eventful. I successfully submitted my last undergraduate programming assignment! It was "Life." The assignment, much like Darwin, the previous one, consisted of a board. However, in this assignment each cell had an object (in Darwin there could be empty cells, which meant null values). Some values could hold a status of 'dead' and others were 'alive' but the whole board had some type of cell in each position. Looking back, I think that implementing AbstractCell, FredkinCell, and ConwayCell was relatively easy, you just had to have a good grasp about inheritance and virtual functions in C++. It was really interesting. Implementing the Life class got a little more complicated but I actually thought that the meat of the project was implementing the Cell class, which acted as a Handle class. From what I got, the objective of a Handle Class is to separate the abstraction from the implementation and provide a smooth transition between different types (in this case, when it is appropriate to do so, the Cell class switches a FredkinCell to a ConwayCell).

As far as class goes, we have one more day of class (tomorrow) and then comes the final week, which means last-midterm week. I am relatively nervous because I did not do as well as I had hoped in the first midterm so I will definitely change my studying method for this one so that I can get a better grade. That week I will also be interviewing in Seattle so it will be kind of tough to balance but such is life!

Sunday, November 16, 2014

Week 12

This week we started discussing the last programming project, which will be called Life. The assignment, much like Darwin, the previous one, consists of a board, which now will contain a cell in all the positions with a state of either dead or alive, and we have to simulate however many turns based on the rules of the game. However, the project is a little more complicated than what I described so even prof. Downing hasn't fully explained it yet. We are still missing a formal explanation for what one of the classes' behavior should look like. My partner and I got started during the weekend, we are relying on a couple of the concepts that were used in the Darwin assignment, such as a 2d array for the table. We are populating the board and updating the number of neighbors of each element so it's looking good in its early stages.

In class we started discussing heavily the concept of inheritance and, as we have been doing during the whole semester, its differences and similarities in Java and C++. We learned about friend functions, which seemed a little confusing to me at first but I have been getting it more and more as the days have gone by. It is basically a way for a non-member function to access the private and/or protected member of a class if it is declared a friend of that class. I also learned how to use virtual functions in C++ this week which is basically overriding functions in C++ (Giving different different implementations to the same function signature depending on the class from which it is called).

Monday, November 10, 2014

Week 11

This past week was pretty hectic for me. The "Darwin" project was due on Thursday, I had a Computer Networks project due on Friday, and I was interviewing in Chicago from Tuesday to Wednesday and in San Francisco from Thursday to Friday. However, I was able to complete all the activities more or less successfully. For Darwin, thankfully, my partner and I completed a considerable chunk before I left on Tuesday for Chicago. We just had to implement infecting and creating the best creature. I came back to Austin on Wednesday night and we met for about 6 hours, which allowed us to finish the project, create the tests, and do the rest of the Github protocol. I found the project just a tad less difficult than what I had imagined. I guess when you first hear about it, it seems a little overwhelming. It was interesting learning how to declare and use 2d arrays in C++, which wasn't intuitive at all. The computer networks project I finished the night before my interview in San Francisco.

As for the interviews I am extremely happy because I got my first offer from the company in Chicago, they do financial/investment research and the position they offered my is a rotational program in the development part. So I assume I will be exposed to development, testing, big data, among others. I think I did very well in the San Francisco interview but I haven't heard back from them, we will see what happens!

Sunday, November 2, 2014

Week 10

This past week we finally got to the next project, which is called "Darwin". It was released on Wednesday, which, compared to usual, gives us a little less time to work on it so it is definitely an added challenge. It is going to be especially challenging for me because this coming week I am going to be interviewing with two companies, one in Chicago and the other one in San Francisco and that is going to take approximately three days out of my week. Thankfully my partner and I already came up with a schedule of what days we will be working on the project (most of the times we will work on it together, but this will require a couple of times where we work separately and do the catch up when we meet again) and started working on Darwin early and we already got a head start. We started implementing the classes but we do have some doubts regarding the avoiding the getters and setters. It seems like that is the heart of this project, the coming up with a design that is good enough so that it doesn't need to rely on getters and setters, which, apparently, are always a sign of bad design. We will see how the project develops throughout the rest of the week.

Material-wise we finished off talking about the (priority) queue and stack data structures and started discussing class variables, and the similarities and differences between Java and C++ of these two.

Tuesday, October 28, 2014

Week 9

This past week our Allocator project was due. I am very satisfied with the way my partner and I delivered it. We finished our solution relatively fast and got an efficient, well-performing memory allocator. I think it is definitely amongst the sexiest projects I have done in UT C S. And, like the rest of prof. Downing's projects, what took longer than expected was the "secondary" requirements, a.k.a. creating the issues in Github, closing them with each commit you make, getting the unit tests to work and testing most of the corner cases! This one definitely took longer than expected. But altogether I think it is for sure a project worth bringing up during an interview. Prof. Downing has not posted the next project yet but I am excited for it and, as mentioned before, I will definitely be using a partner given the rough time I had with the first project given I didn't do pair programming.

I could not come to class on Friday but from what I can see and have heard we are starting to discuss to major data structures: Stacks and Queues (as well as Priority Queues, which I have always liked more than regular queues). I still remember the first time I was exposed to these Data Structures in my C S 314 class. I think they are fun to implement, especially the Priority Queue given that it has an added element of 'difficulty' which is the constant checking of priority level to determine whether an element should go in front of the next one or not.

Sunday, October 19, 2014

Week 8

This past week we had two major things happening. One was the release of the new project, called "Allocator," which is due this coming Thursday and we also had Twitter come to class as a guest speaker. Unfortunately I could not come to class on Friday so I did not hear what they had to say but I am sure it was awesome. We also received our grades back for the test, which in my case were a bit disappointing. I am very certain that, among other questions, I missed the first one, which was implementing the pre increment and post increment functions without using the ++. I already discussed with my study group that we need to improve the way we study for the second test but it's definitely tricky to study for this type of test.

For the project "Allocator" prof. Downing walked us on Monday through the behavioral structure of it. I remembered much of it from my CS 429 Computer Architecture course where they went in depth to explain how a memory allocator chooses which blocks to give out what it does with them when it gets them back. So the theory I understand pretty well. My partner and I are in the process of starting to implement it. I think that one of the key aspects of the memory allocator is the fact that when it gets back small blocks it needs to merge them to always keep large blocks free. We will see how this project turns out.