formalised sequences of actions/calculations which can be followed to
guarantee
the correct solution of a problem
Algorithms long pre-dated computers
from the ancient Greek's we have Euclid's algorithm for
calculating greatest common divisors
from the Chinese we have the abacus, complete with algorithms
for addition, multiplication, division, etc.
from the 1600's the slide rule was used to perform multiplication,
division, calculate square roots, logarithms, etc.
The first mechanical efforts
1642: Blaise Pascal creates an adding machine that
automatically carries from one column to the next
1801: the Jacquard loom is invented - the pattern
of the resulting fabric is programmed using a loop of punched cards
1890's: Hollerith uses punched cards and a mechanical punch/sorting
system are used to carry
out the US census (his company later to be a key player in formulation of IBM)
1930's: Konrad Zuse, Alan Turing and others begin fundamental work
on electromechanical systems and algorithms to carry out complex computations
(Both systems used for cryptographic and missile prototypes during the war.)
The difference engine
in the mid-1800's Charles Babbage worked extensively
on complex calculating devices:
the Difference engine: for calculating nautical tables
the Analytical engine: for more general calculations
Ada King, Countess of Lovelace, closely associated with these projects,
is widely regarded as the first programmer
The first electronic computers
Eckert, Mauchly, and von Neumann co-develop many of the central
ideas for modern computer systems
the ``von Neumann'' architecture is still the key model:
CPU, memory, long-term storage, communication bus, and peripherals
first computers were hard-wired, had to physically exchange cables
to create different programs
early systems included ENIAC, ILLIAC, and UNIVAC (late 1940's)
machines cost hundreds of thousands of dollars, require tens of
thousands of vacuum tubes and relays, huge space requirements, breakdowns
frequent
the `stored program' concept a key idea: have a system which can
use sequences of instructions stored internally
Alan Turing develops theories of computation,
the Turing machine
successfully models describable computation processes
Transistors replace tubes
The next generation of computers: transistors replace vacuum tubes
Tape drives make long-term storage and retrieval of data practical
Improved memory systems allow faster operation and more flexible
programming
Machines become much smaller, faster, cheaper, and more reliable
Computers now practical for large organisations
1952 CBS computers accurately predict results of presidential election,
but results witheld because announcers don't believe them until it's all over
The evolution of programming languages
FORTRAN compiler first developed in 1957
Grace Hopper (eventually Rear Admiral in US navy)
key player in development of first compiler, and the COBOL programming
language (1960).
She is also credited with coining the term ``bug''
Programming vastly enhanced by freedom from assembly language
and availability of subroutines and more advanced programming structures
Programming and software engineering techniques become
key areas of research
High level languages such as C, Fortran, Cobol dominant in
the sixties-early eighties
Appeal of object oriented languages increases in the 80's and 90's
(C++, Java, Ada)
The growth of the Web and associated scripting needs fuels
the development of several new intepretted languages:
designed for rapid development
and ease of use (Perl, Python, PHP, Ruby, etc)
Integrated circuits and operating systems
Integrated circuits allow thousands of logic devices
to be placed in a single ``chip''
Again speed and reliability increase, size and cost decrease
Use of software operating systems vastly enhances usability
and productivity of large systems
IBM starts the 360 series - enables a new generation of massive
software projects and tremendous machine flexibilty
Improvement in data input and output techniques
Computers now affordable for medium-sized businesses
Personal computer market explodes in late 1980s,
continued rapid growth through to present
Various Microsoft operating systems dominate the PC market,
with steady but much smaller scale competition from Mac and Linux
Microprocessors and PCs
1971 first microprocessors and floppy disks available,
mostly ``build-it-yourself'' kits
1975-76 Steve Jobs and Steve Wozniak start up Apple computers
Bill Gates starts with a BASIC compiler for the Altair, founds Microsoft
numerous other small systems started (Tandy, Commodore etc)
1981 IBM, overwhelmingly dominates business computer market, now
enters PC market
1982 Times man of the year is the computer
1984 the Mac introduced with window-based graphics,
later copied by Microsoft for the Windows system - the PC wars are on!
Microsoft cements widespread dominance of PC software in the 1990's
The Internet: computers and communication
1969 ARPAnet commissioned by US DoD
1970 connected to ALOHAnet, 15 sites by 1971, international links
added in 1973
1974 TCP (transmission control program) and FTP (file transfer
protocol) introduced
1976 Queen Elizabeth tries out email for the first time
1979 USENET news groups created
Early 1980's see widespread connections to networks by universities
1000 hosts in 1984
10000 hosts in 1987
100000 hosts in 1989
1000000 hosts in 1993
Gopher released 1991, WWW released 1992
Mosaic takes web by storm 1993 - incredible traffic growth on web
Current dominant browsers: Internet Explorer, Firefox
Explosive growth late 1990's, and by September of 2007
the estimates of the number of people using the Internet
exceed 1.2 billion
Chat, messaging, email, and multiplayer gaming, together with
sites such as Google, Facebook, and YouTube contribute to massive
peronal appeal, while wireless access and portable devices extend
reach even further
AI - the search for thinking machines
1940's Alan Turing suggests the "Turing Test" of machine intelligence
1950's Minsky and McCarthy set up the Artificial Intelligence
Department at MIT
1970's ELIZA, difficulty of AI becoming obvious
1980's to present
neural networks, self-training systems
expert systems - seeking answers in complex search spaces
natural language processing - fundamental `hardness' of natural languages
July '97 Deep Blue - IBM chess machine beats Kasparov in repeated matches
gaming industry begins to expand push for practical+efficient AI
simulations/emulations