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!