~~~~Main
Home
Contact

~~~~Projects
vee
Computer Merit Badge
PatchLodge.com
Projects Summary

~~~~My Bookmarks
ACM@LSU CS Resources
Programming
Operating Systems
Computer Architecture
Databases

 

Fri Sep 18 13:58:58 EDT 2009

The  Computer Merit Badge: how I'd complete the requirements NOW;
Part 1

--

I have decided to begin a series where I take  some  of  the  re-
quirements  of  the  Boy Scout of America's Computer Merit Badge,
and answer them knowing what I know now. Interestingly, I do  not
believe I recieved the Computer Merit Badge as a Scout.

Requirement  1:  Give  a short history of computers. Describe the
major parts of a computer system. Give  four  different  uses  of
computers.

Given  that  this  really has 3 parts, I'm going to break this up
into several postings.

A) Give a short history of computers

Instead of giving the same worn history or chronology of the  de-
velopment of computer technology, I will take this as an opportu-
nity to provide some perspective on what a computer  is  and  how
long humans have been dancing around the concepts involved.

Before I begin, here is some basics that have come to be known to
Computer Scientists and Applied Mathematicians (i.e., the  origi-
nal Computer Scientists).

A  "computer" can be view as a device whose "power" depends on if
it has memory and how it accesses this memory. This is important,
so  I'll  say  this again.  A computer's power (i.e., in terms of
*what* it can do, not how fast it can do it) is directly  related
how  it can recall things that it has seen before. It's all about
memory and how this memory can be accessed.

This dependence on memory can be conceptualized in 3 major  ways.

1)  A device has no memory. All responses to input are predefined
with respect to in what the "state" the system is at the time  of
input.  These  devices are called "finite automata." Each machine
can recognize  only  certain  "strings"  of  input.  Strings  are
grouped  into  languages,  and the class of languages accepted by
these devices are called, "Regular."

2) A computing device that has what is referred to  as  a  single
"stack"  of (infinite) memory. It can remember things, but how it
can access this memory is constrained. In the theory,  these  ma-
chines are called "push down automata." The class of of languages
recognized by this machine is called, a "Context Free Grammar."

3) a. A computing device that has RANDOM ACCESS to its (infinite)
memory.  In  the  theory,  these machines are called, "Turing Ma-
chines." The class of languages recognized  by  this  machine  is
called, a "Universal Language."

3)  b. A Turing Machine with a FINITE amount of memory (like your
desktop computer!) is not as powerful as a TM with infinite memo-
ry.  Thus  your  desktop  computer  is, in the theory, actually a
"linear bounded automata." The class of languages  recognized  by
this machine is called, a "Context Sensitive Language."

What  can  these machines do?  Well, without going into mind-melt
mode (if I have not done this to you already), here are some  ex-
amples:

1)  examples  of  finite state automata: simple elevators, simple
vending machines -  basically  anything  that  given  some  input
(i.e., a button press), the system performs specific action based
on a. it's current state (i.e., on what floor  the  elevator  is)
and  b. the input (i.e., to which floor the person wishes to go);
this model has far reaching uses in software and electronics.

2) examples of push down automata are largely found in  in  soft-
ware;  they  are  used  widely  for  the  parsing  of programming
lanaguages by compilers (more on these in requirement 2!).

3) examples of Turing Machines do not exist; they  are  theoreti-
cal,  since  it is impossible to have something that has an infi-
nite amount of memory.

4) examples of a linear  bounded  automata  include  most  things
you'd  consider  a  "computer" by modern standards, but more pre-
cisely it is a general purpose device that can execute a  set  of
instructions  (i.e., a program) in a programming language that is
considered to be Context Sensitive (e.g., Assembly, C, Perl,  Ja-
va, BASIC, PHP, etc).

Regarding the computation power of these machines, including mod-
ern computers, consider my following  statement  very  carefully.
ELECTRONIC  COMPUTERS  ARE  NO MORE COMPUTATIONALLY POWERFUL THAN
THEIR MECHANICAL ANALOGS. What does that mean!!?  It means that a
computer  is  nothing  more than a machine, and that any computer
constructed using electronics and a circuit board  can  be  built
using mechanical parts. Clearly, the electronic computers will be
FASTER, but they are not more POWERFUL in terms of the  kinds  of
problems they can solve. To demystify the power of computers fur-
ther, there exist no program executable by a  computer  that  can
not  be done by a human being with a pencil and paper or by a me-
chanical device.  Again, electronic computers are clearly FASTER.
But they are not more powerful.

In  my  next installment, I will tie together the historical sig-
nificance of what I've said about the power  of  a  computational
device  having  nothing to do with how it is built - with sticks,
gears, and pullies - or with transistors and wires.


--
Powered by vee
Copyright © 2006-2010
FreeBSD
Perl
Qore