Thursday, 29 January 2015

SLOG2: Impression of first few weeks of CSC148

Before I begin writing my second slog for CSC148, I would like to take this moment to take a deep breath and embrace the fact that we are already in the fourth week of classes. How time goes by is unbelievable. I remember the first week of class when I entered medical science building and I was not sure how this course will be, what it will be about, etc. As I mentioned in my previous slog that I had taken CSC108 last semester so I was hoping that an introductory course on Python would ease the transition into CSC148. I sat right at the front of the class so I can focus and understand the material. To my surprise, at the end of the class I felt clueless about what Professor Danny taught. Now don't get me wrong, Prof. Danny isn't a bad prof. In fact, he is really helpful and the way he teaches someone with no background of Python will also begin to understand it. 

Before getting into the material we learnt in class and my struggles with it, lets shed some light on how week 1 to week 3 went. I can definitely say that on average these 3 weeks were an uphill battle for me. Week 1 began with a lot of confusion about the material. This is mainly because we started of with the topic of Classes, which we barely touched upon in CSC108. Since I had minimum to no background in computer science, it was like getting introduced to a completely new topic. Although it was somewhat assumed that students are prepared for this course based on CSC108, at that time I felt that nothing I learnt of in the introductory course was being used in CSC148. Note that I said "AT THAT TIME". Reason behind this is by week 2 I was beginning to understand and get a hold on the topic of classes. I used the time between the two lectures to go over material taught in class and just reading over the chapter notes provided on the course website. I also, feel the CSC108 textbook is a good reference to read over when in doubt or when stuck. Although I was starting to understand what a Class is and how to create a class and what methods it requires, I wasn't 100% confident that I can do this on my own. It wasn't until labs began in week 2, when I actually started to get a feel for it. Like they say 

"PRACTICE MAKES A MAN PERFECT"

Before the lab, I went over the material and I'll be honest with you I was more lost than ever. Taking one step at a time and finishing the lab material as much as I could based on my understanding, I have to say it was a good base for me. After working on the handout during the lab with my partner and discussing with the TA and fellow students, I understood a lot more than what I went in with. I understood what the __init__ method does as well. Basically I went into the lab with just the following:
                            class RaceRegistry(object):
                                     """ A system for organizing a 5K running race"

After the lab, I had this much:
                           LEGAL_SPEED = ['under 20', 'under 30', 'under 40', '40 and over']
                           class RaceRegistry(email, speed_category):
                                    """ A system for organizing a 5K running race
   
                                     Attributes:
                                         - email address: list of strings of email address
                                         - Speed Category: string. < 20, < 30, < 40, and >= 40
                                     """
                                     def __init__(self):
                                               register = {}
  Other than the lab component, during week 2 we also worked on __str__, __repr__, and __eq__ methods. I have to be honest here, I didn't understand the point of these methods then and I still do not understand it. During this week's lecture, Prof. Danny went over these methods briefly in terms of our assignment 1 and I understand the definition of them but still clueless about what the point is of having them there if there is even one.
While all this was going on, I was also working on Assignment 1 with a partner. Now I have to say, what the assignment did for my understanding is not even close to what the lecture and the labs have. Like I said before, PRACTICE MAKES A MAN PERFECT!! and it sure did for me. The only thing that threw me off was the subclass and how it is inherited from the superclass. Luckily my partner is in the earlier lectures of Danny so she explained that part to me. This is why, during week 3, subclasses seemed like review and it cleared up more for me.

Looking back at the 3 week period that passed in this course, I must say there was a lot of material covered but it sure just got better and better for me over time. I am honestly looking forward to what else is in store for me from this course. One thing is for sure, this is just the beginning and I know things just get harder and harder but I am confident now that I can tackle the course material as long as I keep working at it.

Thank you all for reading my posts. I know its quiet lengthy but I hope from my experience you can take a few advice for yourself and it'll help you in the future. Feel free to pass a comment to me as I love getting feedback on how I am doing specially since I am new to computer science and to writing slogs.

Wednesday, 21 January 2015

SLOG1: Why Geeks (Computer Scientists) should write?

As a third year cognitive-science student taking the first year computer-science course, it sure feels like I am just learning to talk in another language. Although the process of learning a new language is quiet exciting, it sure comes with great difficulty. I remember the first time I enrolled in CSC108, I went to the coordinator with the hope that I can get an exemption from taking the course but Professor Campbell convinced me that this course will not be difficult at all and I will learn a lot. After finishing the course last semester, I was starting to feel this whole computer-programming deal. I was able to follow what was going on in class on a day to day basis and was able to do most assignments and in class assignments on my own. This actually gave me confidence that I can take another course in the computer-programming aspect. Since CSC148 is one of the courses required for my Cognitive Science Major, I thought to myself “hey why not just take one more course" and here I am taking the CSC148 with Danny Heap.

Once I enrolled into CSC148, I was pretty excited to see what was in store ahead for me. The day I saw the course syllabus, I remember reading the requirement for submitting a SLOG every week. I was pretty confused but once Prof Heap explained it to us during the first lecture, my first reaction to it was exactly what he has asked us to write about in this post: "Why should Geeks write?" First and foremost, Geek is defined by the British dictionary (http://dictionary.reference.com/browse/geek?s=t) as 

"a person who is preoccupied with or very knowledgeable about computing".

Personally, I feel the answer to this question can be obtained only when you place yourself in the shoes of a Geek. For someone who spends most of their time writing codes in languages such as Python, Java, C+, etc, it can be difficult to express what they want to in English or any other non-computer language. They should also practice writing because translating something from one language into another takes deeper understanding of the material and that will lead them to understand the material better and will help them to make their codes more concise and less over-loaded with codes. It will also help them to remember certain information for later one. this can be seen as having to talk about their programs and problems in a non-computer language as a superclass and referring back to these problems as a subclass for it. When in need for the info later on,  geeks will have a better understanding and memory of the info and it will be stored in their implicit memory so that  it can be accessed at a later time.

For now this is all I can think of as to why Geeks should practice writing, this is just my take on the question as cog-sci student but I would love to hear what you all think about it.