History 5/8/18 CONCLUSION. Punch cards

Similar documents
CS2110 CONCLUSION Spring 2018

CS2110 Spring Concluding Lecture: History, Correctness Issues, Summary. Final review session: Fri, 9 May. 1:00 3:00. Phillips 101.

Early Calculating Tools

Copyright 2012 Pearson Education, Inc. Publishing as Prentice Hall

Computers in Engineering COMP 208. A Brief History. Mechanical Calculators. A Historic Perspective Michael A. Hawker

Computers in Engineering COMP 208

You Will Need Floppy Disks for your labs!

A (BRIEF) HISTORY OF COMPUTING. By Dane Paschal

The Generations of Computers

Language Translation, History. CS152. Chris Pollett. Sep. 3, 2008.

Welcome to COS151! 1.1

1: History, Generation & Classification. Shobhanjana Kalita, Dept. of CSE, Tezpur University

Fundamentals of Python: First Programs. Chapter 1: Introduction Modifications by Mr. Dave Clausen

Part (01) Introduction to Computer

Overview of a computer

A Brief History of Computer Science

Computer Basics. Computer Technology

History of Modern Computing Lesson 1

Welcome to COSC Introduction to Computer Science

HISTORY OF COMPUTERS HISTORY OF COMPUTERS. Mesleki İngilizce - Technical English. Punch Card. Digital Data. II Prof. Dr. Nizamettin AYDIN.

Great Inventions written by Bob Barton

HST250 (section 740) Exam #1 Wednesday, February 10, 2010

CHAPTER1 : Part 2 INTRODUCTION & HISTORY OF COMPUTERS. UNIVERSITI TENAGA NASIONAL Generates Professionals

Part 1: Computer and Information Literacy

The trusted, student-friendly online reference tool. Name: Date:

4. History of computers and applications

EVOLUTION OF COMPUTERS. In the early years, before the computer was invented, there are several inventions of counting machines.

Describe the layers of a computer system

An Introduction to Computer Science CS 8: Introduction to Computer Science, Winter 2018 Lecture #2

An Introduction to Computer Science CS 8: Introduction to Computer Science Lecture #2

Babbage s computer 1830s Boolean logic 1850s. Hollerith s electric tabulator Analog computer 1927 EDVAC 1946 ENIAC

Introduction to Computer Science. What is Computer Science?

Chapter 1. The Big Picture

HISTORY OF COMPUTING

A Short History of Computing 09/03/13

CSC 221: Introduction to Programming. Fall 2011

CSC 221: Computer Programming I. Fall 2004

Lecture 2. A Historical View

The History of Computers

Computer Systems. Hardware, Software and Layers of Abstraction

Chronological History of the Pre-Computer Developments

Unit 4: Emerging Technologies. A History of Personal Computing by Mrs. Ogletree

CS 1 Notes 1 - Early Computing and 2 - Electronic Computing

Chapter 1 History & Hardware

Computer History CSCE 101

Downloaded from

(History of Computers) Lecture # 03 By: M.Nadeem Akhtar. Lecturer. URL:

CSC101 Furman University Professor Batchelor

Computer Organization CS 206T

COURSE OVERVIEW. Introduction to Computer Engineering 2015 Spring by Euiseong Seo

CSCI.4430/6969 Programming Languages Lecture Notes

The History of Computers. How did this all get started?

Let s begin with the very beginning...

History of Computers

ALGORITHMS AND PROGRAMMING

1/14/2014. Introduction to CSE 1325 Object Oriented Programming (Using Java) Introduction (Cont.) Introduction

Chapter 2 HISTORICAL DEVELOPMENT OF COMPUTERS

Monday, January 27, 2014

MICROPROCESSOR SYSTEM DESIGN

Computer science First Class Lecture 1

CSC 221: Introduction to Programming. Fall 2018

Notes By: Shailesh Bdr. Pandey, TA, Computer Engineering Department, Nepal Engineering College

CHAPTER 1 Introduction

COMP 102: Computers and Computing Lecture 1: Introduction!

CS 113: Introduction to

Introduction To Computers. About the Course

An Incomplete History of Computation

PROGRAMMING LANGUAGE PARADIGMS & THE MAIN PRINCIPLES OF OBJECT-ORIENTED PROGRAMMING

Chapter 1: An Introduction to Computer Science. Invitation to Computer Science, C++ Version, 6-th Edition

ENIAC: The first electronic computer

History of Computers. What Is A Computer? Egyptian Numbers. Ancient Tools for Computation. Introduction to Computers

Introduction to Computer Systems

Introduction. A. Bellaachia Page: 1

Comp 333: Concepts of Programming Languages Fall 2016

CHAPTER 1: Computers and Systems

CS 430 Spring History of Programming Languages. Mike Lam, Professor. John McCarthy ( ) Inventor of LISP

Analytical Engine: The Original

I1100 Introduction to Computer Science Semester: 1 Academic Year: 2018/2019 Credits: 3 (30 hours) Dr. Antoun Yaacoub


Algorithm: Program: Programming: Software: Hardware:

Corso di Biblioteche Digitali

CHAPTER 1 Introduction

Fundamentals of Digital Computers The mechanical computer age began with the advent of the abacus in 500 B.C by Babylonians. The abacus, which was

7. History of computers and applications

Engineering Problem Solving with C++, Etter/Ingber

Chapter One. Computers in Context

Babbage Analytical Machine

Low-Level Languages. Computer Programs and Programming Languages

Object-Oriented Programming in Python Documentation. Release 1

CMPSCI 105 Fall 2013 LECTURE #1 TOPICS (EXPANDED)

Chapter 0: Introduction. Copyright 2015 Pearson Education, Inc.

COMPUTER HISTORY Compiled by Charles Kim Howard University

PLAGIARISM. Administrivia. Course home page: Introduction to Programming Languages and Compilers

Introduction to Programming Languages and Compilers. CS164 11:00-12:00 MWF 306 Soda

Computer Science 1400: Part #2: Getting Here: The First Computers ( )

Objectives. Learn why today almost everyone is a computer operator. Learn about the predecessors of modern computer hardware and software

Learning the Hard Way

Introductory Visualizing Technology

Computer Systems. Computer Systems. Wolfgang Schreiner Research Institute for Symbolic Computation (RISC-Linz) Johannes Kepler University

CS 102 (sections 2 5) Introduction to Computing with Robots

Transcription:

History 2 Programming and computers: Momentous changes since the 1940s or since even the use of punch cards and attempt at automation CONCLUSION CS2110 Spring 2018 Punch cards Charles Babbage designed a difference engine in 1822 3 Jacquard loom Loom still used in China 4 Compute mathematical tables for log, sin, cos, other trigonometric functions. No electricity Mechanical loom invented by Joseph Marie Jacquard in 1801. Used the holes punched in pasteboard punch cards to control the weaving of patterns in fabric. Punch card corresponds to one row of the design. Based on earlier invention by French mechanic Falcon in 1728. The mathematicians doing the calculations were called computers 5 Oxford English Dictionary, 1971 Computer: one who computes; a calculator, rekoner. spec. a person employed to make calculations in an observatory, in surveying. etc. 1664: Sir T. Browne. The calendars of these computers. 6 Charles Babbage planned to use cards to store programs in his Analytical engine. (First designs of real computers, middle 1800s until his death in 1871.) First programmer was Ada Lovelace, daughter of poet Lord Byron. 1704. T. Swift. A very skillful computer. 1744. Walpole. Told by some nice computers of national glory. Privately schooled in math. One tutor was Augustus De Morgan. 1855. Brewster Newton. To pay the expenses of a computer for reducing his observations. The mathematicians doing the calculations were called computers The Right Honourable Augusta Ada, Countess of Lovelace. 1

7 Herman Hollerith. His tabulating machines used in compiling the 1890 Census. Hollerith's patents were acquired by the Computing-Tabulating-Recording Co. Later became IBM. 8 Computers, calculating the US census The operator places each card in the reader, pulls down a lever, and removes the card after each punched hole is counted. Hollerith 1890 Census Tabulator History of computers How did Gries get into Computer Science? 9 1935-38. Konrad Zuse - Z1 Computer 1935-39. John Atanasoff and Berry (grad student). Iowa State 1944. Howard Aiken & Grace Hopper Harvard Mark I Computer 1946. John Presper Eckert & John W. Mauchly ENIAC 1 Computer 20,000 vacuum tubes later... 1947-48 The Transistor, at Bell-labs. 1953. IBM. the IBM 701. 9 10 1959. Took his only computer course. Senior, Queens College. 1960. Mathematician-programmer at the US Naval Weapons Lab in Dahlgren, Virginia. 10 1960. Mathematician-programmer at the US Naval Weapons Lab in Dahlgren, Virginia. 1960: Big Year for Programming Languages 11 12 Programmed in Fortran and IBM 7090 assembly language if (SEX == M ) MALES= MALES + 1; else FEMALES= FEMALES + 1; CLI SEX,'M' Male? BNO IS_FEM If not, branch around L 7,MALES Load MALES into register 7; LA 7,1(,7) add 1; ST 7,MALES and store the result B GO_ON Finished with this portion IS_FEM L 7,FEMALES If not male, load FEMALES into register 7; LA 7,1(,7) add 1; ST 7,FEMALES and store GO_ON EQU * 11 LISP (List Processor): McCarthy, MIT (moved to Stanford). First functional programming language. No assignment statement. Write everything as recursive functions. (take 3110) COBOL (Common Business-Oriented Language). Became most widely used language for business, data processing. ALGOL (Algorithmic Language). Developed by an international team over a 3-year period. McCarthy was on it, John Backus was on it (developed Fortran in mid 1950 s). Gries s soon-to-be PhD supervisor, Fritz Bauer of Munich, led the team. 12 2

13 1959. Took his only computer course. Senior, Queens College. 1960. Mathematician-programmer at the US Naval Weapons Lab in Dahlgren, Virginia. 1962. Back to grad school, in Math, at University of Illinois Graduate Assistantship: Help two Germans write the ALCOR- Illinois 7090 Compiler. John Backus, FORTRAN, mid 1950 s: 30 people years 14 Late 1960s IBM 360 Mainframes Write programs on IBM punch cards. Deck of cards making up a program trucked to Langmuir labs by the airport 2-3 times a day; get them back, with output, 3-4 hours later This compiler: 6 ~people-years Today, CS compiler writing course: 2 students, one semester 1963-66 Dr. rer. nat. in Math in Munich Institute of Technology 1966-69 Asst. Professor, Stanford CS 1969- Cornell! 13 15 About 1973. BIG STEP FORWARD 1. Write program on punch cards. 2. Wait in line (20 min) to put cards in card reader in Upson basement 3. Output comes back in 5 minutes About 1979. Teraks Prof. Tim Teitelbaum sees opportunity. He and grad student Tom Reps develop Cornell Program Synthesizer. Year later, Cornell uses Teraks in its prog course. 40 lbs About 1973. BIG STEP FORWARD Switched to using the programming language Pascal, developed by Niklaus Wirth at Stanford. November 1981, Terak with 56K RAM, one floppy drive: $8,935. Want 10MB hard drive? $8,000 more 16 1983-84 Switched to Macintosh in labs 1980s CS began getting computers on their desks. 2014 Moved into Gates Hall! Late 1980s Put fifth floor addition on Upson. We made the case that our labs were in our office and therefore we need bigger offices. Nowadays Everybody has a computer in their office. Programming languages. Dates approximate Java is not the Only OO Language 17 18 Year Major languages Teach at Cornell 1956 s Fortran 1960 Algol, LISP, COBOL 1965 PL/I PL/C (1969) 1970 C 1972 Pascal 1980 s Smalltalk (object-oriented) Pascal (1980 s) 1980 s (late) C++ 1996 Java C and C++ 2008 Java / Matlab 2011 Python / Matlab / Java 3

Java is not the Only OO Language Performance 19 20 Usability Performance Security Java has a reputation for being slow Early versions were slow Java programs start up slow Compiling in Java Garbage Collection 21 22 Java Code Java Bytecode Java Virtual Machine (JVM) JIT Machine Code Compiler converts source code (*.java) into platform-neutral bytecode (*.class) JVM runs bytecode using just-in-time compilation JIT performs dynamic code optimization What happens to objects after you are done with them? Why don't you run out of memory? JVM implements garbage collection. It detects and frees objects that are no longer needed Reachable Objects Mark-and-Sweep 23 24 An object is reachable if it is referenced anywhere in the call stack local variables method parameters global variables An object is reachable if it is referenced by a reachable object fields array elements Each object has an extra 1-bit field that is reserved for garbage collecting use Garbage Collector (GC) operates in two phases: mark: GC does a tree traversal of reachable objects from the stack and sets the GC field sweep: GC scans all memory from start to finish and frees all objects that do not have the GC field set 4

Optimized Garbage Collection Performance 25 26 Concurrent mark-and-sweep Generational management Garbage-First garbage collector Shortcomings of Java tl;dr; 27 28 Java has no separation between specification and implementation Writing correct concurrent programs in Java is hard and/or inefficient People continue to develop new languages (e.g., Rust) that address some of these shortcomings steeper learning curve longer compile times Modern compiled, OO languages have similar performance Different companies use different languages for historical, philosophical, or legal reasons The concepts you learned in this class apply to any language abstraction isolation inheritance incremental development & testing Object-Oriented Design Object-Oriented Design 29 30 Problem: how to design a large program Design considerations: How easy to make changes? (Flexible) How easy to reuse? (Reusable) How easy to maintain? (Maintain) 1. What classes do you need? 2. What is the relationship between those classes? 3. What classes should do what? 4. How should objects interact? 5

Example: Dice Game Example: Dice Game 31 32 Application domain: Play a dice game. Players requests to roll the dice. System presents results: If the dice face values sum to seven, player wins; otherwise player loses. 1. What classes do you need? 2. What is the relationship between those classes? 3. How should objects interact? 4. What classes should do what? Player String name; Plays DiceGame Die d1; Die d2; boolean play() Die int facevalue; void roll() int getfacevalue() Rolls, Reads val Design Patterns Example: MVC 33 34 Design patterns are general, re-usable solutions to commonly recurring problems OO design patterns typically show relationships and interactions between classes or objects Not a magic solution; blindly applying design patterns can overcomplicate your code Model-View-Controller is a common pattern for developing applications with GUIs CS2110 35 36 Object-oriented programming, reasoning about complex problems Testing; Reasoning about correctness Algorithmic complexity, analyzing algorithms, Data structures: linked lists, trees, hash tables, graphs, etc. Programming paradigms: recursion, parallel execution 6

37 7