Thursday, 28 November 2013

SLOG Entry Week 10

I'm not an organized person. But Computer Science has given me a fresh excuse for why that isn't a personality flaw! My disheveledness derives itself not from a lack of interest in sorting, for the processes by which one can sort are fascinating to me, but from genuine laziness. And laziness is one of the cardinal virtues of a computer scientist. Like mathematical computations, sorting is not interesting to do, but is interesting to program a computer to do it for you. That way, all of your intellectual capacity goes to the much more interesting and engaging task of theory and implementation, and the computer handles the grunt (or Mathematics Undergraduate Student) work. This is not true just for sorting, but for all things, and is why I think programming is so appealing and enjoyable.

 This week was dominated by the test, which did not include sorting algorithms as part of the tested material (although my belief in this fact was shaken by inadvertent eavesdropping on some of my classmates in the 7 minutes before the start of the exam. This caused me much immediate pre-test anxiety, until I came to peace with my lack of preparation on this issue, realizing that part of the assumption of education is that repeated exposure to intellectual labour increases your ability to solve problems under stress. It was an eventful 7 minutes). To be perfectly honest, studying for my Analysis test this same week occupied the vast majority of my 'Reading Two Days' (which I am trying to get off the ground as a superior name for the 'Fall Break', as 2 days is not much of a break, and it's practically winter). That is not to say that I did not study for CS. I did. But some of my preparation was rushed. I spent the night before the test copying all of my code from each exercise and the assignment onto my 'aid sheet'. I think that the actual act of reviewing the material was itself more useful than having the code with me during the exam, but I suspect that's the intention of the 'aid sheet' mechanic, to trick the student into learning while assuaging her fears that might otherwise inhibit her ability to demonstrate her learning in a high-pressure environment. Pretty sneaky.

It was also not until the tuesday of this week that I successfully completed Lab 8. That was by far my worst lab. I had not had enough sleep or enough breakfast, and this fell in the time period between when I stopped drinking coffee (it causes me terrible migraines) and when I started drinking tea. That whole period is one gray blur, where all of my 'spare time' (if such a thing exists) was eaten up by naps. Anyhow, with an unclouded and amply caffeinated mind I was able to mount a successful assault on the lab, an excellent piece of educational assignment. It was difficult, but impossible to come through without a thorough understanding of binary trees, linked lists, and traversals. Superb. Once I had more or less wrapped my head around how my partner's functioning code was linking the 3 intermediate lists together into the end product, part b) was a snap. In fact, I must revisit that code now, as it would be instrumental in solving the most difficult portion of lab 10. It's almost as if these labs are working together to give us a unified understanding of some kind of material. Hmmmmmm.

I was pleased as I read through the exam before committing graphite to paper to note that it was fairly easy, and was all material that I understood thoroughly (mostly binary trees), with a taste of recursion. I finished my first drafts of all three programs in the first 20 minutes. The next 20 minutes went to bug fixes, most of which were removing incorrect 'self's that I had written in non-class-level functions (a few weeks of object-oriented programming can apparently form strong habits). By the last 10 minutes, I was efficiency-optimizing my code. My code that would never actually run. I got it down to 2 recursive calls instead of 4, utilizing a technique Aida had shown me in the previous lab. I wanted to make sure it didn't use up too much stack space on the paper, and that it wouldn't take the marker too long to run my code on pencilled test cases. Wasn't that considerate of me? I included my more efficient version alongside the first, which I felt was more explanatory, as I suspected that I was not being marked on efficiency, and did not want to jeopardize the correctness of my algorithm for the sake of showing off.

I was glad that my understanding of the data structures that we learned in class had culminated in my performance on this test, and I was perhaps equally glad that the test was easy enough for me to get an A. That's rare for a person in so many Math courses. Linked Lists in particular were a weakness until I reviewed them, as I had skipped that Lab to study for an Algebra midterm, which I failed. And then I dropped the course. Excellent prioritization. I should have stuck with computer science! Computer science treats me right, like the strong independent woman I know I am.

I took some time this week to read through the –well, readings, I guess they're called-- on sorting algorithms, and found them especially interesting. The visual representations were cool, although they were in no way, shape, or form as instructive as Danny's sorting of Second Cups in real time. It was a rare opportunity to watch a man push cups around a table without the lingering fear that he's trying to swindle you out of your money. If any money is being swindled out of me by the University, it's likely the University's own, or the provincial governments, and it's probably by Rosi service charges moreso than by honest fees asked and paid for intruction. Curse you, service charges. It's strange, I pay so much in service charges, and yet I don't feel that I get very good service. I pay you $20,000 a year for 4 of the best years of my life and you can't cut me some slack!? Come on!

No comments:

Post a Comment