What Is Computer Science? William J. Rapaport Department of Computer Science & Engineering, Department of Philosophy, Department of Linguistics, and Center for Cognitive Science rapaport@buffalo.edu http://www.cse.buffalo.edu/~rapaport Why Ask? • Academic / political purposes: – Should UB’s CSE be in CAS? SEAS? SOI? SCS? – Pedagogy: What should we teach in Intro CS? • programming? • theory? •? – Do CS’ists merely program? – Publicity for prospective students? Why Ask? • Intellectual / philosophical motivation: – What is CS “really”? – Is it like something else? • math? • electrical engineering? – Is it “sui generis” Is CS “sui generis”? • “Computer science has such intimate relations with so many other subjects that it is hard to see it as a thing in itself.” – Marvin Minsky • “Computer science differs from the known sciences so deeply that it has to be viewed as a new species among the sciences.” – Juris Hartmanis Fundamental Principle of “What Is” Questions • There are no sharp boundaries in nature – only continua & spectra • We “carve nature at joints” (Plato) of our own devising (Kant) • There may be no good answer beyond: – “CS is what CS’ists do!” – But: What do they do? Newell, Perlis, & Simon 1967 Newell & Simon 1976 Simon 1969/1996 • CS = the science of computers – not a “natural science”, but: • a “science of the artificial” – “computers” includes: • hardware, algorithms, etc. • So: – CS = the artificial science & engineering of computers … & surrounding phenomena Knuth 1974 • CS = the “study” of algorithms – Algorithms ≈ what you can teach a computer – Which functions (I-O) can be efficiently computed? – Need a computer to find out! • So: – CS = study of algorithms … & surrounding phenomena Hartmanis 1992 • CS = study of information – how to represent info – how to process info – & the machines that do this Shapiro 2001 • CS = natural science of procedures – including algorithms, … • & recipes (specifications; vague) • & non-halting (& interactive) procedures • & heuristics (incorrect O/P) Brooks 1996 • CS ≠ science – not concerned with “discovery” • CS = engineering – concerned with “making”: • physical computers • S/W systems Denning 2010 • “Computing is a 4th great domain of science alongside the physical, life, and social sciences.” • CS = – discovery (science) – & implementation (engineering) – of information processes What Is Computation? • function = – set of I/O pairs (relation) – same I/P same O/P • “function machine”: What Is Computation?: Functions • But: “function machine” ≠ function! – functions don’t “do” anything – function machine needs “gears” • i.e.) algorithm! • but not all functions are algorithmic (computable)! – function machine = … • computer! Computable Functions • A function is computable ≈ – there is an algorithm that computes it – i.e.) that specifies how … • I/P can be transformed into O/P Algorithm • Algorithm for problem P ≈ – finite procedure for solving P • finite # instructions • completable in finite time (?) • completable in finite # steps (?) – instructions unambiguous for executor • know how to do each instruction • know what to do next – must halt (?) – O/P must be correct (?) 4 Great Insights of CS 1. Bacon/Leibniz/Boole/Turing/Shannon/Morse: • All information about any computable problem can be represented using only 2 nouns: 0, 1 4 Great Insights of CS 2. Turing’s Insight: – Every algorithm can be expressed in a language for a Turing machine: • arbitrarily long tape divided into squares • read / write head • only 2 verbs (= basic instructions): – move(dir) – print(sym) (where dir = L, R) (where sym = 0, 1, nil) 4 Great Insights of CS 3. Boehm & Jacopini’s insight: – structured programming – only need 3 grammar rules: • sequence (first do this; then do that) • selection (if P, then do this else do that) • repetition (while P do this) – recursively, “this” & “that” can be: • any basic instruction • any complex instruction created by grammar rules – optional: • exit • named procedures • recursion 4 Great Insights of CS 4. Church-Turing Thesis: – An algorithm isdef anything equivalent to a Turing-machine program – TM = Post production system = lambda calculus = Markov algorithm = recursive functions = register machines, etc. – There are non-computable functions • e.g.) Halting Problem So, what is CS? • 1. CS tries to answer these questions: What is computation? • More generally, what is a procedure? Which functions are (or are not) … 2. • • computable? efficiently computable? – 3. theoretical CS How can they be computed? • • what specific algorithms do the job? what machines are needed? – other branches of CS