cmpf144 fundamentals of computing theory an introduction to computer science
TRANSCRIPT
CMPF144FUNDAMENTALS OF COMPUTING THEORY
An Introduction to Computer Science
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 2
Agenda
Section 1 - A bit of FormalisationSection 2 – a bit of historySection 3 - the emergence of electronics
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 3
Module 1
Section 1
A Bit of Formalisation
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 4
Computer Science: Few Definitions
1. Computer Science (CS) is the study of Computation and Information processing, in hardware and in software.
2. Computer Science, the study of computers, including their design, operation, and use in processing information.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 5
Computer Science Defined: Aspects
Computer science combines both theoretical and practical aspects of engineering, electronics, information theory, mathematics, logic, and human behavior (NOT only programming).
Aspects of computer science range from programming and computer architecture to artificial intelligence and robotics.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 6
Computational Models
1. The Turing machine Model:
Stores characters on an infinitely long tape.
One square, (representing an instruction/formula), being scanned at any given time, (by a read/write head), and executed.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 7
Computational Models Continued ..
2. Recursive Functions Model:
uses functions and function composition to operate on numbers.
The lambda calculus, one of the topics covered under Algorithmic Analysis, uses a similar approach.
Others, including Markov Algorithms and Post Systems, use grammar-like rules to operate on character strings.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 8
Fundamental Principle of CS
The Church-Turing thesis:
• “all known kinds of general computing devices are essentially equivalent in what they can do, although they vary in time and space efficiency”
• This thesis is sometimes treated as the fundamental principle of computer science.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 9
von Neumann Machine
1. Todays Sequential Computers are named after von Neumann computers or Turing machines
2. They resemble most real computers in use today.
3. They do one small, deterministic task at a time. The Deterministic tasks done during an Instruction Cycle are:
“FETCH and EXECUTE a SIMPLE DIRECTIVE “ We know this as an INSTRUCTION).
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 10
Other Types of Computers
Some are practical like:
parallel machines
Some are theoretical like:
Random Machines
Oracle and Quantum machines.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 11
CS Study Spectrum
1. What programs can and cannot do ? Computability and Artificial Intelligence
2. How programs should efficiently perform specific tasks?
Algorithms 3. How programs should store and retrieve specific
kinds of information?
Data Structures4. How programs and people should communicate with
each other? user interfaces programming languages
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 12
First Exercise
Students are grouped into several groupsCategory A identifies 5 items
'that can be solved using computers'
Category B identifies 5 items'that cannot be solved using computers'
Category C identifies 5 items'that can eventually be solved; not so sure; in any case difficult; we don't know‘
Students discuss in class the items identified
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 13
Up to 1900
Section 2
A Bit of History: Up to 1900
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 14
Up to 1900
Theoretical computing began with Pascal and Babbage in the 1800's.
Antikythera mechanism built in 87 B.C
A device for astronomical calculations
Abacus: Ancient Babylonia
Al-Khawrizmi: (around 800 AD)wrote 'Al-jabr wa'l muqabala'(Al-jabr --> Algebra)one of the greatest mathematicians ever
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 15
Up to 1900
Napier, John (1550-1617 )
invented logarithms and first to use decimal to represent fraction numbers
In 1641 the French mathematician and philosopher Blasé Pascal built a mechanical adding machine
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 16
Up to 1900 Continued ..
Gottfried Wilhelm Leibniz (1646-1716). He made a machine similar to Pascal but Leibniz also advocated use of the binary system for doing calculations. Charles Babbage (1791-1871)
• The Difference Engine • The Analytical Engine;
Supposed to calculate tables for x2 + x + 41
Ada Augusta Byron, Countess of Lovelace (1815-1852),
Sometimes is called the ‘first’ programmer, ADA language is named after her.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 17
Up to 1900 Continued ..
George Boole (1815-1864 )Formulated a mathematical form of logic (Boolean Logic)
Herman Hollerith (1860-1929)Invented ‘punched card’ for the machine (like programming tool)
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 18
1900 onwards ..
David Hilbert Questions:
1. Is mathematics complete?
2. Is mathematics consistent?
3. Is mathematics decidable? (Entscheidungsproblem. )
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 19
1900 to 1940s..
1. 1931, Kurt Gödel answered two of Hilbert's questions:
That every sufficiently powerful formal system is either inconsistent or incomplete.
If an axiom system is consistent, this consistency cannot be proved within itself.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 20
1900 to 1940s ..
Hilberts 3rd question remained open, with 'provable' substituted for 'true'.
In 1936, Alan Turing provided a solution to Hilbert's Entscheidungsproblem by constructing a formal model of a computer “The Turing machine”
that there were problems such a machine could not solve. One such problem is the so-called "halting problem": given a Pascal program, does it halt on all inputs?
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 21
From 1900 Onwards
Section 3
Electronics Finds Its Way into Computation
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 22
Electronic Computers ..
Alan Turing: “COLOSSUS”A Computing device breaking ENIGMA Code
Howard H. Aiken : “Mark I”An electromechanical computer in 1944, with theassistance of IBM.
John Vincent Atanasoff and Clifford BerryAn electronic computer for solving systems of linearequations. It never worked properly !
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 23
1940 Onwards …
John William Mauchly with J. Presper Eckert,Jr. :” ENIAC”A general-purpose electronic computer originallyintended for artillery calculations
Von Neumann's report: “EDVAC”"First Draft of a Report on the EDVAC“A very influential report that contains many of theideas still used in most modern digital computers,including a merge-sort routine.
Eckert and Mauchly went on to build UNIVAC.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 24
1940 to 1950 ..
Konrad Zuse: “Z3”The first operational, general-purpose, programcontrolled calculator (1941)
F. C. Williams and others: “MARK 1”Manchester University built the Manchester Mark I,one version of which was working as early as June1948. This machine is sometimes called the firststored-program digital computer.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 25
Konrad Zuse – Z1 and Z3
Zuse1 ('Z1'): first electro-mechanical computer,Berlin, 1936-1938based on rotating metal platesZuse3 ('Z3'): first electrical computer,Berlin, 1939-1941, based on relaysFreely programmablePrograms were stored on punch tape reader -not in memoryMemory was used to store variables
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 26
Z3 - Architecture
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 27
Z3 - Details
Implementation: 600 relays numeric unit, 1600 relays storage unitFrequency: 5-10 HertzNumeric unit: Floating point unit, 16 steps for multiplication,
3 steps for addition, 18 steps divisionSpeed: Multiplication 3 sec, division 3 sec, addition 0.7
secInput: Decimal keyboard with 20 digits, automatic
binary codingOutput: With lamps, 4 decimal digits with decimal pointWord length: 22 Bit, floating point: mantissa, exponent and signNumber of relays: 2000Memory: 1400 relays, 64 words of 22 bitConsumption: Approx. 4000 wattsWeight: Approx. 1000 kg
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 28
Invention of Transistors
John Bardeen, Walter Brattain and WilliamShockley:1947 Invented the Transistor
Transistors started the era of 2nd GenerationComputers.Transformed the computer.Made Microprocessor revolution possible.
For this discovery they won the 1956 Nobel Prize inphysics.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 29
1950 Onwards:
Jay Forrester : 1949Invented magnetic core memory 1949.Grace Murray Hopper : “Compiler”The notion of a compiler, at Remington Rand, in 1951. John Backus and others: “FORTRAN”The first FORTRAN compiler ( April 1957 )John McCarthy : “LISP, 1958”
Alan Perlis, John Backus, Peter Naur and others: Around 1959, “Algol”
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 30
Integrated Circuits and …
Jack Kilby (Texas Instruments)Robert Noyce (Fairchild Semiconductor) invented the integrated circuit in 1959.In the 1960's, computer science came into its own as a discipline. In fact, the term was coined by George Forsythe, a numerical analyst. The first computer science department was formed at Purdue University in 1962
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 31
Integrated Circuits and …
The first person to receive a Ph. D. from a computer science department was Richard Wexelblat, at the University of Pennsylvania, in December 1965.Operating systems saw major advances. Fred Brooks at IBM designed System/360:A line of different computers (“family”) with the same architecture and instruction set, from small machine to top-of-the-line. Edsger Dijkstra at Eindhoven: Designed the THE multiprogramming system.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 32
The Internet …
At the end 1960s, ARPAnet, a precursor to today's Internet, began to be constructed. Unix , a very influential operating system, was developed at Bell Laboratories by Ken Thompson (b. 1943) and Dennis Ritchie (b. 1941). Brian Kernighan and Ritchie together developed C, an influential programming language. Other new programming languages, such as Pascal (invented by Niklaus Wirth) and Ada (developed by a team led by Jean Ichbiah), arose.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 33
CISC, RISC and beyond ..
The first RISC architecture development was begun by John Cocke in 1975The rise of the Supercomputer: “ 1970s” Seymour Cray designed the CRAY-1, which was first shipped in March 1976. It could perform 160 million operations in a second. The Cray XMP came out in 1982.
Cray Research was taken over by Silicon Graphics.
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 34
The Fastest Computer (Top 500 )
http://www.top500.org/lists/2005/11/basic
Date: Nov 2005
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 35
PCs and Internet
1980 decade also saw the rise of the personal computer, thanks to Steve Wozniak and Steve Jobs, founders of Apple Computer.
The first computer viruses are developed c. 1981.
1990 onward we the explosion of Internet that brought computers into the home of millions throughout the world
Module 1 CMPF144 Fundamentals of Computing Theory
Slide 36
Exercise
Turing Test : A test based on written conversation to decide whether the entity in the next room/other side is a human or computerYou are required to find Turing Test or chatterBox on the Internet and perform the test (you can visit this website to find list of test available)[http://www.chatterboxchallenge.com]Based on your observation, explain how do you determine whether the entity is human or computer by stating your reasons.Submit your answer together with the extract of the conversation between you and that entity on the (24th April 2006) during lecture.