This class is turning out to be a mix of not as terrible as I thought it would be, yet really effing difficult.
A long time ago I was really good a math. Then they stopped making me take it after geometry in middle school. That was 20 years ago. Art school? That was so basic and I tested out of it. Last year I took a data structures class that touched on algorithms that had me exponentially lost in figuring out run-times. The book was even worse. It was as if they were all speaking a completely different language.
This class? Now I finally understand what they were talking about before. Well… I think so. My algebra is still rusty, but I’m following the math part just fine. Mostly fine.
After spending the better part of 2 years thinking in C++, now I
have get to force myself to push all of that aside. The point of the class is to think of the big ideas, not syntax and code details. Write an algorithm that does something specific and prove the run-time without thinking about syntax. Without thinking in code. Write it in English pseudocode.
I follow everything pretty well in class, even the math which is really rusty. But my head keeps getting stuck at “you left out so much of the implementation!” “But you have to link the nodes to….” Damnit.
The first homework assignment question? I paced my apartment for the better part of 4 hours. Then I had 8 more left.
I’m a really horrible test taker. Or at least now I am. Which is kind of odd given that I have a scary good memory. What happens is this: my hands start shaking, a migraine sets in from teeth grinding and my mind goes blank. It’s partly due to going back to school, changing careers, and not being completely sure I’m capable of using the other side of my brain after so many years focusing on art. Which should have gone away now due to how well I’ve been doing.
It has gotten better though. What really helps is a mini meditation right before. I’m a Buddhist (Zen) and one of the teachings is a short breathing exercise to calm down, focus, and bring yourself into the moment.
Luckily the midterm wasn’t so bad. For the most part was following algorithms we went over in class at each step given the input. Merge sort, binary search, coin change, longest common sub-sequence, etc. The issue happened at the end when I came to:
Design an algorithm that given an array where you don’t know the length…. Hold on. If I don’t know where the end is, how can I do anything without it possibly blowing up for accessing memory outside of the bounds of the array? And that is where my brain stayed. Based on the asked for running time, I knew which search algorithm I needed to modify. But I kept getting stuck on the implementation of it. I eventually got it, but it was still frustrating.
All of the work so far has been the higher level thought. This is the one project that we will actually be implementing something. Yay! C++ how I missed you!
The project is to implement the graham’s scan algorithm: computing the convex hull of a set of points with a time complexity O(nlgn). Let’s see how far I can get.