|
|
As you probably all know by now, I hold an honours degree in Computer
Science. (Upper-second class, no less.)
As far as I can tell, whoever created this cause was of the opinion that
"software" is a construct for storing, processing and retreiving
business data. In other words, you have a UI at the front (possibly
web-based), a large database at the back, and some complex business
logic in the middle.
The idea that there might exist "software" which doesn't fit this model
appears to have not occurred to anybody here. For example:
- Embedded software.
- Device drivers.
- Computer games.
- Mathematical moddeling.
- Signal processing.
- Artificial intelligence.
None of these really fit the world-view described above. Most of them
don't usually involve any kind of database. Device drivers usually don't
have a *user* interface of any kind. Computer games might be 3-tier, but
it's a hell of a lot different to a stock control system! And DSP and AI
are 90% mathematics.
Given the world-view above, it should come as no surprise that we
learned about things like project management, object-oriented analysis
and design, UML, CASE tools, relational databases, SQL, HTML, CSS, Java,
JavaScript, XSLT, TCP/IP, double-entry book keeping (I'm not making this
up), a little bit of management theory (Taylor, Maslow, etc.), and
systems testing.
There were also two modules taught by Mr Apathy. Mr Apathy was tasked
with teaching us about computer hardware, and later about operating
systems. In Mr Apathy's opinion, knowing about binary is "pointless"
because "the computer will do it all for you anyway". He believed that
"20 years ago it might have been necessary to know this stuff, but in
the modern world you're really never going to need this information. But
it *is* in the exam, so I have to teach it to you." I cannot tell you
what an inspirational motivation for learning this was.
(Basically his idea was that we'd all go out into the world and become
either computer consultants, or maybe Java programmers, and at that
level of abstraction, petty details like what addressing modes your CPU
supports or which IRQ services the serial port are irrelevant because
your compiler / OS will handle all that for you. I mean, it's not like
any of us are going to develop device drivers or anything, right?)
During my course, I recall seeing exactly one equation. I forget the
exact technical term, but it's basically Shannon's formula for
determining how much data you can theoretically shove down a noisy
communications channel. (This was during a networking lecture.)
When the lecturer wrote the formula on the whiteboard, everybody freaks
out and starts going "what the hell does 'log' mean?" And the lecturer
is all "oh, I'm sorry, I just *assumed* that 3rd year degree students
would know what a logarithm is". It turns out that actually, only two
people in the room knew about logarithms.
Obviously, one of them was me. Astonishingly, the other one was the
loud-mouthed, beer-drinking rugby hooligan from Manchester. O_O (And he
actually *did* know what he was talking about too.) I remember feeling
somewhat guilty for assuming the guy was an idiot just because he always
acted like one...
Actually, I say only one formula... some of the final year optional
modules I did also had a little more math in them than that.
The first one was Computer Graphics. This certainly involved lots of
*calculations*, but not all that much mathematics. There was a tiny bit
of vector and matrix arithmetic (which apparently scared the hell out of
everybody). I think the word "cosine" might have been mentioned in
relation to the vector dot product - useful for surface illumination,
not to mention backface-cull.
Our first CG assignment was to utilise Bresenham's algorithm to draw a
straight line. (Some people thought the guy was joking when he said
that!) We also looked at things like low-level clipping and filling
operations, but for the most part our work was conceptual. Certainly
there wasn't much exotic mathematics.
It was a nice module though. The guy lecturing it sounded like a
university professor. He talked very slowly and precisely, but without
overuse of jargon. He seemed actually good at explaining things in
simple terms.
The second one was a module entitled "Genetic Algorithms and Artificial
Neural Networks" (GAANN for short). Actually it seemed to basically
consist of all things AI-related. The lecturer for this had the weakest
grasp of English, and his speach was barely intelligable. If somebody
said they didn't understand something, he would repeat almost exactly
what he said the first time, but this time shouting. It was *very*
irritating.
(Also, for some reason his classification problems *always* involved a
man evaluating potential wives to decide which one to marry - and he
gave the ladies creepy looks while telling this example. Brrrgh!)
This module did involve some non-trivial math. It was so badly-explained
that I couldn't possibly tell you how advanced it was. Much of the
module revolved around feed-forward ANNs trained by back-propogation,
which is a kind of "grædiɛnt æsɛnt miθæd". For back-propogation to work,
the transfer function needs to be non-linear. And there was something
about a "næbl" operator.
IIRC, the part about generic algorithms lasted about an hour.
It's a pitty really, because it seems like a really interesting subject...
So anyway, that's what *I* did during my degree. Anybody out there do
anything more interesting?
My mum keeps telling me I should do a mathematics course. Personally,
I'm not sure where the hell I'd get the time or the money from. (It's
not exactly cheap.) I guess it *is* kind of amazing that I know about
the Laplace transform, given that I have never at any point in my life
been "taught" anything beyond simple arithmetic.
Similarly, I know about how to wire logic gates together to make
interesting devices. And I know about Dijkstra's shunting algorithm.
(Unfortunately, I'm never sure exactly how to spell the name though!)
Also... I really ought to get a job where all this stuff is useful! I
wonder if such a thing exists?
Post a reply to this message
|
|