Friday, April 3, 2015

Week 12: Last Impressions: Look Back Over the Course, Conceptual Hurdles, and Course Events

           Today was our last lecture of the semester. As we walked into lecture, we were asked to fill out a survey on our opinions on the various aspects of slog writing. Some of the questions on the survey were the following: Did we enjoy writing our slog? Did it help improve our writing skills? Did we benefit in terms of understanding course content by writing the slog? Although slogs were kind of annoying to write sometimes, it would be hard-pressing to not find someone who didn’t benefit from the slog experience. Slogs held me accountable for reviewing what we learned in the week prior so that I would have something to write about. It also kept my writing skills somewhat sharp, because if it wasn’t for this, then I would have gone my whole 1st year without having had a single writing assignment. I also have a feeling that the instructor was implying something rather bold to the entire class when he assigned our first entry to be on “why geeks should write”. Because I wrote the slog, I can now look back at what we did this semester!
           The first phase of this course was on abstract data types and object-oriented programming. Honestly, these concepts were not that hard to grasp. My group from assignment 1 had a bit of a trouble applying the concepts of OOP into the assignment at first but we reacted to our hardship by keeping with the basics, like paying attention in class, reviewing class notes, and thinking about how the instructor came to the conclusions about his in-lecture examples. The end result was that we received a very satisfactory mark on the assignment and also satisfactory marks on our first tests.
           The content after the first test could have been a steeper learning curve but I now appreciate the instructor’s intent to ease us into recursion. We were first asked to trace recursion, which was easy to find outputs for as long as you were vigilant with reading the code. However, looking at the bigger picture now that we are at the end of the semester, I realize that the purpose of the exercises was to introduce us to the mechanics of recursive thinking. I addressed this issue and how I reacted to that in my previous slog. It was first very awkward shifting from using iterative loops until that point to not being able to use them at all. The point is, I got over my difficulties by practicing a lot and Binary Trees were just variants of Trees that I had no problem handling once I got over my “fear” of recursion and trees. Once our class finished covering Trees and Binary Trees, we went onto linked lists.
A major course, and school, event occurred around that time, for what amounted to be a month-long strike by the TAs in the university. Although I did fairly okay (not as well as on my first test), I believe I lacked the TAs help that I would have liked, such as asking clarifying questions about linked lists in the lab that we did not have, and going to the help centre about assignment 2. Since we did not have TAs to mark our assignments, we now have no idea how we did in assignment 2 going into the exam period (although we did get our second test back in a relatively timely fashion) as well as missed opportunities with lab quizzes to boost our marks. At the end of the day, it is up to me and my work ethics and skills to perform in his course, but the strike certainly did not make things easy. It was sometimes frustrating, to say the least.
After test 2, there were only two weeks left until the end of the course, so I would not say anything significant happened. In lectures, we learned about assert testing methods, some sorting algorithms that use recursion, and running time size. My reaction to the running time analysis was that it was rather similar to what I previously did in CSC165, so no difficulty there. They were concepts that were not too hard to grasp or required that much thinking or creativity. I will do the lab exercises in the coming future to practice them. The odd thing about our last assignment was that it did not cover any of the aforementioned concepts, but rather more complex tree traversal (i.e. recursion). It did require some outside-the-box thinking because the type contracts of the given functions were not ideal to solve the problems of the functions. There were additional information needed that the existing parameters did not have or there were additional information that could not be returned by the existing return type. For example, with game_lengths(), we needed to return a dictionary of all possible game lengths, the keys being the possible game lengths, and the values being the number of the occurrence of the particular game length. We used a recursive helper function to first compile a list of all the possible game lengths and the original function to compile and return the required dictionary using the list returned from the helper function. Overall, the assignment was not hard and I am confident we will get good mark on it.
Overall, I would rate the course as enjoyable. I overcame a big hurdle with recursion and learned a lot. It was the right amount of intellectual stimulation and learning. I now know for sure that Computer Science is what I want to study in university. Preparing for the final exam, I will keep it simple and practice, practice, practice. I also had the instructor from this course in CSC165 and he was awesome, introducing and explaining concepts well and assigning challenging assignments that are able to act as learning experiences. Thank you for reading my slog. Good luck to everyone on the exam.

           p.s. Shout out to Brendan (https://brendanhau.wordpress.com/) for writing an awesome slog. It looks like the strike affected him the way it did everyone else, but he is optimistic and trusts the returning TAs to provide support and mark all of our stuff in good time. I will adopt the same attitude! 

No comments:

Post a Comment