36
CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

Embed Size (px)

Citation preview

Page 1: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

CMPF144FUNDAMENTALS OF COMPUTING THEORY

An Introduction to Computer Science

Page 2: CMPF144 FUNDAMENTALS 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

Page 3: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

Module 1 CMPF144 Fundamentals of Computing Theory

Slide 3

Module 1

Section 1

A Bit of Formalisation

Page 4: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 5: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 6: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 7: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 8: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 9: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to 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). 

Page 10: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 11: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 12: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 13: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

Module 1 CMPF144 Fundamentals of Computing Theory

Slide 13

Up to 1900

Section 2

A Bit of History: Up to 1900

Page 14: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 15: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 16: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 17: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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)

Page 18: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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. )

Page 19: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 20: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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?

Page 21: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

Module 1 CMPF144 Fundamentals of Computing Theory

Slide 21

From 1900 Onwards

Section 3

Electronics Finds Its Way into Computation

Page 22: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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 !

Page 23: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 24: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 25: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 26: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

Module 1 CMPF144 Fundamentals of Computing Theory

Slide 26

Z3 - Architecture

Page 27: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 28: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 29: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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”

Page 30: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 31: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.  

Page 32: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 33: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.

Page 34: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 35: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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

Page 36: CMPF144 FUNDAMENTALS OF COMPUTING THEORY An Introduction to Computer Science

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.