Introduction to Computers - ZEN Portfolios

hundredcarriageSoftware and s/w Development

Nov 3, 2013 (3 years and 1 month ago)

89 views

10/21/2009




Computers for Dummies

|
Leroy, McLellan, Reed

T
EAM
C

I
NTRODUCTION TO
C
OMPUTERS


Introduction to Computers

by Reed, McLellan, and Leroy


Page
2

of
24


Table of Contents

Attribution

................................
................................
................................
................................

3

Figure 1


Wikipedia Creative Commons License

................................
................................
.

3

Our Contribution

................................
................................
................................
...................

3

Wikipeda

................................
................................
................................
...............................

3

Creative Commons

................................
................................
................................
................

4

Computers
................................
................................
................................
................................
.

5

History of the Compu
ter

................................
................................
................................
...........

6

Programs

................................
................................
................................
................................
.

10

Function

................................
................................
................................
..............................

11

Control Unit
................................
................................
................................
.........................

12

Arithmetic/logic unit (ALU)

................................
................................
................................
.

13

Memory
................................
................................
................................
................................
...

14

Multitasking

................................
................................
................................
........................

15

Multiprocessing

................................
................................
................................
..................

16

Networking and the Internet

................................
................................
................................
..

17

Overview of Computer Software

................................
................................
............................

18

Relationship to computer hardware

................................
................................
...................

18

Execution
................................
................................
................................
.............................

18

Quality and reliability

................................
................................
................................
..........

19

License

................................
................................
................................
................................

19

Patents

................................
................................
................................
................................

19

Design and implement
ation

................................
................................
................................
....

20

Industry and Organizations

................................
................................
................................
.....

21

Resources

................................
................................
................................
................................

22

Index

................................
................................
................................
................................
.......

23




Introduction to Computers

by Reed, McLellan, and Leroy


Page
3

of
24


Attribution

All the content in this report, except for the Top Web Links section is from
Wikipedia
,
licensed under the Creative Commons
Share
-
Alike 3.0 Unported License (see below for an
overview of both Wikipedia and the Creative Commons). The following picture shows the
full license below (it is also set up as a hyperlink to the original web source for this license).

(Wikipedia, 2009)

Figure 1


Wikipedia Creative Commons License

Our Contribution

We have attempted to add extra value to the content by structuring it in an easy to read,
business report format and to add an informative “Top Web Links” section. We have also
added an index to help you find what you are looking for. We hope you find it u
seful and
worth the $1 purchase price. We have prepared this report as part of a
MS Word 2007
assignment

for
BSYS 1000


Computer Applications I

that we are taking at the
British
Columbia Institute of Technology (BCIT)
. All proceeds will go to student clubs within the
Sch
ool of Business at BCIT
.

Wikipeda

Wikipedia is a multilingual, Web
-
based, free
-
content encyclopedia project based mostly on
anonymous contributions. The name “Wikipedia” is a portmanteau of the words wiki (a type
of collaborative Web site) and encyclopedia
. Wikipedia’s articles provide links to guide the
user to related pages with additional information
.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
4

of
24


Wikipedia is written collaboratively by an international (and mostly anonymous) group of
volunteers. Anyone with internet access can w
rite and make changes to Wikipedia articles.
There are no requirements to provide one’s real name when contributing; rather, each
writer’s privacy is protected unless they choose to reveal their identity themselves. Since its
creation in 2001, Wikipedia ha
s grown rapidly into one of the largest reference web sites,
attracting around 65 million visitors monthly as of 2009. There are more than 75,000 active
contributors working on more than 14,000,000 articles in more than 260 languages. As of
today, there ar
e 3,062,069 articles in English. Every day, hundreds of thousands of visitors
from around the world collectively make tens of thousands of edits and create thousands of
new articles to augment the knowledge held by the Wikipedia encyclopedia. (See also:
Wi
kipedia:Statistics.)


Creative Commons

Creative Commons (CC) is a non
-
profit organization devoted to expanding the range of
creative works available for others to build upon legally and to share. The organization has
released several copyright
-
licenses kno
wn as Creative Commons licenses. These licenses
allow creators to communicate which rights they reserve, and which rights they waive for
the benefit of recipients or other creators.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
5

of
24



Computers

A computer

is a machine that manipulates data

according to a set of instructions.


Although mechanical examples of computers have existed through much of recorded
human history
, the first electronic computers were developed in the mid
-
20th century
(1940

1945). These were the size of a

large room, consuming as much power as several
hundred modern personal computers (PCs).[1] Modern computers based on integrated
circuits are millions to billions of times more capable than the early machines, and occupy a
fraction of the space.[2] Simple
computers are small enough to fit into a wristwatch, and can
be powered by a watch battery. Personal computers in their various forms are icons of the
Information Age and are what most people think of as "computers". The embedded
computers found in many de
vices from MP3 players to fighter aircraft and from toys to
industrial robots are however the most numerous.


The ability to store and execute lists of instructions called programs makes computers
extremely versatile, distinguishing them from calculators.
The Church

Turing thesis is a
mathematical statement of this versatility: any computer

with a certain minimum capability
is, in principle, capable of performing the same tasks that any other computer can perform.
Therefore computers rangin
g from a mobile phone to a supercomputer are all able to
perform the same computational tasks, given enough time and storage capacity.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
6

of
24



History of the Computer

The first use of the word "computer
" was recorded in 1613, referring to a
person who
carried out calculations, or computations, and the word continued to be used in that sense
until the middle of the 20th century. From the end of the 19th century onwards though, the
word began to take on its more familiar meaning, describing a m
achine that carries out
computations.[3]


The history

of the modern computer

begins with two separate technologies

automated
calculation and programmability

but no single device can be identified as the earliest
computer, p
artly because of the inconsistent application of that term. Examples of early
mechanical calculating devices include the abacus, the slide rule and arguably the astrolabe
and the Antikythera mechanism (which dates from about 150

100 BC).
Hero of Alexandria

(c. 10

70 AD) built a mechanical theatre which performed a play lasting 10 minutes and was
operated by a complex system of ropes and drums that might be considered to be a means
of deciding which parts of the mechanism performed which actions and when. Th
is is the
essence of programmability.


The "castle clock", an astronomical clock invented by Al
-
Jazari in 1206, is considered to be
the earliest programmable analog computer
.[5] It displayed the zodiac, the solar and lunar
orbits, a
crescent moon
-
shaped pointer travelling across a gateway causing automatic doors
to open every hour,[6][7] and five robotic musicians who played music when struck by
levers operated by a camshaft attached to a water wheel. The length of day and night could

be re
-
programmed to compensate for the changing lengths of day and night throughout the
year.[5]


The Renaissance saw a re
-
invigoration of European mathematics and engineering. Wilhelm
Schickard's 1623 device was the first of a number of mechanical calcul
ators constructed by
European engineers, but none fit the modern definition of a computer
, because they could
not be programmed.


In 1801, Joseph Marie Jacquard made an improvement to the textile loom by introducing a
series of punched pap
er cards as a template which allowed his loom to weave intricate
patterns automatically. The resulting Jacquard loom was an important step in the
Introduction to Computers

by Reed, McLellan, and Leroy


Page
7

of
24


development of computers because the use of punched cards to define woven patterns can
be viewed as an early,
albeit limited, form of programmability.


It was the fusion of automatic calculation with programmability that produced the first
recognizable computers.
In 1837, Charles Babbage was the first to conceptualize and design
a fully programmable mechanical com
puter
, his analytical engine. Limited finances and
Babbage's inability to resist tinkering with the design meant that the device was never
completed.


In the late 1880s, Herman Hollerith invented the recording of data on a machine readable

medium. Prior uses of machine readable media, above, had been for control, not data.
"After some initial trials with paper tape, he settled on punched cards ..."To process these
punched cards he invented the tabulator, and the keypunch machines.
These thr
ee
inventions were the foundation of the modern information

processing industry. Large
-
scale
automated data processing of punched cards was performed for the 1890 United States
Census by Hollerith's company, which later became the core
of IBM. By the end of the 19th
century a number of technologies that would later prove useful in the realization of practical
computers had begun to appear: the punched card, Boolean algebra, the vacuum tube
(thermionic valve) and the teleprinter.


During
the first half of the 20th century, many scientific computing needs were met by
increasingly sophisticated analog computers, which used a direct mechanical or electrical
model of the problem as a basis for computation. However, these were not programmable
and generally lacked the versatility and accuracy of modern digital computers.


Alan Turing is widely regarded to be the father of modern computer

science. In 1936 Turing
provided an influential formalisation of the concept of the algorith
m and computation with
the Turing machine. Of his role in the modern computer, Time Magazine in naming Turing
one of the 100 most influential people of the 20th century, states: "The fact remains that
everyone who taps at a keyboard, opening a spreadsheet
or a word
-
processing program, is
working on an incarnation of a Turing machine." [10]


The inventor of the program
-
controlled computer

was Konrad Zuse, who built the first
working computer in 1941 and later in 1955 the first computer based

on magnetic
storage.[11]

Introduction to Computers

by Reed, McLellan, and Leroy


Page
8

of
24



George Stibitz is internationally recognized as a father of the modern digital computer
.
While working at Bell Labs in November 1937, Stibitz invented and built a relay
-
based
calculator he dubbed the "Model K" (f
or "kitchen table", on which he had assembled it),
which was the first to use binary circuits to perform an arithmetic operation. Later models
added greater sophistication including complex arithmetic and programmability.

Several developers of ENIAC, recog
nizing its flaws, came up with a far more flexible and
elegant design, which came to be known as the "stored program architecture" or von
Neumann architecture. This design was first formally described by John von Neumann in the
paper First Draft of a Repor
t on the EDVAC, distributed in 1945. A number of projects to
develop computers based on the stored
-
program architecture commenced around this
time, the first of these being completed in Great Britain. The first to be demonstrated
working was the Manchester

Small
-
Scale Experimental Machine (SSEM or "Baby"), while the
EDSAC, completed a year after SSEM, was the first practical implementation of the stored
program design. Shortly thereafter, the machine originally described by von Neumann's
paper

EDVAC

was com
pleted but did not see full
-
time use for an additional two years.


Nearly all modern computers implement some form of the stored
-
program architecture,
making it the single trait by which the word "computer
" is now defined. While the
techno
logies used in computers have changed dramatically since the first electronic,
general
-
purpose

computers of the 1940s, most still use the von Neumann architecture.


Computers using vacuum tubes as their electronic elements were in use throu
ghout the
1950s, but by the 1960s had been largely replaced by transistor
-
based machines, which
were smaller, faster,
and cheaper

to produce, required less power, and were more reliable.
The first transistorised computer

was demonstrated a
t the University of Manchester in
1953.[15] In the 1970s, integrated circuit technology and the subsequent creation of
microprocessors, such as the Intel 4004, further decreased size and cost and further
increased speed and reliability of computers. By the

late 1970s, many products such as
video recorders contained dedicated computers called microcontrollers, and they started to
appear as a replacement to mechanical controls in domestic appliances such as washing
machines. The 1980s witnessed home computers

and the now ubiquitous personal
computer. With the evolution of the Internet, personal computers are becoming as common
as the television and the telephone in the household.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
9

of
24


Modern smartphones are fully
-
programmable computers in their own right, and as o
f 2009
may well be the most common form of such computers in existence.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
10

of
24



Programs

In practical terms, a computer

program may run from just a few instructions to many
millions of instructions, as in a program for a word processor

or a web browser. A typical
modern computer can execute billions of instructions per second (gigahertz or GHz) and
rarely make a mistake over many years of operation. Large computer programs consisting of
several million instructions may take

teams of programmers years to write, and due to the
complexity of the task almost certainly contain errors.


Errors in computer

programs are called "bugs". Bugs may be benign and not affect the
usefulness of the program, or have only subtle effects. But in some cases they may cause
the program to "hang"

become unresponsive to input such as mouse clicks or keystrokes,
or to complet
ely fail or "crash". Otherwise benign bugs may sometimes may be harnessed
for malicious intent by an unscrupulous user writing an "exploit"

code designed to take
advantage of a bug and disrupt a program's proper execution. Bugs are usually not the fault
of

the computer. Since computers merely execute the instructions they are given, bugs are
nearly always the result of programmer error or an oversight made in the program's
design.[18]


In most computers, individual instructions are stored as machine code wi
th each instruction
being given a unique number (its operation code or opcode for short). The command to add
two numbers together would have one opcode, the command to multiply them would have
a different opcode and so on. The simplest computers are able t
o perform any of a handful
of different instructions; the more complex computers have several hundred to choose
from

each with a unique numerical code. Since the computer
's memory

is able to store
numbers, it can also store
the instruction codes. This leads to the important fact that entire
programs (which are just lists of instructions) can be represented as lists of numbers and can
themselves be manipulated inside the computer just as if they were numeric data. The
fundamen
tal concept of storing programs in the computer's memory alongside the data
they operate on is the crux of the von Neumann, or stored program, architecture. In some
cases, a computer might store some or all of its program in memory that is kept separate
fr
om the data it operates on. This is called the Harvard architecture after the Harvard Mark I
computer. Modern von Neumann computers display some traits of the Harvard architecture
in their designs, such as in CPU caches.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
11

of
24


While it is possible to write comp
uter

programs as long lists of numbers (machine language)
and this technique was used with many early computers,[19] it is extremely tedious to do so
in practice, especially for complicated programs. Instead, each basic instruction can be
given
a short name that is indicative of its function and easy to remember

a mnemonic such as
ADD, SUB, MULT or JUMP. These mnemonics are collectively known as a computer's
assembly language. Converting programs written in assembly language into something
the
computer can actually understand (machine language) is usually done by a computer
program called an assembler. Machine languages and the assembly languages that
represent them (collectively termed low
-
level programming languages) tend to be unique to
a

particular type of computer. For instance, an ARM architecture computer (such as may be
found in a PDA or a hand
-
held videogame) cannot understand the machine language of an
Intel Pentium or the AMD Athlon 64 computer that might be in a PC.[20]


Though co
nsiderably easier than in machine language, writing long programs in assembly
language is often difficult and error prone. Therefore, most complicated programs are
written in more abstract high
-
level programming languages that are able to express the
needs

of the programmer more conveniently (and thereby help reduce programmer error).
High level languages are usually "compiled" into machine language (or sometimes into
assembly language and then into machine language) using another computer

program
called a compiler.[21] Since high level languages are more abstract than assembly language,
it is possible to use different compilers to translate the same high level language program
into the machine language of many different types of computer. T
his is part of the means by
which software

like video games may be made available for different computer
architectures such as personal computers and various video game consoles.


The task of developing large software

syst
ems presents a significant intellectual challenge.
Producing software with an acceptably high reliability within a predictable schedule and
budget has historically been difficult; the academic and professional discipline of software
engineering concentrate
s specifically on this challenge.

Function

A general purpose

computer

has four main components: the arithmetic logic unit (ALU
), the
control unit, the memory
, and the input and output devices (col
lectively termed I/O). These
parts are interconnected by busses, often made of groups of wires.


Inside each of these parts are thousands to trillions of small electrical circuits which can be
turned off or on by means of an electronic switch. Each circuit

represents a bit (binary digit)
of information

so that when the circuit is on it represents a "1", and when off it represents a
Introduction to Computers

by Reed, McLellan, and Leroy


Page
12

of
24


"0" (in positive logic representation). The circuits are arranged in logic gates so that one or
more of the

circuits may control the state of one or more of the other circuits.

Control Unit

The control unit, ALU
, registers, and basic I/O (and often other hardware closely linked with
these) are collectively known as a central processing unit (CPU). E
arly CPUs were composed
of many separate components but since the mid
-
1970s CPUs have typically been
constructed on a single integrated circuit called a microprocessor.

The control unit (often
called a control system or central controller) manages the
computer
's various components;
it reads and interprets (decodes) the program instructions, transforming them into a series
of control signals which activate other parts of the computer.[22] Control systems in
advanced computers may change
the order of some instructions so as to improve
performance.


A key component common to all CPUs is the program counter, a special memory

cell (a
register) that keeps track of which location in memory the next instruction is to be read
from.
[23]


The control system's function is as follows

note that this is a simplified description, and
some of these steps may be performed concurrently or in a different order depending on
the type of CPU:



1. Read the code for the next instruction from the

cell indicated by the program counter.


2. Decode the numerical code for the instruction into a set of commands or signals for
each of the other systems.


3. Increment the program counter so it points to the next instruction.


4. Read whatever data
the instruction requires from cells in memory

(or perhaps from an
input device). The location of this required data is typically stored within the instruction
code.


5. Provide the necessary data to an ALU

or register.


6. If

the instruction requires an ALU

or specialized hardware to complete, instruct the
hardware to perform the requested operation.


7. Write the result from the ALU

back to a memory

location or to a register or perhaps

an
output device.

Introduction to Computers

by Reed, McLellan, and Leroy


Page
13

of
2
4



8. Jump back to step (1).


Since the program counter is (conceptually) just another set of memory

cells, it can be
changed by calculations done in the ALU
. Adding 100 to the program counter would cause
the
next instruction to be read from a place 100 locations further down the program.
Instructions that modify the program counter are often known as "jumps" and allow for
loops (instructions that are repeated by the computer
) and often conditi
onal instruction
execution (both examples of control flow).


It is noticeable that the sequence of operations that the control unit goes through to
process an instruction is in itself like a short computer

program

and indeed, in some more
complex CPU designs, there is another yet smaller computer called a microsequencer that
runs a microcode program that causes all of these events to happen.

Arithmetic/logic unit (ALU
)

The ALU

is capable of performing two classes of
operations: arithmetic and logic.[24]


The set of arithmetic operations that a particular ALU

supports may be limited to adding and
subtracting or might include multiplying or dividing, trigonometry functions (sine, cosine,
etc) and square root
s. Some can only operate on whole numbers (integers) whilst others use
floating point to represent real numbers

albeit with limited precision. However, any
computer

that is capable of performing just the simplest operations can be programm
ed to
break down the more complex operations into simple steps that it can perform. Therefore,
any computer can be programmed to perform any arithmetic operation

although it will
take more time to do so if its ALU does not directly support the operation. A
n ALU may also
compare numbers and return boolean truth values (true or false) depending on whether
one is equal to, greater than or less than the other ("is 64 greater than 65?").


Logic operations involve Boolean logic: AND, OR, XOR and NOT. These can be

useful both for
creating complicated conditional statements and processing boolean logic.


Superscalar computers may contain multiple ALUs so that they can process several
instructions at the same time.[25] Graphics processors and computers with SIMD and
MIMD
features often provide ALUs that can perform arithmetic on vectors and matrices.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
14

of
24



Memory

A computer
's memory

can be viewed as a list of cells into which numbers can be placed or
read. Each cell has a numbered "address" and can store a single number. The computer can
be instructed to "put the number 123 into the cell numbered 1357" or to "add the number
that is i
n cell 1357 to the number that is in cell 2468 and put the answer into cell 1595". The
information

stored in memory may represent practically anything. Letters, numbers, even
computer instructions can be placed into memory with equal ea
se. Since the CPU does not
differentiate between different types of information, it is the software
's responsibility to
give significance to what the memory sees as nothing but a series of numbers.


In almost all modern computers, each mem
ory

cell is set up to store binary numbers in
groups of eight bits (called a byte). Each byte is able to represent 256 different numbers (2

8
= 256); either from 0 to 255 or
-
128 to +127. To store larger numbers, several consecutive
bytes ma
y be used (typically, two, four or eight). When negative numbers are required, they
are usually stored in two's complement notation. Other arrangements are possible, but are
usually not seen outside of specialized applications or historical contexts. A com
puter

can
store any kind of information

in memory if it can be represented numerically. Modern
computers have billions or even trillions of bytes of memory.


The CPU contains a special set of memory

cells

called registers that can be read and written
to much more rapidly than the main memory area. There are typically between two and one
hundred registers depending on the type of CPU. Registers are used for the most frequently
needed data items to avoid hav
ing to access main memory every time data is needed. As
data is constantly being worked on, reducing the need to access main memory (which is
often slow compared to the ALU

and control units) greatly increases the computer
's sp
eed.


Computer main memory

comes in two principal varieties: random
-
access memory or RAM
and read
-
only memory or ROM. RAM can be read and written to anytime the CPU
commands it, but ROM is pre
-
loaded with data and software

t
hat never changes, so the CPU
can only read from it. ROM is typically used to store the computer
's initial start
-
up
instructions. In general, the contents of RAM are erased when the power to the computer is
turned off, but ROM retains its
data indefinitely. In a PC, the ROM contains a specialized
program called the BIOS that orchestrates loading the computer's operating system from
the hard disk drive into RAM whenever the computer is turned on or reset. In embedded
computers, which frequen
tly do not have disk drives, all of the required software may be
Introduction to Computers

by Reed, McLellan, and Leroy


Page
15

of
24


stored in ROM. Software stored in ROM is often called firmware, because it is notionally
more like hardware than software. Flash memory blurs the distinction between ROM and
RAM, as it retain
s its data when turned off but is also rewritable. It is typically much slower
than conventional ROM and RAM however, so its use is restricted to applications where high
speed is unnecessary.[26]


In more sophisticated computers there may be one or more RA
M cache memories which are
slower than registers but faster than main memory
. Generally computers with this sort of
cache are designed to move frequently needed data into the cache automatically, often
without the need for any intervention o
n the programmer's part.

Multitasking

While a computer

may be viewed as running one gigantic program stored in its main
memory
, in some systems it is necessary to give the appearance of running several
programs
simultaneously. This is achieved by multitasking

i.e. having the computer switch
rapidly between running each program in turn.[29]


One means by which this is done is with a special signal called an interrupt which can
periodically
cause the computer

to stop executing instructions where it was and do
something else instead. By remembering where it was executing prior to the interrupt, the
computer can return to that task later. If several programs are running "at the

same time",
then the interrupt generator might be causing several hundred interrupts per second,
causing a program switch each time. Since modern computers typically execute instructions
several orders of magnitude faster than human perception, it may app
ear that many
programs are running at the same time even though only one is ever executing in any given
instant. This method of multitasking

is sometimes termed "time
-
sharing" since each
program is allocated a "slice" of time in turn.[
30]


Before the era of cheap computers, the principle use for multitasking

was to allow many
people to share the same computer
.


Seemingly, multitasking

would cause a computer

that

is switching between several
programs to run more slowly


in direct proportion to the number of programs it is
running. However, most programs spend much of their time waiting for slow input/output
devices to complete their tasks. If a program is waiting

for the user to click on the mouse or
press a key on the keyboard, then it will not take a "time slice" until the event it is waiting
Introduction to Computers

by Reed, McLellan, and Leroy


Page
16

of
24


for has occurred. This frees up time for other programs to execute so that many programs
may be run at the same time with
out unacceptable speed loss.

Multiprocessing

Some computers are designed to distribute their work across several CPUs in a
multiprocessing configuration, a technique once employed only in large and powerful
machines such as supercomputers, mainframe comput
ers and servers. Multiprocessor

and
multi
-
core (multiple CPUs on a single integrated circuit) personal and laptop computers are
now widely available, and are being increasingly used in lower
-
end markets as a result.


Supercomputers i
n particular often have highly unique architectures that differ significantly
from the basic stored
-
program architecture and from general purpose

computers.[31] They
often feature thousands of CPUs, customized high
-
speed interconnects, and
specialized
computing hardware. Such designs tend to be useful only for specialized tasks due to the
large scale of program organization required to successfully utilize most of the available
resources at once. Supercomputers usually see usage in large
-
sca
le simulation, graphics
rendering, and cryptography applications, as well as with other so
-
called "embarrassingly
parallel" tasks.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
17

of
24



Networking and the Internet

Computers have been used to coordinate information

between multiple locatio
ns since the
1950s. The U.S. military's SAGE system was the first large
-
scale example of such a system,
which led to a number of special
-
purpose

commercial systems like Sabre.[32]


In the 1970s, computer

engineers at resear
ch institutions throughout the United States
began to link their computers together using telecommunications technology. This effort
was funded by ARPA (now DARPA), and the computer network that it produced was called
the ARPANET.[33] The technologies that

made the Arpanet possible spread and evolved.


In time, the network spread beyond academic and military institutions and became known
as the Internet. The emergence of networking

involved a redefinition of the nature and
boundaries of the computer
. Computer operating systems and applications were modified
to include the ability to define and access the resources of other computers on the network,
such as periphera
l devices, stored information
, and the like, as extensions of the resources
of an individual computer. Initially these facilities were available primarily to people working
in high
-
tech environments, but in the 1990s the spread of appli
cations like e
-
mail and the
World Wide Web, combined with the development of cheap, fast networking technologies
like Ethernet and ADSL saw computer networking become almost ubiquitous. In fact, the
number of computers that are networked is growing phenome
nally. A very large proportion
of personal computers regularly connect to the Internet to communicate and receive
information. "Wireless" networking, often utilizing mobile phone networks, has meant
networking is becoming increasingly ubiquitous even in mo
bile computing environments.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
18

of
24



Overview of Computer Software

Computer software

is often regarded as anything but hardware, meaning that the "hard"
are the parts that are tangible while the "soft" part is the intangible objects inside the
c
omputer
. Software encompasses an extremely wide array of products and technologies
developed using different techniques like programming languages, scripting languages,
microcode, or an FPGA configuration. The types of software include web

pages developed
by technologies like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like
OpenOffice, Microsoft

Word developed by technologies like C, C++, Java,or C#. Software
usually runs on an underlying software operatin
g systems such as the Linux or Microsoft
Windows. Software also includes video games and the logic systems of modern consumer
devices such as automobiles, televisions, and toasters.

Relationship to computer

hardware

Computer software

is so called to distinguish it from computer

hardware, which
encompasses the physical interconnections and devices required to store and execute (or
run) the software. At the lowest level, software consists of a machine languag
e specific to an
individual processor
. A machine language consists of groups of binary values signifying
processor instructions that change the state of the computer from its preceding state.
Software is an ordered sequence of instruction
s for changing the state of the computer
hardware in a particular sequence. It is usually written in high
-
level programming languages
that are easier and more efficient for humans to use (closer to natural language) than
machine language. High
-
level langua
ges are compiled or interpreted into machine language
object code. Software may also be written in an assembly language, essentially, a mnemonic
representation of a machine language using a natural language alphabet. Assembly language
must be assembled int
o object code via an assembler.


The term "software
" was first used in this sense by John W. Tukey in 1958.[3] In computer

science and software engineering, computer software is all computer programs. The theory
that is th
e basis for most modern software was first proposed by Alan Turing in his 1935
essay Computable numbers with an application to the Entscheidungsproblem.

Execution

Computer software

has to be "loaded" into the computer
's
storage (such as a [hard drive],
memory
, or RAM). Once the software has loaded, the computer is able to execute the
software. This involves passing instructions from the application software, through the
system software, to the hardware whic
h ultimately receives the instruction as machine
code. Each instruction causes the computer to carry out an operation


moving data,
carrying out a computation, or altering the control flow of instructions.

Introduction to Computers

by Reed, McLellan, and Leroy


Page
19

of
24



Data movement is typically from one place in mem
ory

to another. Sometimes it involves
moving data between memory and registers which enable high
-
speed data access in the
CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes
avoided by using "pointers" to d
ata instead. Computations include simple operations such
as incrementing the value of a variable data element. More complex computations may
involve many operations and data elements together.

Quality and reliability

Software quality is very important,
especially for commercial and system software

like
Microsoft

Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a
person's work, crash the computer

and do other unexpected t
hings. Faults and errors are
called "bugs." Many bugs are discovered and eliminated (debugged) through software
testing. However, software testing rarely


if ever


eliminates every bug; some
programmers say that "every program has at least one more bug"
(Lubarsky's Law). All
major software companies, such as Microsoft, Novell and Sun Microsystems, have their own
software testing departments with the specific goal of just testing. Software can be tested
through unit testing, regression testing and other me
thods, which are done manually, or
most commonly, automatically, since the amount of code to be tested can be quite large.
For instance, NASA has extremely rigorous software testing procedures for many operating
systems and communication functions. Many NA
SA based operations interact and identify
each other through command programs called software. This enables many people who
work at NASA to check and evaluate functional systems overall. Programs containing
command software enable hardware engineering and
system operations to function much
easier together.

License

The software
's license gives the user the right to use the software in the licensed
environment. Some software comes with the license when purchased off the shelf, or an
OEM licen
se when bundled with hardware. Other software comes with a free software
license, granting the recipient the rights to modify and redistribute the software. Software
can also be in the form of freeware or shareware.

Patents

Software can be patented; howeve
r, software

patents can be controversial in the software
industry with many people holding different views about it. The controversy over software
patents is that a specific algorithm or technique that the software has may not be
duplicate
d by others and is considered an intellectual property and copyright infringement
depending on the severity. Some people believe that software patent hinder software
development, while others argue that software patents provide an important incentive to
sp
ur software innovation.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
20

of
24



Design and implementation

Design and implementation of software

varies depending on the complexity of the software.
For instance, design and creation of Microsoft

Word software will take much lon
ger time
than designing and developing Microsoft Notepad because of the difference in
functionalities in each one.


Software is usually designed and created (coded/written/programmed) in integrated
development environments (IDE) like Eclipse, Emacs and Mic
rosoft

Visual Studio that can
simplify the process and compile the program. As noted in different section, software

is
usually created on top of existing software and the application programming interface (API)
that the u
nderlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are
categorized for different purposes. For instance, JavaBeans library is used for designing
enterprise applications, Windows Forms library is used for designing graphical user in
terface
(GUI) applications like Microsoft Word, and Windows Communication Foundation is used for
designing web services. Underlying computer

programming concepts like quicksort,
hashtable, array, and binary tree can be useful to creating s
oftware. When a program is
designed, it relies on the API. For instance, if a user is designing a Microsoft Windows
desktop application, he/she might use the .NET Windows Forms library to design the
desktop application and call its APIs like Form1.Close()
and Form1.Show()[5] to close or
open the application and write the additional operations him/herself that it need to have.
Without these APIs, the programmer needs to write these APIs him/herself. Companies like
Sun Microsystems, Novell, and Microsoft prov
ide their own APIs so that many applications
are written using their software libraries that usually have numerous APIs in them.


Software has special economic characteristics that make its design, creation, and
distribution different from most other econo
mic goods.[6][7] A person who creates
software

is called a programmer, software engineer, software developer, or code monkey,
terms that all essentially have a same meaning.


Introduction to Computers

by Reed, McLellan, and Leroy


Page
21

of
24



Industry and Organizations

Software has its own niche industry
that is called the software

industry made up of different
entities and peoples that produce software, and as a result there are many software
companies and programmers in the world. Because software is increasingly used in many
different a
reas like in finance, searching, mathematics, space exploration, gaming and
mining and such, software companies and people usually specialize in certain areas. For
instance, Electronic Arts primarily creates video games.


Also selling software

can be quite a profitable industry. For instance, Bill Gates, the founder
of Microsoft

is the second richest man in the world in 2008 largely by selling the Microsoft
Windows and Microsoft Office software programs. The same goes for Larry Ellison, largely
through his Oracle database software.


There are also many non
-
profit software

organizations like the Free Software Foundation,
GNU Project, Mozilla Foundation. Also there are many software standard organizations like
the W3C, IETF and others that try to come up with a software standard so that many
software can work and in
teroperate with each other like through standards such as XML,
HTML, HTTP or FTP.


Some of the well known software

companies include Microsoft
, Oracle, Novell, SAP, Adobe
Systems, and Corel.


Resources

Here is a list of what we feel are the top websites for more computer

information
.

Table
1

-

Top Web Sources

Top Web Source

Source

URL

The new iMac

Apple

http://www.apple.com/ca/

How Computer Memory Works

Howstuffworks

http://computer

An Illustrated History of
Computers

Computer Science Lab

http://www.computersciencelab.com/ComputerHistory/History.htm

Timeline of Computer History

Computer History Museum

http://www.computerhistory.org/timeline/?category=cmptr

Computers,
Evolution of
Electronic

Encyclopedia.com

http://www.encyclopedia.com/doc/1G2
-
3407500068.html

One Google Search Uses A 1000
Computers

Gizmodo

http://gizmodo.com/5157533/one
-
google
-
search
-
uses
-
1000
-
computers

Top 10 Cool Uses for Old
Computers and Laptops

Makeuseof.com

http://www.makeuseof.com/tag/top
-
10
-
cool
-
uses
-
for
-
old
-
computers
-
and
-
laptops/

A History of Computers

About.com

http://inventors.about.com/library/blcoindex.htm

How PCs Work

Howstuffworks

http://inventors.about.com/library/blcoindex.htm

The Disadvantages of Owning a
Computer

Crosswalk.com

http://www.crossw
alk.com/fun/computers
-
internet/1357972/

Index
A

ALU ∙ 2, 10, 11, 12, 13

C

computer ∙ 2, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 16, 17, 18,
19, 21

H

history ∙ 5

I

information

∙ 3, 6, 10, 13, 16,
21

M

memory ∙ 9, 10, 11, 12, 13, 14,
17, 18, 21

Microsoft ∙ 17, 18, 19, 20

Multiprocessor ∙ 15

multitasking ∙ 14

N

networking ∙ 16

P

processor ∙ 9, 17

purpose ∙ 8, 10, 15, 16

S

software ∙ 10, 13, 17, 18, 19,
20




Introduction to Computers

by Reed, McLellan, and Leroy


Page
24

of
24


References


1.

# a Kempf, Karl (1961). Historical Monograph: Electronic Computers Within the
Ordnance Corps. Aberdeen Proving Ground (United States Army). http://ed
-
thelen.org/comp
-
hist/U
-
S
-
Ord
-
61.html.

2.

# a Phillips, Tony (2000). "The Antikythera Mechanism I". American Mathematical
Society. http://www.math.sunysb.edu/~tony/whatsnew/column/antikytheraI
-
0400/kyth1.html. Retrieved 2006
-
04
-
05.

3.

# a Shannon, Claude Elwood (1940). A symbolic analysis of relay

and switching
circuits. Massachusetts Institute of Technology.
http://hdl.handle.net/1721.1/11173.

4.

# a Digital Equipment Corporation (1972) (PDF). PDP
-
11/40 Processor Handbook.
Maynard, MA: Digital Equipment Corporation.
http://bitsavers.vt100.net/dec/w
ww.computer.museum.uq.edu.au_mirror/D
-
09
-
30_PDP11
-
40_Processor_Handbook.pdf.

5.

# a Verma, G.; Mielke, N. (1988). Reliability performance of ETOX based flash
memories. IEEE International Reliability Physics Symposium.

6.

# a Meuer, Hans; Strohmaier, Erich; S
imon, Horst; Dongarra, Jack (2006
-
11
-
13).
"Architectures Share Over Time". TOP500.
http://www.top500.org/lists/2006/11/overtime/Architectures. Retrieved 2006
-
11
-
27.

7.

# Lavington, Simon (1998), A History of Manchester Computers (2 ed.), Swindon:
The British

Computer Society, ISBN 0902505018

8.

# Stokes, Jon (2007). Inside the Machine: An Illustrated Introduction to
Microprocessors and Computer Architecture. San Francisco: No Starch Press. ISBN
978
-
1
-
59327
-
104
-
6.


.howstuffworks.com/computer
-
memory
.htm