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