The topic of this week requires us to revisit the topics previously discussed and see if our opinion has changed. The three topics that I discussed previously are recursion, trees and linked-lists.
I stated in my earlier posts that recursion is a difficult and very difficult to comprehend. Now when I revisit this topic, I still find the logic beneath recursion to be difficult, but I find recursion problems to be much more solvable. This is my practices of recursion has allowed me to find a rather systematic way to solve recursion questions. The secret is to always establish a basic case and recur back to the case to solve the question. Although I can solve recursion questions, I still find the logic behind recursion to be highly difficult to understand. Perhaps I will need to do more work on this topic.
In terms of Trees, I wrote in my earlier posts that I believe it is a rather clever and intellectual way to demonstrate data, but I didn’t think it was useful. Now that I look back, I think tresses are extremely useful. It is a recursive data structure that helps us to perform many operations. For instance, in Assignment 3, we modified the Minimax function using tree attributes and was able to significantly modify the running speed of Minimax by memorizing the children of trees and call the child once another tree share the same child.
In terms of linked list, I believe my previous impression of linked list has not changed. I still feel that linked list is a simple concept in terms of the current depth we touch upon. However, I also acknowledge that it is extremely easy to make a mistake W.R.T linked list questions due to its complexity.
As this course approaches its end, I feel that I have overall gained good academic development and much better understanding of CS. I hope I can keep this up and become a better computer scientist in the future.