A little bit of history Jordi Cortadella Department of Computer Science.

Slides:



Advertisements
Similar presentations
4/23/2015Engineering Problem Solving with C++ second edition, J. ingber 1 Engineering Problem Solving with C++, Etter/Ingber Chapter 1.
Advertisements

Introduction to Computers 2010 Class: ________________ Name: ________________.
Introduction to Computer Programming Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
CSC 2400 Computer Systems I Lecture 3 Big Ideas. 2 Big Idea: Universal Computing Device All computers, given enough time and memory, are capable of computing.
CSCI-235 Micro-Computers in Science Course Information & Introduction.
Chapter 01 Introduction Chapter 0 Introduction. Chapter 02 History of Computing - Early Computers Abacus (ancient orient, still in use) Slide rule (17C,
The Analytical Engine Module 6 Program Translation.
TK 2123 COMPUTER ORGANISATION & ARCHITECTURE
Appendix The Continuing Story of the Computer Age.
Introduction to Computers and Programming. Some definitions Algorithm: –A procedure for solving a problem –A sequence of discrete steps that defines such.
©TheMcGraw-Hill Companies, Inc. Permission required for reproduction or display. COMPSCI 125 Introduction to Computer Science I.
CS 104 Introduction to Computer Science and Graphics Problems History of Computer 09/05/2008 Yang Song (Prepared by Yang Song and Suresh Solaimuthu)
1 CSE1301 Computer Programming: Lecture 34 Introduction to the History of Computing.
1 The development of modern computer systems Early electronic computers Mainframes Time sharing Microcomputers Networked computing.
The CPU The Central Presentation Unit Language Levels Fetch execute cycle Processor speed.
Evolution of Computers
Introduction to Programming (in C++) Introduction Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
Introduction to Computers. Are Computers Important? OF COURSE!
Chapter 1 The Big Picture Chapter Goals Describe the layers of a computer system Describe the concept of abstraction and its relationship to computing.
1 6 Abacus An early device to record numeric values Blaise Pascal Mechanical device to add, subtract, divide & multiply Joseph Jacquard Jacquard’s Loom,
Computer Science I CS rmaclin
History of Programming Languages
©The McGraw-Hill Companies, Inc. Permission required for reproduction or display. 4 th Ed Chapter Chapter 0 - Introduction to Computers and Programming.
Fall, 2006Computer Strtucture1 Computer Structure Nathan Friedman Fall, 2006.
CS 1 •This is Computer Science 1. •Who is Professor Adams?
Wilhelm Schickhard (1623) Astronomer and mathematician Automatically add, subtract, multiply, and divide Blaise Pascal (1642) Mathematician Mass produced.
1 Computer Systems. 2 Introduction – What is a Computer? This course is all about how computers work What do computer and computer system mean to you?
The History of Computers
CCSE251 Introduction to Computer Organization
CS 1410 Intro to Computer Tecnology Computers and History1.
Levels of Architecture & Language CHAPTER 1 © copyright Bobby Hoggard / material may not be redistributed without permission.
Introduction Chapter 1. 1 History of Computers Development of computers began with many early inventions: The abacus helped early societies perform computations.
COMPUTER PROGRAMS AND LANGUAGES Chapter 4. Developing a computer program Programs are a set (series) of instructions Programmers determine The instructions.
1.1 The Computer Revolution. Computer Revolution Early calculating machines Mechanical devices used to add and subtract By Babylonian (Iraq) 5000 years.
Programming History. Who was the first programmer?
CMSC 120: Visualizing Information 1/29/08 Introduction to Computing.
Computer Science What is Computer Science? Algorithm Design and Analysis Organization and Architecture Artificial Intelligence Databases Operating Systems.
COMP 268 Computer Organization and Assembly Language A Brief History of Computing Architecture.
ECE 103 Engineering Programming Chapter 5 Programming Languages Herbert G. Mayer, PSU CS Status 6/19/2015 Initial content copied verbatim from ECE 103.
Computer Generations Evolution of the Computer. Modern Computers Modern computers – Binary, electrical, computational devices.
C++ Programming: From Problem Analysis to Program Design, Third Edition Chapter 1: An Overview of Computers and Programming Languages.
Software Basics. Some Pioneers Charles Babbage Analytical Engine Countess Ada Lovelace First Programmer ? John Von Neumann storing instructions in memory.
CPIT 201 Introduction to Computing
Chapter 1 Introduction.
29 September 2015Birkbeck College, U. London1 Introduction to Computer Systems Lecturer: Steve Maybank Department of Computer Science and Information Systems.
Computer & TechnologyMahidol Wittayanusorn School1 History of Computers ง เทคโนโลยีสารสนเทศ พื้นฐาน.
Computer History How did we get here?.
Why build a computer? u Computers were developed to mechanize mathematical computations. u Two definitions:  A computer is “a programmable electronic.
Who invented the computer?
ICC Module 3 Lesson 1 – Computer Architecture 1 / 12 © 2015 Ph. Janson Information, Computing & Communication Computer Architecture Clip 5 – Memory Circuits.
Information Age “An in depth look at the exciting history of the Calculator and Computer”
CS 101 INTRODUCTION TO COMPUTING * image from The Central Eglinton Community Centre website.
Generations of Computing. The Computer Era Begins: The First Generation  1950s: First Generation for hardware and software Vacuum tubes worked as memory.
Riyadh Philanthropic Society For Science Prince Sultan College For Woman Dept. of Computer & Information Sciences CS 251 Introduction to Computer Organization.
Computer Operation. Binary Codes CPU operates in binary codes Representation of values in binary codes Instructions to CPU in binary codes Addresses in.
Computer Organization IS F242. Course Objective It aims at understanding and appreciating the computing system’s functional components, their characteristics,
1 Chapter 1 Background Fundamentals of Java: AP Computer Science Essentials, 4th Edition Lambert / Osborne.
Hardware and Software UCT Department of Computer Science Computer Science 1015F Hussein Suleman March 2009.
Jordi Cortadella Department of Computer Science
CSCI 161: Introduction to Programming
ECE 103 Engineering Programming Chapter 5 Programming Languages
Chapter 1: An Overview of Computers and Programming Languages
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
课程名 编译原理 Compiling Techniques
Jordi Cortadella Department of Computer Science
Introduction to Computer Programming
ICT Programming Lesson 1:
Chapter 0 Introduction Introduction Chapter 0.
Presentation transcript:

A little bit of history Jordi Cortadella Department of Computer Science

Mechanization Introduction to Programming© Dept. CS, UPC2

Mechanization Introduction to Programming© Dept. CS, UPC3

The old dream of mechanical computing Introduction to Programming© Dept. CS, UPC4 Calculating-Table by Gregor Reisch: Margarita Philosophica, Roman Abacus 18 th -century calculating machine

The first mechanical computer Introduction to Programming© Dept. CS, UPC5 Charles Babbage ( ), English mathematician, philosopher, inventor and mechanical engineer. Invented the difference engine (never finished). Useful to tabulate polynomial functions.

ENIAC (1946) The first electronic general-purpose computer, designed to calculate artillery firing tables. 167 m 2, 27 tons, it could solve 5000 additions and 385 multiplications in 1 second. Programmable with switches and cables. Programming an algorithm could take several weeks. Introduction to Programming© Dept. CS, UPC6

Programmable digital computers Alan Turing ( ), the father of modern digital computers. During 2 nd World War, he broke German ciphers generated by the Enigma machine. The war in Europe was shortened by at least two years. The bombe was the electromechanical machine created to break Enigma. It could perform chains of logical deductions for each setting of the rotors. Introduction to Programming© Dept. CS, UPC7

Introduction to Programming© Dept. CS, UPC8

Introduction to Programming© Dept. CS, UPC9

Turing machine A universal machine: theoretical model for computability. It can simulate any computer algorithm. Useful to understand the limits of mechanical computations. Turing machines were the inspiration for modern CPUs. Introduction to Programming© Dept. CS, UPC Control Read/write head Infinite tape

Modern digital computers John von Neumann ( ). Inspired by Turing’s work, he proposed the architecture of modern digital computers. Essential innovation: programs stored in memory. Most computers today are based on von Neumann’s architecture. Introduction to Programming© Dept. CS, UPC11

Von Neumann’s architecture Introduction to Programming© Dept. CS, UPC Memory Location 0 Location 1 Location 2 Location 3 Location 4 Program Data Control Unit Read instruction Program counter Arithmetic Logic Unit Read data Write data Input Output registers CPU

Why digital? Binary digit (bit): minimum unit of information – yes/no, on/off, true/false, am/pm, open/close, … Binary representations are very convenient for physical (electrical) implementations. Electronic computers use voltage levels to represent bits, e.g., 0 (0 volts) and 1 (3.3 volts) Introduction to Programming© Dept. CS, UPC13 0: 1:

Representing information with bits 1 bit  2 states (0, 1) 2 bits  4 states (00, 01, 10, 11) 3 bits  8 states (000, 001, 010, 011, 100, 101, 110, 111) n bits  2 n states Introduction to Programming© Dept. CS, UPC14 RGBColorName Green Black White Magenta Turquoise Chocolate Example: RGB model for colors Any color can be generated by adding the three components with different intensity. 24 bits  16,777,216 colors

Representing information with bits Introduction to Programming© Dept. CS, UPC15

Representing numbers with bits Introduction to Programming© Dept. CS, UPC

Arithmetic operations (154) (51) (205) Introduction to Programming© Dept. CS, UPC (9) x (19) (171) Conventional computers work with 32- or 64-bit representations. Not all the results can be represented (not enough bits).

Logic circuits and chips Introduction to Programming© Dept. CS, UPC18

The evolution of technology Introduction to Programming© Dept. CS, UPC19 Intel Ivy Bridge-HE-4 (2013) 160 mm 2, 4 cores 130 W of power 10 billion additions / sec 1.4 billion transistors (22nm) ENIAC (1946) 167 m 2, 270 tons 150 kW of power 5,000 additions / sec 17,468 vacuum tubes 7,200 crystal diodes, 1,500 relays 70,000 resistors, 10,000 capacitors 0.8 cm 2 cm Core 1Core 2Core 3Core 4

The fascinating world of technology Introduction to Programming© Dept. CS, UPC20

Back to von Neumann’s architecture Introduction to Programming© Dept. CS, UPC Memory Location 0 Location 1 Location 2 Location 3 Location 4 Program Data Control Unit Read instruction Program counter Arithmetic Logic Unit Read data Write data Input Output registers

Machine code MIPS architecture (32 bits): arith R1 R2 R6 add R6  R1 + R load R3 R8 68 R8  Memory [R3 + 68] jump 1024 PC  PC Introduction to Programming© Dept. CS, UPC22

Assembly language fact: bne$a0, $zero, gen ori $v0, $zero, 1 jr $ra gen: addiu $sp, $sp, -8 sw $ra, 4($sp) sw $a0, 0($sp) addiu $a0, $a0, -1 jal fact lw $a0, 0($sp) lw $ra, 4($sp) addiu $sp, $sp, 8 mul$v0, $v0, $a0 jr$ra Introduction to Programming© Dept. CS, UPC23 operation operands MIPS assembly language Every line corresponds to an instruction of machine code Function that calculates the factorial of a number (n!) addiu $a0 $a

High-level programming languages Programming in assembly language is a tedious and unpleasant task. Every computer has a different assembly language  incompatibility of codes. High-level languages: – Independent from the computer – Higher levels of abstraction – Closer to natural language (if-then, while-do, …) The first high-level language with broad adoption was FORTRAN, developed by IBM in the 1950s for scientific and engineering applications. Today, there are thousands of programming languages: – FORTRAN, Cobol, Java, C++, Python, Go, Haskell, Perl, Excel, Pascal, Javascript, PHP, C#, R, Matlab, SQL, … Introduction to Programming© Dept. CS, UPC24 C AREA OF A TRIANGLE - HERON'S FORMULA C INPUT - CARD READER UNIT 5, INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING INTEGER A,B,C READ(5,501) A,B,C 501 FORMAT(3I5) IF(A.EQ.0.OR. B.EQ.0.OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C)) WRITE(6,601) A,B,C,AREA 601 FORMAT(4H A=,I5,5H B=,I5,5H C=,I5,8H AREA=,F10.2,12HSQUARE UNITS) STOP END C AREA OF A TRIANGLE - HERON'S FORMULA C INPUT - CARD READER UNIT 5, INTEGER INPUT C OUTPUT - LINE PRINTER UNIT 6, REAL OUTPUT C INPUT ERROR DISPLAY ERROR OUTPUT CODE 1 IN JOB CONTROL LISTING INTEGER A,B,C READ(5,501) A,B,C 501 FORMAT(3I5) IF(A.EQ.0.OR. B.EQ.0.OR. C.EQ.0) STOP 1 S = (A + B + C) / 2.0 AREA = SQRT( S * (S - A) * (S - B) * (S - C)) WRITE(6,601) A,B,C,AREA 601 FORMAT(4H A=,I5,5H B=,I5,5H C=,I5,8H AREA=,F10.2,12HSQUARE UNITS) STOP END

High-level programming languages Programming in assembly language is a tedious and unpleasant task. High-level languages: – Independent from the computer – Higher levels of abstraction – Closer to natural language (if-then, while-do, …) The first high-level language: FORTRAN (IBM, 1957). Today, there are thousands of programming languages: – Basic, Cobol, Java, C++, Go, Python, Ruby, Lisp, Haskell, ML, Prolog, Perl, Excel, Pascal, Javascript, PHP, C#, R, Matlab, SQL, Smalltalk, Eiffel, Scratch, … Introduction to Programming© Dept. CS, UPC25

High-level programming languages Introduction to Programming© Dept. CS, UPC26 Function to calculate n!: factorial n = if n == 0 then 1 else nfactorial(n - 1) Haskell int factorial(int n) { if (n == 0) return 1; return nfactorial(n - 1); } C++ def factorial(n): if n == 0: return 1 else: return nfactorial(n - 1) Python MIPS assembly language fact: bne$a0, $zero, gen ori $v0, $zero, 1 jr $ra gen: addiu $sp, $sp, -8 sw $ra, 4($sp) sw $a0, 0($sp) addiu $a0, $a0, -1 jal fact lw $a0, 0($sp) lw $ra, 4($sp) addiu $sp, $sp, 8 mul$v0, $v0, $a0 jr$ra

Compilers Introduction to Programming© Dept. CS, UPC27 int factorial(int n) { if (n == 0) return 1; return nfactorial(n - 1); } Compilers translate programs written in high-level languages into machine code CompilerCompiler

Introduction to Programming© Dept. CS, UPC28

Our challenge in this course Design a program that solves a difficult Sudoku in one second! Introduction to Programming© Dept. CS, UPC29

Introduction to Programming© Dept. CS, UPC30