Sunday, 5 April 2015

Revisiting my earlier slogs, week 11

I don't think my feelings have changed regarding recursions, that is to say, it is interesting but infuriating sometimes.

With recursions, practice really makes perfect, and I feel that I am getting a lot better at understanding the flow of it.  I think that is the case with many other students as well, as I take a look at other students's slogs.  Trees have been quite interesting, and i said earlier, it reminds me of the Tree of Knowledge.  I wonder if Google uses this type of model to organize their search engine, since it seems to know everything!

I feel that the course slogs have not helped me at all.  I know that the intended purpose of the course slog is to allow us to reflect on what we have learned, and perhaps make connections with real life, but in my opinion, it is hard to reflect upon it when neither Diane nor Danny give any indication of what these things relate to in real life or how it affects our lives, etc, and I am not really a computer savvy person so I did not bring with me any real own knowledge of the science.  The other thing that the slogs are for is to get us to write and practice writing, but the problem I have with this is that I do not feel comfortable to express all of my ideas on a public place, and my mode of  expression feels somewhat artificial.  Given the circumstances, I do not feel like I am enjoying writing more at all.  I had stated in my first slog on why geeks need to know how to write, but the type of writing I was talking about is exceptionally advanced, i.e. research papers, but those things require an entire separate course pretty much to learn.  I would argue that geeks would need their own english class!
I have read some other slogs, and some people comment that writing helps to get our ideas on a function out to help us plan what we are doing, and I totally agree with that, but I think that, personally, I can already do that, so the slogs do not help me in this respect even if it helps others.

Now, i personally understand the the concept behind writing down out thoughts,  I do it personally all the time in my private journal.  It certainly helps to reflect upon our ideas, as this helps contribute to our overall understanding of a problem.  By keeping record of it, one can go over it even if one forgets the original idea, and the combine that idea with whatever is in our head at the present time and see what manifests inside our think tank, as mentioned in the previous paragraph, I don't have own knowledge of compsci and the lecturers do not go over the history of compsci or anything to give us a deeper understanding of how it affects our world, so to stimulate our own perception of compsci.  I could certainly guess how it affects us, like my example on Google, but guessing is just that, a guess.


This week, we learned about Big O and time efficiency.  Luckily for me, I have learned that in 165 and so understanding it was easy.  I have not gotten a chance to practice the worksheets as everything has been so hectic, but I really enjoyed doing Big O in 165 as it was very fun to do proofs.  Time efficiency was difficult for me, as it requires understanding the function and coming up with a function for  generic value such that the function calculates the running steps required for the function to execute.

Reactions to Week Seven

This week we get to practice with more trees, we learned about Binary Trees and practice recursions.

The worst thing is that the I find recursions so difficult.  I mean, during the lab, it took me over an hour to implement list_longest_path.  I think the problem is that I have not gotten the hang of it, because I notice other students and they seems to be fine, it is simply a question of experience.  I find it hard to keep track of what is going on in the recursive process so I don't know whether I am doing things correctly.  The funny thing I notice however, is that usually, the way we expect the recursive code to look is exactly what we want to have to implement it.  for example, with list longest path, i had to recursive keep track of the longest path, and so i put list longest path' inside 'list longest path', and it seemed like all I had to do was 'assume' list longest path would spit out what is wanted (the longest path for tree rooted at root), and just use the return value to compare with what I have so far in a separate list and return the longest path from this list, and so on, recursively.  By implementing the overall functions in such a way it seems to work, hooray!

Reactions to Week 8

We explore the data type LinkedList, which is basically a list that contains a value and a child that has another value with another child and so on... it like a chain.  LinkedList is pretty much a Tree but with one child.  It thought it was fun to play with it, but the LinkedList __add__ method was hard to implement.  The reasons why is because I had a hard time figuring out how to do the code so that the chains of two list would be combined, and I had to create a set of "dummy" lists to keep track of everything and combine the lists at end. I had practice with the while loop, which is always good since it is not easy to use and it is important, (I remember in assigment 1 when I had to use it to implement my game).

I get the general theme that the data types we are learning are Tree types, i mean, we had already learned about binary trees.  I enjoy learning them because they remind me of the idea of the Tree Of Knowledge in the Bible, which is a really random connection but that is how it is. Haha.  

End of term course evaluation!

Phew, what hectic term it has been.  From the TA strike to recursions, I'm glad it is all over.

Naturally, the TA strike has been such a pain that I do not know when to start, except that perhaps I missed those quizzes at labs, such easy marks ... sad.

Recursions have been the main idea for this course, as this has been the method of implementation we haven used for Tree type data, which is the main way of organizing data we have learned.  I have to say that recursions are both tiresome and interesting.  Tiresome because, for some functions, it is hard to know what to do for it.  I know I have to do some kind of recursion, but I don't know how and getting the recessive model correctly by keeping track of each step of execution can be head aching.  I learned that it is better to write it down first.   In assignment two, for example, the recursion needed for strategy minimax was very difficult.  I felt i was implementing it wring not only because the model that I need to keep track of was complex, but I might not have understood correctly what need to implement.  This last part is the other thing that is confusing about recursions, since sometimes it is hard to know precisely what needs to be recursed.   Assignment three helped with my understanding of recursions greatly, since it allowed me more practise with recursions with functions that I thought were actually easier than some of the labs.  Start with the base case, and the write some code for when it is not a base case, etc.. which is easy once I got the hang of it.

I wished I made the effort to be make some compsci friends, given that I am a commuter, that would have helped greatly academically.  I would then be able to share my thoughts and confusion with them, which might have helped in my overall learning.



The classes were quite good, I learned a lot from Diane, as she makes it very clear the concepts of trees, ADTS, and recursions.  One problem I had was that perhaps Diane did not put enough focus on what kind of methods and functions would be useful when actually writing the code, as I am not experience with all of the methods, and that would have helped saved a lot of time for me personally to not have to look for methods that I could use.

This week in computer science has been mild, given it is the last week, and most of the time we just spent asking questions on exams etc..

Time for exams, yay!