Thursday, January 23, 2014

CSC148H1S Week 3



    Time sure flies! The first three weeks of this semester have gone by so quickly! In the first week, I felt completely lost in the lectures, however, as I discovered the great help offered in this course, along with the weekly extra reading material, I hope to grow more confidence in programming, as well as understand ~95% of the material covered each week (or else, I'll have a ton of work to do before exams!). There were several foreign terms introduced in the lectures, which include ternary, ADT, Stacks and Recursion. My understanding of these terms was achieved by doing some extra reading, and taking some time to understand the code. Also, something that was mentioned by the professor and was new to me was the way in which one can make some data “private” by adding an underscore (‘_’) before the name. I really enjoy when my professor relates each ‘topic’ to some real-world situation, and this helps me understand what exactly is being done in Python. He usually includes in his slides, a paragraph relating the Python material to the real world. For example, in introducing Stacks, he summarized the methods that can be done with Stacks to real situations, and allowed us some time to read and analyze the paragraph. This really helped me interpret what is being taught.
    In addition to the lectures, there are also lab tutorials. At first, I disliked the idea of having to work with a partner in all the labs, since I comfortably worked alone for most of my CSC108 assignments. However, after attending my second lab session, I realized how important and helpful it is to work with a partner, especially in Computer Science. Thanks to my brilliant lab partner, we were able to finish the majority of the tasks provided, and he helped me understand how a ‘Stack’ works.
    The first two-three weeks of Intro to Computer Science were mainly about OOP. What on earth is OOP?? OOP stands for Object-Oriented Programming, which basically, is creating and using “classes” and “objects”. From my understanding, a “class” is a ‘blueprint’ that is defined by an individual (python-user) to represent a type of object and its operations, and an object is a ‘thing’ created from class, which tells it to do something. In programming, objects are usually called “instances” of a class. So, OOP is a type of programming that creates a sort of framework (a "class") for some data, which includes the functions or methods in which the data can perform. Some important traits of OOP include reusability (Inheritance) and “data hiding”. Data hiding is making some data “private” so that no user can interfere or access the data. Simply adding an underscore before the variable name does this "data-hiding". Additionally, “Inheritance” essentially means that one can “transfer” some features of an existing class and apply it to some new class, which can be extremely useful and time-saving when dealing with complex object-oriented programs. All of these outline a few of the many features of OOP.