I’m currently taking an introductory algorithms class, as part of the curriculum for computer science. The concept of an algorithm is abstract. For someone who has not been exposed to coding, trying to understand its definition seems intangible. I try to explain an algorithm as a formula for how a program should work. When I am studying algorithms, I am finding a concrete way to define how a piece of code should solve a problem. This includes being able to mathematically prove that it does what it is supposed to do, why it is a good solution, and how long it will take to execute. All of these attributes are essential to programming. It is not enough for a program to work when it executes. Its limitations need to be defined as well.
All of this explanation is well and good, but I am having some hangups about the algorithms class. I took the red pill, so to speak, in in my exploration of engineering, when I realized how memory management through stack frames really worked. I was inspired to take the leap in the first place when I was told in my introductory computer science class that computer science is creative because there is no one right way to solve a problem in software engineering.
Then I started receiving my grades for my algorithms assignments. It turns out that when I read ahead and tried to apply a technique that has not been introduced yet into my assignment, I lost points because the implementation was viewed as ‘brute force.’ Somehow trying to apply a different insight meant that I did not follow the solution the grader was looking for. Now I have to request my assignment be regraded. It turns out having a different, perhaps creative, answer means the grader has more work to do. I am more assured to get full points on an exam if I follow the homework solutions that are provided for study aides. Where is the creativity in that?
I was introduced to the computer science community with the idea that creative, different thought is embraced. When it comes to passing a class, it’s better to stick with the black box provided. Now I’m looking like a cynic that doesn’t embrace the education I am given. Don’t get me wrong, I am grateful. I want to be here. Seems like I don’t take the typical path though. I’ll keep up with the hard way, perhaps the brute force way? All I can say is I hope my weird ideas turn into some semblance of success. Forging against the grain of the predetermined solutions is extra work for everyone.