In terms of material it would seem that week 9 wasn't exactly an abundance of information. Al though there isn't much write about there were some interesting topics about the the binary search tree (BST) involving the insert and delete functions. Initial reaction to the insert function is nothing special, to insert a node into the tree it's pretty straight forward, everything on the left is less, everything on the right is larger. It gets a little more confusing for the delete function.
My difficulties and frustration come from the delete function as it gets more convoluted and complex when you need to delete a node in the middle of the tree. What happens to the rest of the nodes in the subtree? Do they need to be re inserted into the original tree? Even now the algorithm and code are a little hard to follow for me. I will be playing around more with mutating trees and testing code to get a better grasp on the topic in preparation for the final exam. Not too much to write about due to the midterm, The midterm itself , in my opinion, was harder than the first one but was not a problem if you kept up with lab exercises. Al though people that did not have prior knowledge may have had difficulty with the subject because of lack of labs to the strike.
Friday, 20 March 2015
Thursday, 12 March 2015
Week 8
My gut reactions to the linked list concept was one of relief to be sure. Working with trees beforehand, I found, was much harder than working with linked lists due to its branching structure. It was a nice change of pace from using recursive methods/ functions back to some loops. In my opinion the linked list structure is pretty straight forward, literally. the node points holds two pieces of information, the data and the pointer to the next node in the list. Fortunately I did have prior programming knowledge in linked lists in Java, I find linked lists, as with most structures, much easier to visualize and code in python, probably because visually the python language is more simplistic.
Initially, I did have small problems in programming the different functions in the linked list code because the percentage of making a simple error is rather large. When I was trying the lab most of the problems arose when I would begin to lose track of LLnodes because traversing the list with variables such as curr_node, prev etc, in a while loop, if not careful, could lead to infinite loops or lead to node pointers trying to point to a node after None which would lead to errors. I found that the advice of drawing a pictures to better refine an algorithm was best in minimizing such mistakes. To my relief, no major questions were created just a matter of refining my thinking towards linked list structures. Just in time for the midterm too.
Initially, I did have small problems in programming the different functions in the linked list code because the percentage of making a simple error is rather large. When I was trying the lab most of the problems arose when I would begin to lose track of LLnodes because traversing the list with variables such as curr_node, prev etc, in a while loop, if not careful, could lead to infinite loops or lead to node pointers trying to point to a node after None which would lead to errors. I found that the advice of drawing a pictures to better refine an algorithm was best in minimizing such mistakes. To my relief, no major questions were created just a matter of refining my thinking towards linked list structures. Just in time for the midterm too.
Thursday, 5 February 2015
Week 5
During the fourth week of csc148 a concept that learned was the method of recursion. Even though I learned what recursion is from grade 12 in Java, I still learned new ways of understanding the topic. Before, I was never taught a way of tracing the recursion, as the method was being called. The classes and tutorials have me stronger at tracing a recursive method and figure out what the method is for without having to read a docstring. Although, I still have difficulty creating my own recursive methods.
Being able to trace a recursive method is rather easy, pen and paper is all that is needed, but when it comes to creating my own it is not quite as easy. On top of that I also don't have a feel of when such a skill such as recursion comes into play, in other words, when I'm programming I don't recognize the situation. This weakness came to surface when I was getting frustrated on how to create the method for task they had given me. Even when programming in high school, I was never particularly strong at recursion but I do plan on rectifying this weakness by working on exercise problems, to become more comfortable at making recursive methods but also when it is beneficial to use them.
Friday, 30 January 2015
Impressions of the first few weeks: Week 4
My initial impressions to the first few weeks of class have been rather lack lustre, in terms of material. Even though the concepts introduced in the initial stages were overall more difficult than CSC108 I still don't find them very challenging, though I still had small lingering questions. Contrary to their difficulty I can recognize their usefulness and can admit that these are core aspects of programming. Within the first few weeks we went over object oriented programming, abstract data types, special methods. Object oriented programming was a simple concept to grasp for me, having some programming experience in java, I could pick up the interactions between methods, different classes and objects. So ,what I learned from the first few weeks was not the topic of the lecture but more of a appreciation for the knowledge for programming I already had.
In regard to the lectures and classes themselves I have been really impressed at the teaching style of not only my professor but also the environment of the tutorials. I found that preforming labs with partners was very helpful because being able to bounce ideas off of each other helped each others understanding of the topic. In lectures, my professor has done a great job at trying to portray different coding methods visually instead of leaving it in it's ambiguous python form. For example, the ADTs were first introduced as real life examples before delving into the coding aspect. All in all, the learning environment was convenient and beneficial.
The lecture slide posts on cdf are a nice bonus too.
In regard to the lectures and classes themselves I have been really impressed at the teaching style of not only my professor but also the environment of the tutorials. I found that preforming labs with partners was very helpful because being able to bounce ideas off of each other helped each others understanding of the topic. In lectures, my professor has done a great job at trying to portray different coding methods visually instead of leaving it in it's ambiguous python form. For example, the ADTs were first introduced as real life examples before delving into the coding aspect. All in all, the learning environment was convenient and beneficial.
The lecture slide posts on cdf are a nice bonus too.
Saturday, 24 January 2015
Why geeks should write
It's a common misconception for most students, lying on the mathematical side of the spectrum, that by entering a field of study such as the sciences they can "escape" having to write a lot. of course I have come to realize this is incorrect on many levels, and it is arguable that english aspects are more prevalent in jobs as a whole than mathematics.The key characteristic in english that is must in computer science, or any science for that matter, is the art of communication. With that I pose a question: what good is research and projects without the skills to explain it to others? As you can see, scientists need to have a strong understanding communication to portray their ideas.
Communication is something a scientist needs to on the job to pitch ideas, document work, write reports, and verbally show how their project works. To be specific, a computer scientist's piece of art is their program, the very purpose of that program is to make a task easier for the general public. Although, the program is only as good as users knowledge to wield it, so its the computer scientists job to properly show how the program operates. A GUI or just a user interface needs to properly dictate what the program is for, what it does, and how to use it, if the UI is not specific or lacks linguistic simplicity, it is not well formed. For example I can't use techno-talk to a regular consumer because they won't know what any of it means but to a scientist it would provide a deeper understanding of my program. A computer scientist should know to be precise but effective in getting the key information across whether it be showing a user or a fellow programmer what the program is for and how to use it.
Communication is something a scientist needs to on the job to pitch ideas, document work, write reports, and verbally show how their project works. To be specific, a computer scientist's piece of art is their program, the very purpose of that program is to make a task easier for the general public. Although, the program is only as good as users knowledge to wield it, so its the computer scientists job to properly show how the program operates. A GUI or just a user interface needs to properly dictate what the program is for, what it does, and how to use it, if the UI is not specific or lacks linguistic simplicity, it is not well formed. For example I can't use techno-talk to a regular consumer because they won't know what any of it means but to a scientist it would provide a deeper understanding of my program. A computer scientist should know to be precise but effective in getting the key information across whether it be showing a user or a fellow programmer what the program is for and how to use it.
Subscribe to:
Posts (Atom)