UVSC BYU U of U etc was"Software Engineering (was Re: Java)

Alex Esplin alex.esplin at gmail.com
Fri Feb 16 14:38:36 MST 2007

On 2/16/07, Daniel C. <dcrookston at gmail.com> wrote:
> On 2/16/07, Alex Esplin <alex.esplin at gmail.com> wrote:
> > If you want to learn to write code you go to ITT or whatever tech
> > school has a less painful, less long program and learn how to
> > write code.
> > The idea behind learning Computer Science ... is that if you
> > learn to think about computing and why we do things the way
> > we do, and learn how to code as you do so you are
> > prepared to solve new problems by applying the theory.

What I meant to say was that application of theory is partially
implementation agnostic.  A stack is a stack whether it is implemented
as a linked structure or an array.  The theory is that you have a data
structure where the last thing on is the first thing off.  However,
and I think we are in agreement here, it's very hard to learn much
about the theory of a stack without having an idea of how you would
implement it.

> I would argue that you can't learn to code without learning the
> reasoning behind it to some extent.  That learning to code and
> learning the theory behind your code goes hand in hand - you can't
> learn one without also learning the other.  Since code and the ideas
> behind it are so closely joined, you shouldn't be able to learn a
> theory without it's application in code being transparent.

This is why I have such trouble with the idea of the Science part of
CS being removed from the implementation.  If you don't know how to
computationally solve a problem you can't code up the solution.  More
on this below.

> Which brings us back to "Why say that you're studying Computer
> Science, with capital letters, when the science and application are so
> closely joined that you can't have one without the other"?  Unless
> you've got math envy and secretly wish you were there instead of here.

Because the original argument of "anybody who's any good at CS would
never settle for a professor's salary" implied that the theory and the
code were much more loosely coupled (if coupled at all) than they are.
 I would say that those who learn how to quickly whip up an
application in IDE x and language y are not those who will be solving
the major computing problems of the future because all they know how
to do is write code for problems that have already been solved with
computers, not how to use a computer to solve a problem that
previously hasn't been solved in computing.

Alex Esplin

More information about the PLUG mailing list