I Don't Wanna Be a Jedi
"Whatever I said to make you think that love is the religion of the weak..."Input: | MST:
----------------
1 2 1 | 1 2 1
1 5 7 | 3 4 2
2 4 5 | 5 6 3
3 4 2 | 7 8 4
5 6 3 | 2 4 5
6 8 6 | 6 8 6
7 8 4 | 1 5 7
Total Cost: 28
Behold the wonders of computer science! Are you not amazed? Dazzled? Awestruck? Befuddled in your wonderment?
If you walk upright and are capable of speech, or otherwise perfectly normal, then this strikes you as it strikes most everybody: gibberish. Oh, but I'll tell you about it anyways. Ya can't stop me. Ya can't stop this.
Above is the input and output for my last project in my Data Structure and Algorithms class. It is a demonstration of Kruskal's algorithm, which is one of the solutions to the Minimum Spanning Tree problem. If it makes you feel any better, I didn't know this was a problem either until a little before Thanksgiving. Given a set of nodes and edges (weighted links between the nodes), the algorithm finds the minimally weighted set that spans (connects) all of the nodes.
Hold that thought. Hold it right there.
If you're thinking that you are already losing interest, then you are probably among 50% of the world population. If you're confused, you're probably in the other 40%. If you're interested, but you're not sure what I'm talking about, that perhaps puts you in about 10%. Of that 10%, there are probably 2% that have the foggiest what I'm talking about. And of that, maybe 1% have seen this before or done it.
If you're thinking I just made those numbers up, you're right. But you get my point.
Computer science is nothing to brag about. You can't take your friends into your secret basement or workshop, lit only by a lonely swinging light bulb, and dramatically pull the sheet off of the table to reveal a dim LCD with a bunch of numbers and a command prompt. Seriously. Nobody gives a shit. They're unimpressed. They can press the power button on their computers, have it boot up without any effort, check their email, surf the Internet, play a game, and any other number of neat things modern computing has to offer.
But then again, even if what you uncovered in your dusty computing dungeon was something truly amazing, absolutely revolutionary in terms of creativity, design, and practical use, what of it? We got along without it, why do I need it now? Can it draw pictures? Now, if you were building a bridge, THAT would be cool. Oh, or splicing genes, making clones or something. And this mad scientist thing really isn't working, I mean, don't you have any, like, chemicals, or beakers hanging around. Can you hack into the [government agency] with a few keystrokes? Do you have Internet on this thing? I need to check my Myspace.
Expletives don't express my frustration.
It took 718 lines of code to implement that algorithm, a total of 12 hours altogether coding, debugging, and testing it. I got a 40 out of 50 possible points on the project because the professor included a test case that broke my algorithm. I found out it was the different between '=>' and '>', a single iteration off.
Don't forget the 14 hour project to get an assembly program to talk to an ancient serial mouse and calculate velocity, only to get docked points for when the program didn't exit quite correctly.
Don't forget the 50+ hour group project I had this semester. Every Thursday night I was at the computer lab designing database abstraction objects with my group members, only to have an unhandled exception be thrown during the final demo because I chose the single item that we missed during testing.
All to learn and accomplish things that people, including myself, already take for granted.
Before you get me wrong, I'm not trying to say that its any worse than anything else. Really, I don't know. I can pretty safely assume that studying to be a surgeon would be considerably harder than taking a screwdriver to my laptop's internals. I'm just telling you that it isn't easy. There is never an easy solution. There are rarely nice equations to work with, despite the very close ties to mathematics. And don't believe for a moment that the machines are not brilliant, if not in their programming, then certainly in their design. Sure, they were wonderfully simple in their early days, back when the computers were "only as smart as the people programming them." We've had thousands of the world's top engineers studying to make them smaller, faster, and yes, smarter.
So what am I trying to say?
At some point this semester the work stopped being fun, and started being another job. There. I'm normal now. It had to happen sometime. Its a lonely world where things work and nobody knows why, nor cares to. Just fix it, don't tell me about it. Fine then.
But, you know, its not that its gone completely sour. I can still enjoy the field. I just have to do it on my own terms. Like my little side project with idkfa recently: probably the most fun I've had programming in a while. I've got to remind myself of all the amazing, magical things that enticed and brought me here in order to understand them. And now, for the better part of things, I know how they were made, and how to make them. I can be happy about that. Even when I'm memorizing Red-Black trees, or figuring out Dijkstra's algorithm. Both: very cool, by the way.
I've found another way to enjoy my field a little more. And that's by teaching people about it. It is not every day, week, or who knows how long, that I get to teach things to people. But when I do it makes my day. Seriously. I don't care the size of the question, if you want to know, I'll drop everything to help you understand.
So that's what has been on my mind the last month. I complain about college all of this here and now so maybe I'll be discouraged to in the future. So then in this future, I can concentrate on more important things. Like what to do afterwards. Maybe travel? Teach English somewhere neat? Not be coding my life away in a cubicle? I could do that for a while.
- Previous: Explicit Deconstructor
- Next: Lo