IB Computer Science Vocabulary                            by Dave Mulkey, 2001, Germany


(1834) He conceived the basic structure and four main components present
in virtually all computer systems:

    CPU = Central Processing Unit, i.e. Pentium
    INPUT device(s) = i.e. keyboard, mouse
    OUTPUT device(s) = i.e. monitor, printer

Modern computers have added BACKING STORE (disk drives) in most systems.
Most business systems incorporate ARCHIVE STORAGE (tapes) as well.
In the future, virtually all computers will COMMUNICATE (modem, network)
with other computers.


= shows components and modules in a system, with lines showing connections between them

~ The diagram below shows the connections between
  components in a Stand-Alone Computer System (LOCAL components)

|      INPUT           CPU (Central Processing Unit)         OUTPUT    |
|   +----------+      +----------------------------+        +--------+ |
|   | Keyboard |      |Arithmetic/Logic Unit (ALU) |        | Monitor| |
|   | Mouse    |----->|............................|------->| Printer| |
|   | Scanner  |      |     Control Unit           |        | Speaker| |
|   +----------+      +----------------------------+        +--------+ |
|                          |                     |                     |
|         +-------------------------+          +------------+          |
| MAIN    | RAM = programs and data |   DMA    | Hard-Disk  | BACKING  |
| STORE   |.........................|<-------->|Floppy-Disk |  STORE   |
(internal)| ROM = operating system  |  Direct  |Optical-Disk|(external)|
|         +-------------------------+  Memory  +------------+          |
|                     |                Access        |                 |
+------------------ Port -------------------------- Port --------------+
                      |                              |
                +----------------+             +-----------+ ARCHIVAL
 COMMUNICATIONS | Network Adapter|             |   Tape    | STORAGE
   (remote)     |   Modem        |             |"streamer" | (remote)
                +----------------+             +-----------+


= how the user communicates with the computer system. Older computers used a text-based, command-line system, e.g. MS-DOS or UNIX, where the user must type commands.
Modern computers use a Graphical User Inter (GUI).


= a text-based interface for giving commands to the operating system,
as in MSDOS or Linux.

Users must type commands, often using strange words and symbols.

This was popular until the 1980's, when GUI's became popular.

The commands in the picture:
- change to the Windows directory
- copy all .BMP files to the floppy
- delete all the .BMP files from
      the c:\windows directory.


~ MS-Windows, MacIntosh, X-Windows (UNIX).

= Graphical User Interface

Icons (pictures) represent files and directories. A mouse is used to give commands.

Another name for this is WIMP – Windows, Icons, Menus, Pointer (mouse).

The GUI improves standardization across applications. Each OS contains many standard subroutines that applications can use, so applications from different software companies still present similar interfaces. This makes things much easier for the users. For example, most Windows applications use the same standard File-Open and File-Save dialogs.


~ Encyclopedia on a CD-ROM

= a system with a large variety of I/O (input/output) modes and devices,
that work together to produce a complex "natural" interface.
Multimedia presentations usually include most of the following:
   text , sound , graphics , animation , video


= Central Processing Unit.

In a PC, it's the microprocessor, e.g. Pentium chip.
In a main-frame, the CPU is the main unit (box), a large version of a PC box.
It often contains many microprocessors, but does not contain disk drives.

The CPU is divided into two sections: ALU and CU

  ALU (Arithmetic Logic Unit)   |  CU (Control Unit)      
        Registers                  |    Address Bus Controller      
        Arithmetic Circuits        |    Data Bus Controller
        Logic Circuits             |    Interrupt Controller

The ALU does arithmetic calculations and evaluates Boolean operations (decisions).
The CU controls communication between the CPU and RAM and other chips.


Main memory - where running programs and active data are stored.
This includes RAM and ROM. The RAM is volatile (changeable) and is erased
whenever the power is turned off. The ROM is non-volatile (permanent).

Memory is divided up into bytes (8 bits) and words (16 or 32 bits).
Memory works like an array – each memory location has an address and a value.
In some programming languages, the memory can be accessed directly, by a command like:               MEM[12345] = 65
which places the value 65 into memory location #12345.


Permanent storage, including hard-disks, floppy diskettes, tape drives, Cds.

In pocket-size computers, flash memory is used as secondary memory, as disk-drives
would be too large.


Read Only Memory.

Permanent (non-erasable) memory containing lots of low-level operating system routines.

Contains the BIOS (Basic Input/Output System), including the BOOT routines which are the first programs to run when the computer is powered on.

Generally these BIOS routines are never changed, but some newer PCs use FLASH EPROMs which can be upgraded.


Erasable Programmable Read Only Memory

ROM is permanent and cannot be changed. Flash EPROMs can be reprogrammed. The entire chip (i.e. 64 Kb) is erased at once (by an electric current or ultra-violet light) then rewritten all at once. This is a dangerous process. If the computer crashes during this process, it can never be restarted. A BIOS upgrade is usually only necessary if very new hardware is added to the system (e.g. Very large hard-disks, strange I/O devices, etc.)


Basic Input/Output System

Contains lots of low-level subroutines written in machine language.
These manage low-level control of hardware - i.e. reading/writing a disk sector,
updating the system clock, accepting keyboard input, etc.


Random Access Memory

The main part of the computer's memory. This can be changed easily and is used for storing programs and data (temporarily) inside the computer, when programs are running.


When main memory gets full, the OS can swap some of the contents
onto the hard-disk (into a temporary file) to free up some memory space,
to load other programs or data. When needed again, the data in the temporary
file is swapped back into main memory. This is much slower than using
main memory, but creates a virtually unlimited amount of memory.
Old operating systems (like DOS) did not support this, but all modern
multi-tasking systems support it (Windows, Linux, MacOS)


Hardware for getting data into the computer, most commonly:
  --> keyboard, mouse, joy-stick, microphone, light-pen, scanner


an input device shaped like a stylus (pen), containing an optical sensor,
which can be used to draw directly on the computer screen.


Uses a laser beam to read the stripe-codes found
on manufactured packages - you see these
in use in the grocery store at the check-out counter.


a pressure-sensitive (or electro-magnetic sensitive) drawing surface -
you draw on this with a special stylus (pen) to input a picture.
As you draw, the picture appears on the screen.
This is more comfortable to use than a mouse.


works like a photocopier, to input a photograph or a printed page.
Together with OCR software, this can input a printed paper document
and change the picture into a word-processing document.


OCR - software that functions together with a scanner,
to change a bit-mapped picture from the scanner
into a text-file of ASCII codes.

OCR is a very difficult process for the computer.
It must recognize letters, which may appear in any
font or size. If the page is not perfectly straight,
the letters may be slightly tilted.
The printed document may also be faded,
or it may be a photocopy with lots of dirty grey areas.


MICR - the strangely shaped letters on the bottom of personal checks.
These are read by a magnetic scanner - not by an optical scanner.


Hardware for getting data out of the computer, most commonly :
--> monitor, printer, speaker, plotter, flashing lights


it draws pictures by moving a pen around on a sheet of paper. Uses two
motors to control vertical and horizontal motion independently. This
is better than a printer, because it can draw straight lines and curves
without jaggies, since it uses a real pen instead of dots.


the computer's screen, also known as a CRT, VDU, or LCD


Visual Display Unit


Cathode Ray Tube


Liquid Crystal Display, found in pocket calculators and notebooks


hardware where data can be saved and retrieved later, commonly:
Hard-disk, floppy diskette, tape-drive (streamer)


Electrically erasable programmable ROM, which can be erased rewritten
INSIDE the computer. A FLASH of electrical current does the erasing,
erasing the ENTIRE contents, which is then TOTALLY rewritten


Write Once, Read Many - a type of CD disk in which large amounts of data
are written once, and then accessed many times. This is not sensible for
data-bases which are frequently changed.


storing information off-line, for example on a tape which is not
in the computer. An archive file might contain old records which are
no longer used, but need to be kept for historical or legal reasons,
or they may contain backup copies of important data. Archives should
be kept far away from the computer, so that fire, sabotage, or theft
cannot effect BOTH the original copy (in the computer) and the archive.


Keyboard, printers, plotter, scanner, etc. Other "extra" pieces which
are not an integral part of the main unit.


MOdulator-DEModulator - an interface between a PC and a telephone. The
modem translates the computer's DIGITAL signals into ANALOG sound waves
which can be transmitted over telephone lines. At the other end,
another modem translates the signals back to digital for another
computer to use.


a keyboard and monitor used to communicate with a central computer.
The user only has the input and output devices at his/her desk - the
computer itself is somewhere else. Earlier terminals consisted of a
TELETYPE - an electric typewriter, printing on paper.


a chip that can perform many complex functions, usually including
input, output, and arithmetic. A microcomputer contains many
microprocessors - the CPU, a keyboard controller chip, several to
control the disk drive, a graphics chip, etc.


the circuits which carry signals from one chip to another. The CPU puts
an address on the ADDRESS BUS, and receives data back from the memory on
the DATA BUS. A "true" 16 bit microcomputer has a data bus with 16
circuit lines. 386SX computers have 32-bit registers, but only a 16 bit
data bus. This is slower, but cheaper to build. A 486 is a "true" 32
bit processor, using a 32 bit data bus. Modern Pentium based computers use a 64-bit databus, thus transferring 2 full 32-bit words at a time. PCI boards provide a bus linking the memory directly to the I/O cards, bypassing the CPU and allowing I/O to continue at the same time the CPU does something else.


DMA - this allows a peripheral device (e.g. disk drive or graphics card)
to read and write data to the RAM, without sending through the CPU.
This allows the CPU to continue running a program, simultaneous with
I/O operations.


the total amount of data which can be transmitted per second.
A typical 56 KiloBit modem has transmits 7 KiloBytes per second.
A mother board running at 100 MHz with a 64 bit data bus can
transfer 8x100 = 800 MegaBytes per second.

Two ways to increase bandwidth are:
1 – increase the signal frequency
2 – increase the bus width

Recently PCs have appeared with a faster front-side-bus (FSB) running at 233 Mhz,
instead of the old 66 Mhz and 100 Mhz machines.

Larger bandwidth is the biggest improvement required to support multimedia applications.


temporary memory for accepting data from another device. This is
especially useful for connecting a fast device to a slower one.
A printer uses a 4 MB buffer to quickly accept all the data for a
print job, and then prints this data to paper while allowing the
computer to continue with other tasks.

When you watch streaming video on the Internet, the browser will buffer several seconds of the video before it starts showing it. Then if the video stream gets interrupted or slows down, the computer can continue playing the video at the correct speed while waiting for the data.


using 2 buffers - one is being filled with new data at the same time
that the other is being emptied. This is common with faster devices such as hard-disks, allowing the system to continue transmitting at the same time as the disk-drive is writing the data. This isn't very useful if the device is slow, as both buffers quickly become full anyway.


BInary digiT. This is the smallest unit of computer memory. It can
contain a value of 0 or 1. Every bit is physically represented by 1
transistor. In old computers, a bit was represented by a magnetic
"core" - a tiny magnetic ring magnetized in one polarity or the other.


The smallest addressable unit of computer memory. It is not possible to
store a single bit in memory - an entire byte most be loaded into the
CPU, a single bit changed, and the entire byte stored back into memory.
In most computers, 1 byte = 8 bits , storing a value between 0 and 255.


The size of a register, thus the standard amount of data for arithmetic
operations. In a "16 bit" computer, 1 word = 2 bytes = 16 bits. A
word could be used to store a value between $0000 - $FFFF, which is
0 - 65535 in decimal. In a "32 bit" computer, registers are 32 bits
"wide", and so 32 bits can be added to 32 bits in one step.


a memory location inside the CPU. Registers can be used to do
arithmetic, logical operations, or temporarily hold results. To add two
memory locations together, both values are copied into registers, the
registers are added, and the answer stored back into memory.


(KB) Actually 1024 bytes, not 1000. 1024 = 2^10 . In binary,
powers of 2 is are "round" numbers, rather than powers of 10 (decimal)
A 56 K modem is NOT 56 KB per second, but rather 56 Kb (kilo-bits),
which is 7 KB per second.


(MB) 2^20 = 1048576 bytes. The capacity of a 3.5" floppy diskette
is 1.44 MB. An old fashioned hard-disk holds 40 MB.


(GB) 2^30 bytes - the approximate capacity of a modern hard-disk


(TB) 2^40 bytes - a storage capacity for the next generation of
computers, which will commonly use multimedia environments


(memory location) a number which tells WHERE something is stored in the
computer's memory. Every byte has its own address. In the original
IBM PCs, the addresses were 20 bits long, allowing addresses up to
1 Megabyte, but 64 KB was allocated to the graphics-card, another 64 KB
was allocated to the ROM BIOS, 128 KB was reserved for expansion. In
the end, MS-DOS was restricted to 640 KB - "conventional memory". This
was adequate in the 1980's, but not adequate for graphical-user-
interfaces (GUIs). Modern PCs use 32 bit addresses, allowing access to
2^32 bytes of memory (4 GigaBytes).


     +-----+      | Program |
     | CPU |<---->|---------|
     +-----+      | Data    |

John Von Neumann (1945) is responsible for the basic concept of most
modern computers. There is a single CPU (Central Processing Unit), which
does the following:

 - Fetch the next instruction from the memory
 - Decode the instruction
 - Fetch data from memory (if required)
 - Execute the instruction
 - Store data to memory (if required)
 - Move to next instruction and repeat

Von Neumann receives credit for the STORED PROGRAM CONCEPT - programs
are stored in the same memory with the data, and the CPU can read the
program commands via the same process that it reads the data. The SINGLE
CPU is now considered a severe limitation. Modern systems use multiple
CPU's to accomplish PARALLEL PROCESSING - the limitation of a single CPU
is called Von Neumann's Bottleneck.


Dependence on a single CPU, executing instructions one at a time, makes
the system slower than a PARALLEL-PROCESSING system, where many CPUs
execute many different commands at the same time. Slowness caused by a
single CPU is called the "Von Neumann Bottleneck." In actual fact,
modern computers all contain many processors - the graphics card
contains a microprocessor which is constantly busy refreshing the
screen, at the same time that the CPU is doing calculations and giving


When many components are busy at the same time, and they want to talk to
one another, one component will send an INTERRUPT SIGNAL to get the
attention of another component. When you press a key on the keyboard, a
microprocessor in the keyboard interrupts the CPU, and the CPU responds
to this signal (HANDLES the interrupt). Systems that depend on
interrupts are called INTERRUPT DRIVEN. If too many interrupts occur in
a short time, the system can get bogged down. If a device interrupts a
second time before the first interrupt has been handled, the system
might crash. To prevent system crashes due to conflicting interrupts,
many systems assign PRIORITIES to interrupts - for example, the disk
drive might have a higher priority than the printer. Another method is
to DISABLE interrupts - this means that no interrupts are permitted if
the CPU is already busy handling an interrupt. For example, a
disk-drive will probably disable interrupts until it is IDLE (finished
reading or writing). An INTERRUPT FLAG REGISTER contains bits which
enable or disable specific levels of interrupts - e.g. during disk
access, keyboard interrupts might be disabled. An INTERRUPT VECTOR
contains the address of the subroutine which handles the interrupt.


an alternative to interrupt driven systems. Rather than waiting for
a keyboard interrupt, the CPU might actually test each of the keys
on the keyboard periodically to see whether it has been pressed.
This is an old-fashioned idea and no longer popular, as it wastes
CPU time to check for events even when nothing has happened. Interrupt
driven systems allow the CPU to continue working without paying
attention to the keyboard, until something actually happens.


486 systems contain CACHE-MEMORY on the MOTHER-BOARD. The CACHE is a
small amount of very fast memory which the CPU uses for temporary
storage. Accessing the CACHE is faster than accessing main-memory. The
CACHE loads and saves to main memory in large BLOCKS, not a single byte
at a time. Pentium chips have LEVEL I (e.g. 16 KB) cache which is
contained directly in the CPU chip. A LEVEL II cache is larger (e.g. 256 KB)
and connected directly to the CPU on one side, and the RAM on the
other side.


Fetch, decode, execute, store. A machine language instruction is
written as numbers (not letters). The CPU FETCHES an instruction
by loading bytes from the memory. The instruction is DECODED by
looking at BIT FIELDS to decide what kind of operation (e.g. ADD or
MOVE) is to be performed, where the OPERANDS come from (e.g. registers
or memory), and where the result should be stored. The instruction
is then EXECUTED (performed), and then the results are STORED in the
specified place.


a method to speed things up is to process instructions in an
assembly line fashion. Several instructions are in the pipeline in
various stages - DECODE, FETCH, EXECUTE, STORE. The CPU
completes a different operation in each of 4 instructions,


Reduced Instruction Set Computer - increases speed by reducing the
variety and complexity of machine language instructions. That was the
original meaning, but the term has expanded to encompass many concepts
which attempt to speed up the CPU - pipelining, parallel-processing,
cache-memory, etc.


Base 2. In base two, the place values are powers of 2, digits are 0,1.

                       128 64 32 16  8   4   2  1 <-- Place values
10011010 =      1   0   0   1   1   0   1   0 = 128 + 16 + 8 + 2 = 154 decimal

This produces UNSIGNED (positive only) integers from 0 to 255.


To deal with SIGNED (+ and -) numbers, modern computers use this binary system.
The HIGH ORDER bit (128) is treated as negative, so it counts as -128.
In this system, a byte holds a number between -128 and +127.

01010101 = 64 + 16 + 4 + 1 = +85

11010101 = -128 + 64 + 16 + 4 + 1 = -43

10000000 = -128

01111111 = +127

11111111 = -128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 = -1

Two other systems (outdated - no longer used) for SIGNED integers were


A binary system where the leading bit counts -127. A byte counts from
-127 to +127 ( 10000000 to 0111111) There are two versions of zero -
either 00000000 or 11111111. The 11111111 version is called
"negative zero". This system was popular in the 1960s and earlier, but
the programming problems caused by the negative zero made it unpopular.
This system is still used in a few main-frames.

01010101 = 64 + 16 + 4 + 1 = +85

11010101 = -127 + 64 + 16 + 4 + 1 = -42

10000000 = -127

01111111 = +127

11111111 = -0


A binary system where the leading bit is simply a minus sign, with no
value. The other seven bits tell the size (magnitude) of the number.
Like the ONE'S COMPLEMENT system, there is a negative zero ( 10000000 ).

01010101 = 64 + 16 + 4 + 1 = 85

11010101 = - ( 64 + 16 + 4 + 1 ) = -85

10000000 = -0

01111111 = +127

11111111 = -127


Base 16. Place values are powers of 16. The digits are:
0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F (so $F = 15 decimal).

               4096 256 16 1 <-- Place values
4A2F hex = 4    A    2   F = 4*4096 + 10*256 + 2*16 + 15*1

= 18991 dec

Conversion from binary to hex is easy - group bits in groups of 4.

10011010 bin = 1001 1010 = $ 9 A $ 3 7 = 0011 0111 = 00110111 bin


Base 8. Digits are 0,1,2,3,4,5,6,7 . Place values are powers of 8.

437 octal = 4*8^2 + 3*8 + 7 = 287

To convert from binary to octal, group bits in groups of 3.

11001010 bin = 11 001 010 = 3 1 2 octal


another term for base, as in base-16 and base-2

So decimal is radix 10, binary is radix 2.


In decimal, the separator between the integer and fraction portions
of a number is called the decimal point. The general term for this
(in any base) is the radix point. Notice that in base n, the place
values are powers of n. The positive powers are to the left of the
radix point, and the negative powers are to the right, like this:

Decimal : 345.27 = 3*100 + 4*10 + 5*1 + 2*(1/10) + 7*(1/100)
= 3*10^2 + 4*10^1 + 5*10^0 + 2*10^-1 + 7*10^-2

Place values = 10^2 10^1 10^0 . 10^-1 10^-2 10^-3
                         100   10    1      . 1/10    1/100  1/1000

Binary : 101.011 = 1 * 4 + 0 * 2 + 1 * 1 + 0*(1/2)+ 1*(1/4)+ 1*(1/8)
= 1*2^2 + 0*2^1 + 1*2^0 + 0*2^-1 + 1*2^-2 + 1*2^-3

Place values = 2^2   2^1   2^0 . 2^-1   2^-2   2^-3
                         4      2       1    .  1/2      1/4     1/8


the standard size of a number in a computer, measured in bits. It is
normally the same as the size of a REGISTER in the CPU. Computers are
classified as 8-BIT, 16-BIT, 32-BIT, according to the size of a word.

8-BIT - a register contains a single byte. UNSIGNED numbers count from
0 to 255 (2^8-1), and SIGNED numbers from -128 to +127 (2^7-1)
The Commodore 64 home computer was an 8-BIT machine.

16-BIT - a register is 16-BITS WIDE. In this system, UNSIGNED numbers
count from 0 to 65535 (2^16-1), and SIGNED numbers range from
-32768 to +32767 (2^15-1). IBM-PCs with 8086 (XT) or 80286 (AT)
CPU's were 16-bit machines.

32-BIT - a register is 32 bits wide. UNSIGNED numbers from 0 to 2^32-1.
The 80386 and 80486 microprocessors have 32-bit registers.

24-BIT - a register is 24 bits wide, giving numbers from 0 to 2^24-1,
which is about 16 million. Super VGA graphics cards provide 24-BIT
COLOR ("true-color"), meaning 16 million different colors. A single
PIXEL is represented by a 24-bit number telling its color. Then a
640x480 graphics screen needs 640x480x3 = 921,600 bytes.

64-BIT - the typical word-size for a super-computer (e.g. a Cray I)


the error which occurs when a value is too big to store in the
specified variable type. For example, the maximum value of a 16-bit
signed integer is +32767.


the error which occurs when a decimal value is too small to store in
a floating point number. This actually means that the negative
exponent is too large to store in the exponent storage space.
If a 1 byte, signed exponent is used, then the smallest number possible
is 1 x 2^(-128), because -128 is the largest negative number which can
be stored in one byte.


(interface card) - an extra circuit board used to connect a device to
the CPU. It provides an INTERFACE, translating signals so the computer
and the device can communicate successfully.


a connection between the computer and an external device. This is
basically a memory-locations which is "mapped" to a connector. To
transmit or receive data, the computer uses a memory-address to identify
the specific port. The SERIAL PORT is used to connect to a mouse or a
modem. The PARALLEL PORT is used to connect to the printer or some
other external device. This is not the same as an adapter, which
connects directly to the main bus and does not have a corresponding
memory address.


A port with only one data wire, so it sends 1 bit at a time. Modems use
serial ports, since a telephone wire is a single wire and can carry only
one bit at a time. Actually, modern modems cheat and use a variety of
frequencies, so they manage to send 2 or more bits at the same time.
But the computer is only sending a single bit to the modem.


A port with 8 data wires, so it can transmit an entire byte at once.
Parallel ports are typically used by printers, but a printer can also be
connected to the serial port. The wires running next to each other
cause electro-magnetic interference (inductance), so the signal is only
reliable over short distances (a couple meters.) If a printer uses a
serial cable, the cable can be 10 meters long or more and still deliver
a reliable signal.


(assembly language) The language which is actually used by the
computer's CPU. Instructions are extremely primitive, and each
instruction is represented by a number(s). Programmers usually use an
ASSEMBLER, which translates "mnemonic" codes such as "MOV AX,$1234" into
the equivalent numbers for the machine language instruction.


For example FORTRAN (the oldest,1960), COBOL, PASCAL, BASIC. The
instructions are more powerful and easier to use than in machine
language. Most programmers utilize high level languages because they can
develop programs more easily and quickly than in machine language, but
the resulting programs do not run as fast as machine language programs.


running more than one program at a time. Actually, the programs don't
really run simultaneously. Instead, each program runs for a very short
time (e.g. a millisecond) and then the next program gets its turn.
This short time is called a "time slice". This allows users to switch
quickly and easily between various applications. Windows does this,
but DOS does not.


A PC is set up for only one single-user. It might be used by various
users at various times, but never more than one user at one time.
Main-frames are generally set up to be by many users simultaneously -
it could be hundreds or thousands of users. Each user needs a
"terminal" communicating with the main-frame. This allows hardware,
software, and most importantly DATA to be shared among many users.


(programs) Most computer USERS do not write programs. Instead, they buy
a program which will do the desired job and simply learn how to use it
properly. Some common types of applications programs are: Word
processor - for writing letters Data-base manager - for manipulating
databases Spreadsheet - for planning budgets and doing economic
projections CAD - Computer Aided Design, used be engineers to draw


(hierarchical decomposition) process of breaking a problem into pieces,
then breaking these pieces into smaller pieces, until the pieces are
small enough to begin writing a program to solve the problem. The pieces
become procedures in the program.


a program which is used to write SOURCE CODE (program text) and to make
corrections in the text. This functions like a word processor, but
would not normally wrap text or reformat paragraphs


a program which translates the SOURCE CODE (text) of a program into the
equivalent OBJECT CODE (the machine language version.) As the compiler
translates the program, it notes any errors which it finds, such as
SYNTAX errors and TYPE MISMATCH errors. These are called COMPILE-TIME
errors, since they are detected during compiling.


similar to a compiler, translates program text into the machine language
equivalent. However, an interpretter translates ONE line of the program
and then executes it, then goes on to the next statement. A compiler
translates the entire program, which is then run as a whole unit. Older
versions of BASIC (such as GWBASIC) were interpretters, whereas TURBO
PASCAL is a compiler. Compiled programs run much faster than
interpretted programs, since each line is only translated once.


the process of finding and correcting "bugs" (errors). Compilers have
the advantage of speeding detection of syntax errors, whereas
interpretters allow interruption of a running program and thus speed the
correction of run-time (value) errors.


An error which is detected by the compiler, before the program starts
running. For example, Syntax errors (missing semicolon, misspelling),
Type-Mismatch (3.5 DIV 0.5), Unknown Identifier (undeclared variable).


Errors which cannot be detected by the compiler and only occur when the
program is actually running, such as I/O ERRORS when a file is missing,
(infinite recursion), or an infinite loop!


An errors which does not stop a program from compiling or from running,
but which causes it to produce incorrect results. These are errors
which the programmer has made in thinking about the problem.


Computer Aided Software Engineering - these are tools for developing
software systems without typing programming commands (code).
A Visual IDE is a common example. Other tools include Library Managers
documentation systems, and code generators. In Visual Basic, there
are also "wizards" for generating application "frameworks".


Data Base Management System - a complex system for creating data-files,
input forms, queries (searching and selecting), and reports.
Sophisticated data-base applications can be constructued without
programming (coding).


A collection of information, stored on a disk or tape drive. It could
contain either DATA or a PROGRAM.


Contains a computer program, written in PASCAL or BASIC or MACHINE
LANGUAGE or some other programming language. This is a list of
instructions - things for the computer to do. This could be a source
file, which contains text which must be compiled, or in could contain
executable file - a machine language program, either .EXE or .COM file
in MSDOS. A SYSTEM file (.SYS) contains the operating system programs
which are loaded when booting up. An OVERLAY file contains part of a
program which will be loaded in only when needed - it cannot run by
itself, only when loaded as part of another program.


A file which contains data, such as names, addresses, phone numbers.
This is information which can be read, but is not a program - that is,
it does not tell the computer to DO something.


A group of data belonging together, all about one individual. A file is
made up of some number of records. The number of records in the file is
the "filesize".


One single piece of information - part of a record. A record is made up
of several fields (or perhaps only one).


A field may have a fixed length - a maximum size. Regardless of what is
actually stored in the field, it will still occupy the same amount of
space. Random-access files generally use fixed-length fields.


A field is saved ending with a control character. This way the field can
be arbitrarily long. This saves memory in the long run, since no empty
space is saved. Text-files use variable-length fields, each line of
text ending with #13 (carriage return) + #10 (line feed.)


(serial access) Reading the data in order, from beginning to end.
Thus, to read the 10th record, it is necessary to read the first record,
second record, ..., ninth record, and then finally the tenth record.
This is VERY SLOW, but it is possible to use variable record lengths,
and thus saves space. TAPE-DRIVES use sequential access.


A data file which must be accessed sequentially, in which the records
are not in any specific order. A text file is an example.


A data file which must be accessed in order, even though the records
are SORTED in a specific order. It might be necessary to read them
in order because the records are variable sizes, so there is no
way to "jump" to a specific place.


(direct access) A file in which it is possible to read the 10th record
directly, without first reading the other 9. This is faster than
sequential access, but requires a fixed record length, since the
location of the record on the disk must be calculated. This wastes space
but saves time. DISK-DRIVES are random access devices.


a separate file which tells where certain records in a data file are.
The index will be for a particular KEY FIELD, and will contain POINTERS
which are record numbers in the data file. For example, the NAMES of
customers might be recorded in an index, so that the customers can be
printed alphabetically. It is possible to create an index for each
field, without needing to change the physical order of the data file.
The data file can be SORTED on different KEYS without being rewritten.


a KEY FIELD contains a value from which the POSITION of the record in
the file is calculated. The birthday could be used as a key field. But
since some birthdays will not appear in the file, there will be empty
records (dead space). And since some birthdays appear twice, there can
be "collisions". Hashing is very fast, but exacts a considerable
penalty in wasted storage space.


a variable declared at the beginning, whose value is used throughout a
program and all of its procedures. Global variables are dangerous, as
they can result in SIDE-EFFECTS where two different procedures use the
same variable for two different purposes.


when a variable is declared inside a procedure, its value is only
available LOCALLY - inside the procedure. This allows the same name to
be used in two different places and have two different values.


the data (numbers or strings) which are given to a procedure when it runs
Passed by VALUE (input only) - the value of the parameter is copied
and a second copy stored separately inside the procedure
Passed by REFERENCE (VAR input/output) - the address of the parameter
is given, and the procedure does not make its own copy of
the value


a process or strategy or method for solving a problem. A good one is
efficient - runs as fast as possible or uses as little memory or storage
as possible, or both.


the proper method for measuring the speed of an algorithm. The actual
time required for an algorithm is not a good measure of speed, because
this will be different on faster machines than slower machines, and will
also change according to the specific data. Speed = O(n^2) means that
if the average execution time is graphed for a various amounts of data,
then the shape of the curve will be like the graph of y=n^2 . In simple
terms, if the length (n) of the list of data is doubled (*2), then the time
will increase by *2^2 .


the process of putting a list of data items in order. When a file is
sorted, the records are put in order according to the KEY field - this
will contain an identification number or name.


go through the list, switching neighbors which are out of order. This
is repeated until no more switches are necessary. Speed = O(n^2)


Find the smallest item and SWAP it with the first item. Find the second
smallest item and SWAP into position two, etc. Speed = O(n^2)


separate the list into two halves, a smaller half and a larger half.
Then do the same to the first half, and then to the second. Repeat this
on ever smaller pieces of the list until the pieces contain only one or
two elements. Speed = O( N Log N )


(categories) this is an approximate sort, putting the items into
categories. For example, a list of words can be presorted by putting all
the A's first, then the B's, then the C's, etc. This requires only one
pass, through the list and thus goes quite quickly. After presorting, a
bubble sort will be MUCH faster. Speed = O(N)


finding an item by deciding whether it is in the first or second half of
the list, then repeating this with that half, until the section to be
searched is only one or two items. This is VERY fast, but can only be
done if the list is sorted first. Speed O( Log N )+


look through the records in order until the item is found. This is a lot
slower than a binary search, but works on unsorted lists.


combine two files into one file - usually combining two SORTED files
into a sorted file.


(matrix) a list of data, where the position of an item is identified by
number (the SUBSCRIPT or INDEX). Arrays are STATIC, meaning the total
SIZE never changes during program execution.


can grow and shrink as the program is running - including trees, linked
lists, stacks and queues


linear list of data where POINTERS point from one NODE to the next.
Usually stored in the HEAP or some other flexible memory area. The
beginning is called the HEAD and the end is called the TAIL.


a linked structure where each PARENT NODE points to several CHILDREN.
This "branching" behaviour differentiates it from a linked-list.


linear data structure, LIFO = Last In First Out, use PUSH to put a new
piece of data into the structure, use POP to retrieve data


linear data structure, FIFO = First In First Out, use ENQUEUE to put
data into the structure, use DEQUEUE to remove data


a large, expensive, fast computer designed to be used by many different
users. They usually have many peripheral devices attached and a
particularly large capacity in the storage devices. A smaller, cheaper
version is called a MINICOMPUTER, which also has many users. A very
FAST mainframe is called a SUPERCOMPUTER.


(personal computer, home-computer, work-station, stand-alone) A small
computer designed for just one user, usually slower, smaller, cheaper,
and with less storage than a mainframe or a minicomputer. Modern PCs are
as powerful as minicomputers were 20 years ago.


a computer system where the USER(s) is directly involved when the
program is running - typical for microcomputers


(non-interactive) a large set of data (or programs) are
ALL processed without a user being involved - typical for mainframes.
This is the opposite of on-line processing.


entering data and commands directly into a computer system. The
system reacts immediately to the user's input.
This is the opposite of batch-processing.


a computer system which must react to input in a specific limited
amount of time, keeping up with the environment. An air-traffic-
control system is a prime example. This is not the same as on-line
systems, which could get busy and react slowly. If an air-traffic-
control system gets busy, it cannot postpone decisions until later.


the main file in a database system - the permanent storage of the
data. In a bank, this would contain the customer addresses and
balanaces. Contrast this with a transaction file, which only
contains single, daily activity, such as a withdrawal or deposit.


contains single activity records, such as deposits and withdrawals
from a bank acount. These records are the POSTED to the MASTER FILE.
In a batch-processing system, this file builds up throughout the day,
and then all the records are posted to the MASTER FILE at one time
at the end of the day.


the collection of programs and subroutines which control the hardware
directly - turning the disk-drive motor on and off, reading the keys
which are pressed on the keyboard, putting graphic displays on the
screen, etc. This has two parts - a Built In Operating System (BIOS)
located in ROM, and the rest of the operating system which is loaded
from the disk and resides in RAM. Popular systems are MSDOS for PC's,
SYSTEM 7 for MacIntosh, UNIX for mainframes. An OS used only by one
manufacturer is called PROPRIETARY - i.e Apple's System 7.


a utility which combines separate program modules into an executable


the part of the operating system which loads an executable program
into the memory and then starts it running. The user double-clicks
on the icon in Windows 95 to start a program, so they don't think
of this as a separate utility. However, in some operating systems
a specific command must be typed to load and execute a program.


a collection of re-usable sub-programs (subroutines) which can be
used in various program. For example, a good sorting routine
might be included, so that programmers don't need to waste time
writing their own. Presumably these routines have been thoroughly
tested and are very reliable and efficient. They must also be
thoroughly documented.


Disk Operating System. This is a program which controls all disk
access. It automatically allocates space on the disk, keeps the
directory updated, and does all of the reading and writing of files. It
keeps track of which sectors on the disk are currently in use, and which
file is using each. This way, the application programs do not need to
bother worrying about the physical structure of the disk.


a system in which many users can run programs simultaneously. The
computer memory is divided into sections, and the CPU jumps from program
to program, running a little bit of each one. Each user has a
DUMB-TERMINAL (not a PC) to communicate with the main computer.


Local Area Network. A bunch of PC's (perhaps also mainframes) near each
other (same building) connected by wires, which share data and programs.
Each user has a computer on his/her desk. A central computer, the
SERVER, stores programs and data. When the user wants to run a program,
the program is "down-loaded" from the server to the PC and runs in the
PC's memory. It can access data files on the server. The PC can also
use LOCAL programs and data, stored on the "local" disk drive. LANs use
DEDICATED wires which are used ONLY by the network.


Wide Area Network (Long Haul Network). The computers in a WAN are far
apart from each other, and these are generally main-frames. A large
bank may have mainframes in each major city, which need to be connected
to each other to exchange financial data. Although programs COULD be
downloaded, WANs generally only transmit data. There is usually no
"central" computer. Usually communication is over telephone lines.


the basic structure of a network. The three most common types are:
ring, bus, and star.


a central connector where many cables can be plugged in, connecting
many computers together. Star networks use these, bus networks do not.
These are very stupid devices, and simply repeat incoming signals to
all the connections.


a smarter version of a hub, which "knows" where a packet should go,
and thus sends the packet to the correct connection, without bothering
the other connections. This routing function is limited to a single
network section.


a very smart version of a switch, which can send packets to the
the correct destination in more than one network. These are expensive
devices, usually purchased to connect two networks together.


any computer or other device in a network - a workstation, a server,
or a networked printer.


a network in which shared data is stored in a dedicated server.
Any communication between workstations would always pass through a
server. This requires a network OS such as Novell or NT or Linux.
This generally provides more efficient service and better security
(through accounts and passwords) than a peer-to-peer network.


a network in which communication passes directly from one workstation
to another, without involving a dedicated server. A workstation
can "share" it's disk drive, allowing other workstations to access
files. This is cheap and simple to set up and use - Windows 95
supports this simple networking concept. However, there are no
"accounts", so there is only very simple security - files can be
read-only or full-access - no way of permitting access to
specific users.


a network which uses one single cable to connect many computers.
The common example uses BNC connectors and coaxial cable, attaching
one connector to each network card, and using one more section of
cable to connect to the next computer. This has slow performance,
as only one single computer can transmit at one time, as there is
only one cable. It is also less reliable than a star network,
as one single defect in the cable stops the entire network.


a network which uses a single cable for each computer, attaching it
to a central hub. The common example uses UTP (unshielded twisted
pair) cables. This is faster and more reliable than a bus network,
but more expensive (uses a lot more cable and requires the hub to
be purchased) and less flexible (cables must be a specific length
and must run to the hub, so adding a new computer is more trouble.


Similar to a star network, but communication is managed by a central
controller, which decides which computer is currently allowed to
transmit. This can be quite efficient, but is fairly expensive and
requires more management than star or bus networks.


the ability to jump from one part of a document to another part of the
same document, or indeed to a totally different document. This linking
of text increases to value of the text, as it makes connections between
ideas and information.


HTML - the rules for the internal structure of World-Wide-Web pages.
This has a very specific set of syntax rules, thus is similar to
a programming language. Variables, arithmetic, and loops are not
supported, so it is not a "true" programming language. Nevertheless,
HTML gives "commands" to the browser, much in the same way as a
programming language gives commands to the computer.


a network of computers in various locations, in contact with one another
via telephone, which send messages from one computer to the next and
further until they arrive at their destination. Can move a letter around
the world in less than a minute.


data (or software) is erased, corrupted, or destroyed
ACCIDENTAL = due to hardware failure, software error, or user mistakes
MALICIOUS = intentionally caused by a HACKER, or a ROGUE PROGRAM such as


the unauthorized (illegal) copying, use, or sale of software.
This is a big problem in the PC software industry, where software is
widely distributed on floppy diskettes, and therefor can very easily
be copied and used without payment.


"breaking in" and using a computer system without permission.
This is a bigger problem in mainframe systems and computer networks
than in the PC world. Hacking originally meant something quite
different - it meant spending time looking for exceptionally clever
solutions to computer problems. A "good hack" still refers to a very
clever program, or designing a clever hardware device.


confidential data should only be ACCESSED by AUTHORIZED users.
This is a big problem when personal data are stored in large databases.


an extra copy of software or data files. This is the best protection
against data loss, since the data or software can be completely
recovered, regardless of what caused the loss. Backup copies should
always be stored away from the computer - in a different building if
possible, to avoid catastrophes such as fire. Backups are effective
against data loss, but actually work against privacy, since the extra
copy is just another security risk.


computers and terminals are locked up, either in locked rooms or through
locks on the computers. Also, the environment is kept free of fire
risks, electromagnetic fields, dust, and excessive heat. Physical
security can be effective against hacking, but difficult to implement in
a large system or a network.


an operating system may prevent access by unauthorized users through the
use of PASSWORDS or other identification procedures, such as ID cards,
voice patterns, fingerprints, handwriting recognition. This is the
preferred method to protect against hacking, as it can be implemented
regardless of the physical size or location of the system.


Large computer systems assign a privilege level to each user, so that
not all users are permitted access to everything. SUPERVISOR or SYSOP
(system operator) is usually the highest level, and has access to
virtually everything. These security levels are usually enforced by the
operating system.


an extra device (key or circuit card) which must be inserted in the
computer before use. Some software packages include dongles as a
protection against piracy.


Data files are stored in a "secret code", and can only be decoded
by someone who knows the KEY (the secret). DES (Data Encryption
Standard) is a widely used system in the United States. The ENIGMA
machine was an encryption system used by the German army during World
War II to encode radio and written messages. Alan Turing, of Turing
Test and Turing Machine fame, worked on the British COLOSSUS project, a
computer to DECRYPT (decode) Enigma. The success of this project was
instrumental in winning the war.


a circular piece of disk storage - a floppy has 40 or 80 tracks.


part of a track on a disk-drive. A track might have 16 sectors of 512
bytes each.


Disk sectors are not allocated one at a time, but in clusters. On a
hard-disk, the cluster size might be 2, 4, or 8 kilobytes. In MSDOS,
clusters are numbered from 0 to 65536. So a 512 MB hard disk has a
cluster size of 512 MB/64 Kb = 8 Kb. This means that if you write a
small batch file, containing 1000 characters, it will still occupy an
entire cluster (8 KB) so there is 7 KB of wasted space.


a list of file names. In MSDOS and Windows, the files are grouped into
subdirectories, to try to keep things organized in a rational fashion.


File Allocation Table - keeps track of which clusters have been
allocated, to which file, and which clusters are still free.


the standard system is called a WINCHESTER DRIVE. This device
contains several PLATTERS (disks), stacked on top of each other, with a
SPINDLE (axle) in the middle. There is a READ/WRITE HEAD for each SIDE
of each PLATTER. These heads are on metal arms which move the heads in
and out to ACCESS different CYLINDERS (tracks). The head must SEEK the
track and SETTLE (stop moving and vibrating) before reading or writing.
All arms/heads move together as a single unit (the COMB). A STEPPER
MOTOR moves the heads from one track to the next. When the disk drive
is turned off, the heads are moved to a LANDING ZONE, a track which is
not actually used for data storage. This is because the heads actually
touch the disk when it stops rotating. When the computer starts up, the
drive must SPIN-UP to normal operating speed (several thousand RPMs).
The movement of air caused by the spinning disk causes the heads to
float very close to the surface of the disk without actually touching.


the first sector on the disk, contains a BOOTSTRAP-LOADER program which
simply loads the Disk-Operating-System files from the disk drive and
executes them.


a disk must be formatted before it is actually used. This places
TIMING-MARKS at the beginning of each sector, together with a sector ID
mark. When the drive is SEEKING a sector, it watches for the timing
marks, then reads the sector ID which follows, and reads the data which


Sectors 1,2,3,4... might be stored sequentially next to each other in a
track. But if the disk is spinning very fast, the CONTROLLER might not
be able to process the data from sector 1 quickly enough to be ready to
read sector 2 when it comes along. As a result, the controller will
need to wait an entire revolution before sector 2 comes by again. To
compensate, the sectors can be interleaved like this: 1,5,2,6,3,7,4,8 .
Then the controller has enough time between sectors, since there is an
entire sector between sectors 1 and 2. This is called a 1:2 interleave.
If the sectors are stored in order, it is called a 1:1 interleave. When
an advertisement claims 1:1 interleaving, it is a promise that the
controller can read fast enough to keep up with the spinning disk. Disk
drive performance can be signicantly enhanced by choosing the proper
interleave when formatting the disk.


(mean seek time) the average amount of time for the head to move to the
proper track and reach the desired sector. Typical for a hard-disk is
20 ms (milliseconds). Smaller hard-disks (notebook computers) usually
have faster access times, since the heads move a smaller physical
distance. ACTUAL seek time is variable, depending on current head


rotational delay. When a disk drive seeks from one sector to another,
it needs to move the head to a different track, and then wait for the
spinning disk to bring the correct sector under the head.


a disk drive must move the read/write head and wait for the disk to
rotate in order to find a new sector. A typical seek time is
0.1 milliseconds.


the speed of transmitting data from a disk drive to memory
(or vice versa).


a cirucit board which directly controls a hardware device. An IDE
interface is a card (or part of a mother board) which controls the
disk drive directly, turning on the motor, moving the heads, etc.
Programs give very high level commands to the controller (e.g.
GET #1,,info), which are then translated into specific commands to
the physical device.


if a file is stored in clusters which are scattered all over the disk,
then access will be very slow. This utility program relocates files
into CONTIGUOUS (adjacent) sectors. This problem mostly occurs when
a disk is fairly full and a lot of erasing and recopying is being done.


Black and white monitor, no colors. Colors are represented in GRAY
SCALE (varying shades of gray). Common is 16 or 32 gray-scales.


the smallest dot which can be drawn on the screen - an abbreviation for
Picture Element.


(raster graphics) pictures are stored pixel by pixel. The color of each
pixel is stored in the memory, normally in V-RAM (video RAM) located on
the GRAPHICS CARD (adapter). The total number of colors (PALLETTE)
depends on how many bits are used to store each pixel. If 4 bits are
used for each pixel, then 2^4 = 16 colors can be represented. TRUE-COLOR
graphics cards offer 24-BIT COLOR, which provides 2^24 = 16 MILLION
colors. Pixels are arranged in a RASTER (matrix) of SCAN LINES
(horizontal) divided into individual pixels.


the number of pixels on the screen. HIGH-RES means lots of pixels,
LOW-RES means not so many pixels. Typical resolutions are:
1024x768 (Super VGA) 640x480 (VGA) 640x350 (EGA)


Lines and curves are stored, instead of individual pixels. For example,
a vector (line) is represented by storing the coordinates of its
endpoints, which means storing 4 numbers. This is much more efficient
than storing the color of every pixel on that line. A "true" vector
graphics monitor does not draw individual pixels at all. Instead, it
moves the electron gun around the screen actually drawing the vectors
and curves required. This system is much more complex (expensive) to
build and program, and is not used in PC's. This produces perfectly
straight lines and smooth curves, with no JAGGIES (stair-step effect).
Another advantage is that rotating a vector requires only 4 numbers to
be recalculated, whereas rotating a pixel-representation requires EVERY
PIXEL to be recalculated. Vector graphics screens are used in expensive
CAD systems, which require extremely high-quality displays, and in
SIMULATORS which require REAL-TIME rotations of pictures. PLOTTERS use
vector-graphic logic to draw pictures. Printers are bit-mapped.


the picture on the monitor is redrawn about 60 times every second. The
electron gun draws one SCAN LINE (horizontal), then moves down to the
next, then down again, until it reaches the bottom of the screen. It
moves back up to the top - VERTICAL RETRACE - and scans the entire
screen again. This is a fairly continual process. Fortunately, the
graphics card controls the monitor without the help of the CPU -
otherwise, the CPU would be constantly busy redrawing the screen.


If too many scan lines are required, the refresh takes too long. The
image FLICKERS because the pixels at the top are already fading out
before the refresh finishes at the bottom. Below 50 Hz (refreshes per
second) is too slow and our eyes notice the flickering. To fool our
eyes, the monitor can use interlacing - it draws a scan line, then skips
one, then draws one, etc., leaving out every second line. It then goes
back to the top and draws the rest of the lines. One complete refresh
is done in two passes. This allows refresh rates around 30 Hz without
the user noticing flicker. Faster, more expensive monitors display
HI-RES modes without interlacing (NON-INTERLACED).


Jaggies are especially bad at the edge of an object - i.e. where a red
circle meets a blue background. By making the pixels near the edge
change colors more gradually - red, purple, violet, blue - the jaggies
become less noticeable, although the edge becomes fuzzy. This must be
performed by the software, not the monitor or graphics card.


The basic speed of the modem's signal, similar to the MegaHerz of your
micro-processor. This is the speed at which the signal can change.
Voice-phone lines can accomodate signal changes up to 2400 times per
sec. This does not mean the same as bits-per-second, especially if
noise in the line causes lots of retransmissions, or if data-compression
is used.


Bits Per Second - The DATA-TRANSFER RATE may very well be faster than
the BAUD rate. By using clever methods such as phase-changes, a modem
can send 16 different types of signal, thus encoding 4 bits into each
signal change. Then at 2400 BAUD, it transmits 2400*4 = 9600 BPS.
COMPRESSION schemes can further increase the data-rate.


Two modems need to agree on the details of data transmission, and
this involves a lot more than just the BAUD rate. The entire set of
rules and details is called the PROTOCOL. A common standard is V.32.


The ability to transmit data in two directions. Full-duplex means that
data can be transmitted in both directions at one time - telephones are
full-duplex. Half-duplex means that data can be transmitted in only one
direction at a time - walkit-talkies and police-radios are half-duplex
devices. When using a modem, if you select Full-Duplex, then when you
type a character it will not appear on your monitor until it has been
transmitted and echoed back by the other computer. In half-duplex mode,
the character is immediately printed and then transmitted. A common
problem with modems is that you are in half duplex-mode, but the other
computer is echoing, so you see all the characters appearing double on
your screen.

A SIMPLEX system does not allow transmission in both directions.
Television signals are simplex signals - the TV set does not transmit
information back to the television station.


Not Synchronized - when typing, you transmit only a few bytes per
second. When no data is being transmitted, the line is in IDLE mode,
which means the line is held HIGH. A START-BIT (line goes low) signals
that a DATA-BYTE is about to be sent. DATA-BITS are then sent (high=1,
low=0), followed by a PARITY-BIT, then 1 or 2 STOP-BITS. During this
time the communication is synchronous - transmit and receive at the same
speed (i.e. 9600 bps). After the stop-bit(s), the line goes back to high

<-------- Data Bits ----------> parity
IDLE 1 0 1 1 1 1 0 0 1 1 IDLE
High -------+ +---+ +---------------+ +-----------------
| | | | | | Stop
Low +---+ +---+ +-------+ bit(s)


(protocol) One needs an orderly process to ensure that data is
transmitted only when the receiver is ready for it. The computer must
be sure that the transmitting modem, telephone line, and receiving modem
are all ready before attempting a transmission. Several control signals
are exchanged before transmission begins, including:

Data Terminal Ready (DTR) Request to Send (RTS)
Data Set Ready (DSR) Clear to Send (CTS)
Data Carrier Detected (DCD) Transmit Data (TD)
Ring Indicator (RI) Receive Data (RD)

A typical sequence might be:
DTR - Computer tells modem it is turned on
DSR - Modem tells computer it is attached to a telephone line
RI - The modem senses the phone is ringing
DCD - The modem says it is attached to another (remote) computer
RTS - Computer says it wants to send some data
CTS - Modem tells computer okay, it can start sending now
TD - Computer transmits data, which the modem sends to other computer

Different manufacturers use different systems for these signals. For
example, after a DTR, the modem might be required to wait 1 millisecond
and then send a DSR.


Integrated Services Digital Network - an international communications
standard for sending voice, video, and data over special telephone
lines. This requires special wires and transmits 64,000 bps. A future
version, B-ISDN, will use optical fibers and transmit 1.5 million bps.


A an error-detection scheme, using a single bit for each byte. For each
byte, the computer counts up the 1 bits in the byte, and then sends
an extra bit telling whether the total should be odd or even. If a bit
gets CORRUPTED during transmission, the parity bit won't match at the
other end, and the other computer can ask for a re-transmission. For
example, instead of sending the 8 bits 11001010, you would send the
9 bits 11001010-0 . The extra bit is the parity bit, saying that there
were an even number of 1's in the data byte.


In this system, the total number of 1's in 9 bits (including
the parity bit) is always even. Thus, 11001010:0 is transmitted.


Here the parity bit is exactly the opposite of even-parity
systems. When there are an odd number of 1's, a 0 parity bit is sent.
Thus the total number of 1's in 9 bits is ALWAYS ODD. For example,
11001010:1 is a valid transmission. Odd-parity is more reliable than
even parity - if the line is suddenly disconnected, the other computer
might think it is receiving 000000000000.... Under even-parity, this
appears to be valid, but under odd-parity it is obviously not valid. A
total disconnection is a common problem, so odd-parity is a far better
system. In any case, both computers must AGREE what sort of parity-check
is being carried out. The 3 choices are: Even, Odd, or None.


checking whether entered data is REAONABLE - could possibly be correct.
Common methods are RANGE CHECKING (e.g. ages must be between 1 and 120)
and TYPE CHECKING (e.g. if a name was required, the user should not
type any numbers. This does not guarantee the data is correct, but
failure does mean the data is wrong.


checking whether entered data is actually CORRECT. This is usually
accomplished by LOOKING UP the value in a data file, cross-referenced
against some other data. For example, if a bank customer types their
NAME and PIN code, the two must match the data stored in the bank's


using a single data-line to carry on several conversations at
the same time. FREQUENCY multiplexing mixes many different frequencies.
TIME multiplexing interleaves the converstations, giving a short amount
of carrier time to each signal in turn (PACKET-SWITCHING).


before a byte is transmitted, a start-bit alerts the receiver that data
is coming. This bit is only a signal - not data.


20 years ago, terminals were TELETYPES, which were very slow mechanical
devices. There needed to be a delay between bytes, and this was
accomplished by sending stop-bits. Today, you can still choose 1 or 2
stop bits, although their original purpose is no longer relevant. But
many mainframes have been around for more than a decade and thus use
stop-bits, so they continue in use for purposes of compatibility.


a signal which can vary continuously from small values to large values,
with no specific "steps" in between. Typcial for temperatures sensors.
This must be converted to DIGITAL form before it can be stored or
processed by a computer. Another example is sound waves.


a signal which changes in very specific STEPS (intervals). Thus, rather
than 1.2345642, the value might be rounded off to 1.23. Money is
digital, having an exact number of pennies. Sound waves are NOT like
this - they have continuous variations, rather than stepped variations.
When a computer wants to generate sound, it must convert its digital
representation to an ANALOG signal which then produces sound.


ADC - converts continuous signals to discrete signals, thus turning
a smooth curve into "stair steps". A sound card uses this to
change sound-waves into digital signals for storage and transmission
in computer sytems.


DAC - converts discrete signals (bits) into continuous signals.
A sound card changes the bits from a computer file into continuous
sound waves and transmits these to a speaker.