BFOIT - Introduction to Computer Programming

What's Computer Programming
Screencast



   Welcome to BFOIT's Introduction to Computer Programming website.

   This is a short screencast overview of the first lesson:
   What is Computer Programming?

   Computer programming is composing/authoring of a process/procedure
   for doing something, BUT IN INCREDIBLE DETAIL.

       proc-ess / Noun:
       A series of actions or steps taken to achieve an end. 

       pro-ce-dure / Noun:
       A series of actions conducted in a certain order or manner.

   In a more advanced world (science fiction today) it will be possible to
   teach the computer to do something by describing what it is that you want
   in your native language, English in my case.

   But, as of now, this is pretty much fantasy.  Why?  This lesson contains
   an experiment that you can perform which demonstrates why. Participants
   in the experiment write procedures for How to Make a Peanut Butter and
   Jelly Sandwich. Then, someone plays the part of a computer and tries
   to perform the procedures. When this is done properly it demonstrates
   how much information is assumed in normal human communications.
   Think about it... computers have absolutely no common sense.

   So if we can't program a computer in our native language, how is it done?

   Almost all of the computer programming these days is done with high-level
   programming languages.  For BFOIT's introductory lessons, we start with
   the Logo programming language.

   Logo has early ties to MIT and a scientist named Seymour Papert. It has
   a "low floor and high ceiling" which means it can be learned easily, but
   is quite capable. It is a derivative of the LISP programming language
   which itself has been around since the 1950s and is still used today to
   explore very complex stuff, as an example research in the area of
   artificial intelligence.

   Let's look at some examples of programming a computer in Logo.

   -------------------------------------------------------------------------

   The first program simply introduces itself - it prints out "Hello world!"

   A slightly more complex program prints the result of multiplying a
   random number in the range of 0 - 14 by 10.

   And, if we get Logo to perform this program again you'll see we get
   different results.

   Finally a program that is complex enough that we have to create it in
   the Editor provided.  It's a function named getMax. It outputs the
   largest number from a list it is given.

   When I invoke this procedure in the CommandCenter, it produces the
   proper results.

   As you can see, the Logo programming language is sort-of like English
   but not quite... It's got square brackets and colons where you don't
   expect them.  And, the ordering of the words seems a bit strange...

   These differences are important... they make it easier to translate
   what we want done into the language of a computer...

   -------------------------------------------------------------------------

   Below the level of programming languages, one step above a computer's
   native language is what is known as assembler language where everything
   is given human-friendly names.  A programmer works with operations that
   the microprocessor knows how to do but they have names.  The
   microprocessor's registers and addresses in the computer's memory can
   also be given meaningful names by the programmer.

   Remember our Logo getMax example?  Table 1.1 contains a similar program
   in assembler; it locates the maximum number in an array (a group of
   numbers in sequential memory locations). Take note of the  "Comment"
   column; the remarks in it are only for humans, the computer ignores
   them.

   -------------------------------------------------------------------------

   Before I can show you what a computer's native language looks like, lets
   look at what it contains - bits.
   
   [A] computer successfully creates the illusion that it contains
   photographs, letters, songs, and movies. All it really contains is
   bits, lots of them, patterned in ways you can't see.

   Think of bits as light circuits like the ones in Figure 1.1. A bit is
   either off, which means it is a zero, or it is on which means it's one.
   its and a light circuit - ones and zeros.

   -------------------------------------------------------------------------

   Since a single bit is quite limited computers manipulate groups of bits.

   In the next three sections of this lesson I go into detail describing
   how bits are used to represent

   numbers (Integers),

   ASCII characters, and

   Pixels.

   -------------------------------------------------------------------------

   So... a computer's native language must also be bits. How?

   Well, each instruction a computer can perform is identified by an
   opcode (which is short for operation code). An opcode is just a number.

   Instructions and the things they operate on are in memory and each
   location in memory has an address - which is simply a number.

   Like your brain has working memory, microprocessors have registers
   for quick access to stuff. They are also addressed in instructions 
   by groups of bits.

   Yes, the  language a computer understands is just bits.

   Here is a robot computer simulator you can explore if you are
   interested.

   -------------------------------------------------------------------------

   Summary

   As I said at the start of this lesson, programming is just describing
   how to do something.  But since computers don't understand our native
   language and we would go crazy trying to describe something with just
   ones and zeros, which is what the computer does understand, we use
   computer programming languages.

   In the following eighteen lessons you will learn the basics of computer
   programming.  We will work together, writing programs in the Logo
   programming language.  It should be fun.

   -------------------------------------------------------------------------

   When was the last time you got to play a game as an exercise?

   Here is a game that will help you get good at working with
   binary numbers.

   -------------------------------------------------------------------------

   Blown to Bits - check it out!