Week 11: Coming to an end
As we approach the end of the course we look more deeply into algorithm run times, and how to determine run time by glancing at code. We learned about Big O and how we generalize run times of code into the big O of a function, due to its similar behaviours when given really big inputs (in worst case scenarios). Other than this, Iâm really happy with the materials I have learned over the past semester in this course.
Reflecting back on my first few reactions into the course, I feel like my understanding of computer science has become a lot deeper and meaningful. Where before this course, I was able to understand syntax and basic classes/attributes of Python (such as Lists, Dictionaries, Strings, etc) and implement this properly in assignments, this course taught me to think bigger than just those classes, and more into how to process data in different ways. Examples of this being trees and linked lists.
Doing the assignments in this course helped me solidify my understanding of all concepts in this course, from overriding functions or extending classes to trees. In the first assignment we worked with about 8 classes where many classes were used within other classes. Realizing how complicated tracing the code to find bugs was, we finally took away how to use the debugger from this assignment. Also, this assignment made me realize how crucial it is to do an overall analysis of the program due to how dependent the individual classes were on each other. In the second assignment however, we implemented a lot of new concepts learned in the course. I learned how to implement trees using depth-first searches and breadth-first searched, using the help of queues and stacks. Also working with puzzles gave good practice of visualizing how extensions of puzzles would be used in solving the puzzle (since the solving functions were common to all puzzles).








