Computability to Practical Computing - and - How to Talk to Machines
What is Computer Science?
● At the highest level computer science (CS) is the study of computation and information processing, both in hardware and in software. ● Computer scientists study how information is used by or changed by computers. Topics range from the abstract analysis of algorithms, formal grammars, etc. to more concrete subjects like programming languages, software, and computer hardware.
What was the first meaning of the word “computer”?
A human being who did arithmetic calculations
Before World War II Mathematicians such as Alan Turing, Emil Post, Alonzo Church: –Imagined computer as an “engine” that did math and had memory to store instructions and data … human being or machine –Posed the fundamental question of Computer Science
What can be computed in a finite amount of time?
What changed in the mid to late 1940’s?
What Changed in mid to late 1940’s? Computers became engineering reality
New Focus… No longer enough to know a problem can be solved eventually Questions become more practical
New Focus Can a problem be solved efficiently? How? Can the problem be solved elegantly? How?
New Specialties Linguists to study how to talk to computers Algorithmists to study how to solve a problem fast on a computer Architects to study how to build better computers Applications specialists to study how to use computers in new and different ways
First Computing Machines Wires and switches Instructions reflected the details of the engineering design; just expressive enough to get the job done
~~1950 Expense ratio changes: programming the machine becomes much more expensive than renting the machine time Programming languages need to reflect the structure of the problem to be solved
Talking to Computers
Binary Constructs Different speeds of memory – storage and registers Binary notation Exponential notation
Historical Highlights 1953: John Backus, working at IBM, proposed new design for a language which became Fortran (Formula Translation)
Historical Highlights 1956: researchers imagined new discipline, Artificial Intelligence. Allan Newell and Herbert Simmons of Carnegie Mellon proposed approach of representing abstractions as lists of symbols John McCarthy simplified structure, added new features … ~1958 created Lisp (List Processing)
“… Lisp, together with Fortran, has provided the inspiration for computer language designs ever since its introduction in 1958.” Out of Their Minds The Lives and Discoveries of 15 Great Computer Scientists Dennis Shasha Cathy Lazere
Historical Highlights ~1960: Algol (International Algebraic Language), used elements from Fortran and Lisp. Parent of Pascal, C, and Ada
Historical Highlights Early ’70’s: Alan Key suggested object- oriented approach to design more supportable programs
Constructs and Concepts Scientific notation Lists Tables Loops