Thursday, April 2, 2015

WEEK 12- Farewell.

It's just like so we've come to not only the end of the term, but also the end of my first year as a university student. It's incredible how quickly this year has flown by, and how much more knowledgeable I feel about computer science. I've had such a roller-coaster of a time within these past two semesters, it's been quite the ride. This course has been, to me, much more enjoyable than any other, especially 108, because I feel as though we're now diving into the grit of "computer science".

It's not to say this course didn't have it's challenges. I'm still not a master of recursion, but It's something that I'm determined to work on and I really want to improve for myself and I think that's the most important. I know that a large portion of the course this semester revolved around using recursion and recursive functions to solve problems and so I would only assume that the ability to think recursively will be something that is tested heavily on the final test and so I really will work towards improving those skills within the next few weeks so that they are the best they can be in preparation for the final exam.

I'm excited to continue my journey, and every time Dianne mentions something we'll learn in another course, I get giddy to learn such exciting and interesting things. I realize that the strike really put a damper on the course, but I hope that through reworking the labs and assignments, Ill be able to ace the exam. This course is very crucial for getting into the subject post and so I really need to make sure that I don't screw up. My self-doubt aside, I just wanted to end off by saying that, as a student with no background in coding or things of the sort, I'm very proud of the progress that I've made the past six months and am excited to see what things I will learn next.

Leo out.

Wednesday, March 25, 2015

WEEK 11 - Week 3 Revisited

In our third week of the term, we were asked to write about why we think that "geeks" should write. I have always been a solid believer in writing things down, so I remember that when I first began writing the W3 blog post, I had some very strong opinions on the topic.

Having gone through the term, I believe that my belief that "geeks" should write, because: it is helpful in reflection, to learn from past errors and as a reference for mistakes and past projects stands more than ever. Having worked through more challenging assignments than previously, I can wholeheartedly say that writing down my ideas and my plan of attack has proven to be ever so important in a successful assignment. The frequency of my writing has also proven useful when commenting on assignments. Commenting was brought up in 108 and at the time I could see how maybe it could be important, but when the scale of our assignments grew in 148, I really realized, and was thankful that I took the time to comment properly, because things can get confusing, very quickly, without proper commenting.

Even having the opportunity to look back on some of my SLOG posts for this class has proven to be a source of motivation, to keep going when I'm feeling less than great. I look back and see how far I've come and it gives me a sense of relief knowing that I've made such huge strides.

Looking through SLOG's of my peers, I can see that there are mixed reviews on the importance of writing. Some agree, others don't. For those who agree, they all seem to follow a similar pattern in their reasoning. That writing is important because communication with others, and communicating your motives with your code is important and through proper communication you can achieve wondrous things. It's nice to see that others have a similar mentality in their opinions on writing, and I hope that through writing the SLOG's others will keep with the habit of jotting down their thoughts because they will find it ever-so-rewarding later on in their life.


Wednesday, March 18, 2015

WEEK 10 - Defeated.

A relatively quiet week, the second term test occurred on Wednesday, and it did not go as well as I had hoped. I have yet to receive my marks yet but I am certain that It was bad. I'm feeling very frustrated with the course, as well as with the ongoing strike. I miss having a tutorial where I could ask the TA questions about the class material as well as an opportunity to work on labs, whereas I am finding myself skipping weekly labs because there is no incentive or actual tutorial time. I feel as though I'm not getting the results I want for the work I'm putting in and this is the most defeated feeling in the world.

I know that me working on the labs would have been good preparation for the term test, and I've been kicking myself in the butt for not doing so. I'm just having a hard time motivating myself as of late and disinterested in the course. I have decided that once the results are posted, I will go through the test again and work through the problems because I clearly don't have as good of an understanding as I thought I had. I also think it's important for myself to be more engaged during lecture, and to ask questions. I find myself being very passive in class and this isn't conducive to getting a good understanding of the material.

I'm going to try to do these two things and hopefully we will see some positive results when the final test rolls around.

Monday, March 9, 2015

WEEK 9 - Linked this, Linked That.

This week was all about linked lists. This ADT is all about nodes that have one single reference to an object behind them, and that object has one behind it, etc... This linear sequence was interesting to learn about because we also implemented a "wrapper" class to go with it. This class was used to represent the linked list as a whole and was super useful for references to the front and back of list, as well as the size of the list. It also provided some very helpful methods to: prepend, append, and delete from the front and back of the linked list, making it very functional.

I think that this week was a success for me because I feel like I caught on to understand how to work linked lists very quickly in comparison to BST's and Trees in general. It was very rewarding to be able to look at the classes and think to myself: "WOW I ACTUALLY UNDERSTAND THIS." It's a pretty straightforward concept, but I can see where confusion may occur when re-distributing references to the front and back of the Llist when mutating it. Diane keeps mentioning the importance of drawing diagrams, and this is something I haven't been doing... But I think she's right and I'm going to put the effort into start drawing more diagrams.

I really need to work on my recursion and my trees though. I am feeling very uncomfortable with these two topics still and I have a feeling they will play a large part in the questions on the second term test that is happening this coming Wednesday.

Wednesday, March 4, 2015

WEEK 8 - George, George, George of the jungle, watch out for that TREEE!

This week we talked about binary trees and binary search trees, which are like a regular tree, except each node can only have max two children (a left and right child node).
For binary search trees though, the exception is that: for every node, it's value is greater than all values in it's left subtree and less than all values in it's right subtree.

This is very interesting and we talked about the reasoning behind why BST's exist. They exist so that if you needed to search for a specific item in a tree, the search would be almost lightening quick as you could cut off several paths just by looking at their children no matter what their length is. This could then be applied into searching for a specific node in a tree, following the same parameters. I really enjoyed talking about the different ways of going through a tree and writing the methods in class. Having had the opportunity to write code for methods together really gave the opportunity for students to ask questions about why we did it the way we did, and help solidify the concept of BST's and their methods in my mind.

I'd also like to add that I'm currently very frustrated with A2. The minimax strategy is much harder then anything we've done before and so I'm feeling very angry at myself for not being able to understand it properly. Our team is completed almost everything else except for this and none of us have been able to get minimax to work properly. I suggested that we go into office hours at some point before the assignment is due because I think a explanation and clarification could really be helpful in nailing down this strategy.

Hopefully we figure it out on time before the assignment is due and we can submit everything early so we no longer have to worry about it. I really hope the instructors will be easier on the marking as I'm really noticing the lack of support from having the TA's to ask questions to.

Monday, February 23, 2015

WEEK 7 - NOTORIOUS A.D.T.

Generalization can be tricky, thinking at a higher level, as opposed to one specific example, is something that we've been having to learn as we realize that we can create programs that can help solve many instances of different, but similar problems. One of the types of ADT's we've talked about in length is stacks.

Stacks are pretty nifty as they will only allow items to be placed on the top and removed from the top, which can be very useful for a variety of problems one will encounter in their computer science career. Some real world examples would include: tracking functions calls, or even tracking visited pages in google chrome or firefox.

The most important thing to note when talking about ADT's is that if you're looking to create one, DONT FOR THE LOVE OF GOD focus on the details, but focus on, what can I do with this stack? How can I use it to the best of my advantage and for what kinds of problems? Because by not worrying about the details, you could then implement your stack or other ADT in a different language. Though I don't see the immediate benefit, I'm sure as I progress, I will learn and appreciate these little nuggets of abstraction more and more.

I mean, look at Trees. We've just begun to dive into their functions, but I can already tell that these will become very useful for future projects and have a very large potential for possible future problems that we will encounter in this course as well as in the future.

Friday, February 13, 2015

WEEK 6 - OOP 's

Object oriented programming was something introduced at the end of CSC108 that I thought would be relatively unimportant and kind of silly to use.

WOW WAS I WRONG. I NOW SEE THE LIGHT.

Thus far in the course, it has been solely coding using object oriented design. We've been working with classes and subclasses, learning how inheritance works and learning about overwriting methods, its great! The whole concept behind having a parent class that is super general, and then having sub-classes that are specific to a problem is a concept I really had a hard time with. This was brought up in A1 where we had to write the general and specific for our game. Having gone through the game, and now more examples, I can see how crazy useful it is to have this parent/child set-up. It makes adding functionality a breeze and really brings to life Diane's analogy of the pop-machine.

I think back on our assignments we completed in 108 and I wonder how quickly we could complete them with the use of classes and OOP as opposed to the very tedious and slow methods we used back then.

My favourite thing thus far has been the creation of special methods and being able to call on whichever you've created and see it come to life in the shell! I did have some confusion though with the difference between methods and functions and when to use one or the other. I've resolved this problem as I really make an effort in naming all my classes, methods, descriptions, initializers effectively. I know a lot of people scoff at the instructor when they repeat: "Choose good names" or "Draw out diagrams". But I swear, doing so will make anyone's life so much easier and in the long run will be very beneficial later down the road. I will say that after having completed the assignment I feel much more confident in these areas, and I think I succeeded very well in the term test we had last week which featured a lot of these Object Oriented Programming topics. I will look forward to seeing how we can expand on this kind of programming throughout the semester and within future courses.

Leo out

Wednesday, February 4, 2015

WEEK 5 - RECURCEPTION?

Confidence level: plummeting...

Here I thought this course wasn't going to throw me any curve balls. Well, I just got a fast-pitch and it goes by the name of recursion. By far the most confusing and hair pulling concept.

I can tell that this can get really confusing quickly, as this week we started off slowly by tracing recursive functions. Recursive functions, mean functions who call upon themselves, as you already knew. This was an interesting concept to grasp and definitely something Christopher Nolan created to mess with your brain for the remainder of existence.

I'm glad that we are starting out slowly by first tracing the code, because I can assume that as we progress, writing recursive functions will become nothing but challenging and very confusing. It's definitely a different way to think about functions. I think that by tracing more and more examples of code, focusing more on the actual body and less on the docstring will be the most effective way for me to improve on my recursive thinking and understanding. I can definitely see where the ability to use recursion will come in handy throughout future tasks and I am a bit intrigued but also scared to see the problems we will have to solve using these techniques. I can see recursion becoming very complicated quickly, and so  I think that by practicing tracing repeatedly will help build my confidence level and hopeful this will translate into a mastery of the topic as the semester progresses.
I'm going to do the additional exercises and hopefully something will click, and fast! 

Until next week,

Leo ouut.. 

Thursday, January 29, 2015

WEEK 4 - LOL (LOTS OF LEARNING)

It's a bit frightening as well as exciting to think about all the new concepts I've learnt in just one month of this course. Leaving CSC108 I had thought that I had quite the grasp on Python and understood how to use it to it's full extent, but boy was I wrong. This course has pushed me to think about designing code and solving problems at a whole other level. So far, I believe that I'm doing ok but there is room for serious improvement. I think that I've been having a bit of difficulty with recursion, creating special methods (__str__,__init__, etc..), and thinking abstractly.

The biggest difference from this class and 108 is that in 108, it was quite straightforward in terms of what was asked to be accomplished, but in 148, the assignment is very liberal in it's design which is something I need to work on. Being able to take a problem and use the tools at my disposal without having any pattern to follow is something I don't feel as comfortable with, but I'm noticing it's becoming a reoccurring request in the course  and thus I am going to start practicing designing classes and subclasses to work those skills.

I'm also determined to be able to trace recursive functions, and hopefully write them with ease. I'm really struggling with the tracing part at the moment but I have found several interesting reads as well as some practice questions that I am going to begin working on that may hopefully get me a better understanding of the topic and improve my recursion skills.

I'm really excited to continue on with the course as I can't wait to see what we learn next, and work really hard to improve on the areas I'm not as comfortable with. I'd like to hear from other students, what they think a concept they're struggling with, or have difficulty with, in the course is? Are they the same concepts I'm having a hard time with?


Tuesday, January 20, 2015

WEEK 3 - Why should "geeks" write?

I believe that writing is essential for everyone because it is a helpful tool in reflection as well as in learning from our past. Since my time in high school I have begun to keep a daily journal on me at all times as a reference to my daily life.

In a scientific domain, such as computer science, I believe a journal could prove to be an extremely useful tool to use as a reference to past projects as well as to road-blocks that tend to need revisiting several times with several attempts before a solution is found.

When writing a program, we want something to be accomplished, and sometimes this thing can be quite complex. Object oriented programming is thinking about each element of a whole, being your program, as an object. Some programs contain hundreds of objects that vary in importance but the fact is, is that things can become quite complex very quickly. It’s a good idea to have a written record of the objects in your program because then you can easily reference them if you come back to a certain project later on, or if you’re working on a new project that requires you to do something similar to something you’ve already done. Writing can not only help you think about a solution to a problem, but then also becomes a resource later down the road when a new problem arises.

It is also crucial that code-writers posses good writing skills. The most important part of a good program is good explanations and commentary. This is what defines good, from great code. When working on such a large scale, a project can easily become quite confusing and so if you you’re able to properly explain your thinking others can understand and learn from what you’ve done. This is crucial down the road when projects go from one or two people to a whole team working on specific parts of a whole. 

Having a journal of some kind can only be beneficial in the long run and is a great way to capture all those “out-loud” thoughts and look back on them, because sometimes the answer is just under our noses.

If theres any other reason why you think that geeks should write please let me know with a comment below! 


Leo out!