miguel at thewizardstower.org
Fri Feb 7 06:22:28 PST 2003
* Rob Park <eocnex at hnyoregn.pn> [03-0207 12:57]:
> Alas! Jonathan Wright spake thus:
> > At around Wed, Feb 05, 2003 at 09:46:23PM -0700, Rob Park constructed the
> > following notation:
> > > From what I've discovered, take computer science only if you enjoy being
> > > bored to tears.
> > i'd totally agree with that! :) They teach you everything that you
> > didn't really want to know and will most likly never be of any use, and
> > fuck all that means anything in the real world!!!! :'(
> > Thank god i've been going computers for a long long time before this! :)
> Actually, I blame my boredom on my extensive previous exposure to
> computers. Some of my classmates had never seen a line of code in their
> life when they first took Computer Science, and they were truly
> fascinated and intruiged by the concepts being taught (OO, recursion,
> etc). I, on the other hand, had been programming for about 6 years when
> I took my CS course, and aside from the fact that it was in Java (which
> I'd never seen before), I still knew all the concepts, learned nothing
> of practical value, and skipped most of the classes (and still got 80%
> on the final, but now I'm just bragging).
I think one problem is many people, and many universities, equate
computer science with programming. They are not the same thing!
Programming is one of two languages a computer scientist uses to
describe the problems he's trying to solve, the other being math.
Programming is NOT the problem of the computer scientist. As a matter of
fact there are CS people who don't code at all!
I'm a hardware person but I find CS fascinating. Here are some examples
of CS problems I like:
- automata. It's just fascinating to see an entity make his own
decisions and react to the environment. Also there's the problem of
proving it correct.
- Turing machines. Imagine the power of a discipline where all you
really need to understand is an extremely simple device. A problem for
hardware engineers: what's something a Turing machine can do but a
finite-state machine can't?
- Algorithm design. One could dedicate his entire life just to study
algorithms. Here's something that just blows my mind: there is a way
to translate a math theorem into an algorithm, such that if you can
prove that the algorithm stops, then you have proved that theorem is
- Complexity. Just one example: there is a number, called Omega, that
has the following property: "knowing it to an accuracy of n bits will
enable you to decide the truth of any provable of finitely refutable
mathematical theorem that can be written in less than n bits." (quoting
from Cover, Elements of Information Theory).
Another: there are some algorithms that are so complex (frequently
iterative) that the only known way to estimate its complexity is
geometrically, i.e. by studying the volume of certain polytopes
- Software engineering. How to manage millions of lines of code? There
are ways, but there might be better ways still unknown.
- Validation. This problem is just huge. It can be highly theoretical
too, just look into formal verification methods.
- Data structures. Did you know that a great many problems in hardware
design can be written as questions about a directed, labeled graph?
There are others: compilers, optimization, language design, OS design,
This is the kind of stuff they should be teaching at univeristies in
order to make CS interesting. Programming is just the mechanical part of
it, kinda like what typing is for a writer.
I highly recommend reading the Feynman lectures on computing for anybody
interested in computer science beyond programming.
> So, yeah. Maybe I should've been a physics major, I'd certainly have
> learned more.
Me, if I were into CS, I'd study a BS in math and then a MS in CS.
Sorry for the long post.
Unsubscribe: send email to listar at linuxfromscratch.org
and put 'unsubscribe lfs-chat' in the subject header of the message
More information about the lfs-chat