Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10 3/23/84; site cbosgd.UUCP Path: utzoo!watmath!clyde!burl!we13!ihnp4!cbosgd!mark From: mark@cbosgd.UUCP (Mark Horton) Newsgroups: net.college Subject: Re: C.S. Dept. woes Message-ID: <1278@cbosgd.UUCP> Date: Tue, 17-Apr-84 20:08:13 EST Article-I.D.: cbosgd.1278 Posted: Tue Apr 17 20:08:13 1984 Date-Received: Wed, 18-Apr-84 19:07:09 EST References: <2540@csu-cs.UUCP> <3433@yale-comix.UUCP> Organization: AT&T Bell Laboratories, Columbus Lines: 38 Why do you want to draw a line? There are disadvantages to practical courses, and disadvantages to theoretical courses. Nothing is perfect. Are you proposing eliminating all courses more theoretical than X for some X? When I was an undergrad, one of the courses I hated most was Theory of Computation. It was hard (read impossible) for me to see how any of these bizarre things like Post Productions and Finite State Machines could possibly be useful in real life. I only got a B in the course, and never did understand the stuff in the second half very well. The next semester, I took a "Compiler Construction" course. One of my favorite courses. We started out with straightforward stuff: writing a scanner, assembler, context free grammars. But that problem of how to parse seemed impossible. Then LR parsing was introduced, and it used something called a DPDA. But a DPDA is just a Finite State Machine with a stack! Suddenly it hit me what good theory is - we get a lot of really useful practical tools with a strong theoretical base. When I did my thesis, I had to make certain functions table driven. The tables would be constructed separately for each programming language handled. How did I know the tables could handle any unforseen programming language? Well, the tables were a superset of pure Lisp, and pure Lisp is known to be equivalent to a Turing machine, which in turn can do anything that can be done in any computable function. It was a lot easier to convince my advisor that I could handle anything using this argument than "well, see if you can come up with something I can't handle." If you have 4.2BSD on your machine, you probably have sendmail. Sendmail is a nifty mailer whose flexibility, even on a binary only machine, is nothing short of amazing. How did Eric Allman embed this flexibility? He used a variation on Post Productions as address rewriting rules. If he hadn't taken a theory course, none of us would have sendmail today. I'll admit, it sure would have been nice to have some of this motivation when I was taking the course. Mark