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).
Sunday, November 16, 2014
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!
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.
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.
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.
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.
Sunday, October 12, 2014
Week 7
This week was "first midterm week." The test threw me off a bit because I was expecting a very similar format to what prof. Downing's S E class's tests. But for this test we had no multiple choice. It was all code and, what was a bit weird for me, writing tests of our code. One of the questions that I am kind of mad at myself because I know I should have known it better than I did during the test was the one about writing the overridden pre increment and post increment functions without making use of the '++'. I just remembered that post increment has to make a copy and it stores before incrementing the variable. Pre increment, increments and then stores. But still, I think I didn't do as hot in that question as I would have liked. We will see how I did on the rest of the test, I'm kind of nervous for getting back my grade.
Other than that, project 3 has been posted already. It is called allocator but Prof. Downing hasn't gotten a chance yet to explain it (probably on Monday). I definitely learned my lesson and I will be working on it with a partner (given that I did last one by myself). Doing pair programming really is much safer and efficient than working by yourself. So far I have enjoyed the class very much. There are so many principles of object oriented programming that you need to put in practice in order to fully understand them. I think this is a great class for that.
Other than that, project 3 has been posted already. It is called allocator but Prof. Downing hasn't gotten a chance yet to explain it (probably on Monday). I definitely learned my lesson and I will be working on it with a partner (given that I did last one by myself). Doing pair programming really is much safer and efficient than working by yourself. So far I have enjoyed the class very much. There are so many principles of object oriented programming that you need to put in practice in order to fully understand them. I think this is a great class for that.
Sunday, October 5, 2014
Week 6
This past week has consisted in a lot of preparing for the test. For example, Prof. Downing gave us a hint: We need to know how to implement any function, such as Fill, Count, Reverse, etc. that takes in three parameters, two of which represent a pointer to the first element of each array, and one of which represents the size. These, among other examples, have been what this week has been about. Preparing for a Downing test, as I have mentioned before, is not easy and very different from the way you prepare for other tests. There is little or no concepts you memorize, you just need to know how to implement stuff. You need to know how to make software on the spot with a time limit, and this, my friend, is not easy.
On the other hand, Prof. Downing has been very generous and given us an extra credit opportunity, which consists in solving another problem from the UVa online judge repertoire. This one is called "A Node Too Far." I already took prof. Downing's Software Engineering course and there we weren't given a programming exercise as extra credit. I can only imagine that this is because Python is a much more simple and user friendly language than C++ (mainly because of the absence of memory allocation) but it also leads me to think that in his Object Oriented Programming course, students tend to need more extra credit at the end of the course and therefore the extra credit programming exercise. Who knows, I'm definitely doing it though!
On the other hand, Prof. Downing has been very generous and given us an extra credit opportunity, which consists in solving another problem from the UVa online judge repertoire. This one is called "A Node Too Far." I already took prof. Downing's Software Engineering course and there we weren't given a programming exercise as extra credit. I can only imagine that this is because Python is a much more simple and user friendly language than C++ (mainly because of the absence of memory allocation) but it also leads me to think that in his Object Oriented Programming course, students tend to need more extra credit at the end of the course and therefore the extra credit programming exercise. Who knows, I'm definitely doing it though!
Subscribe to:
Posts (Atom)