View
77
Download
4
Category
Tags:
Preview:
DESCRIPTION
Overview. Computation Theory. About This Course. Explores the theoretical foundations of computing What can and cannot be done by an algorithm Most of the material predates computers! Has direct application in digital design , programming languages , and compilers. - PowerPoint PPT Presentation
Citation preview
Overview
Explores the theoretical foundations of computing What can and cannot be done by an algorithm
Most of the material predates computers!
Has direct application in digital design, programming languages, and compilers
2CS 3240 - Introduction
Symbolic computation (numbers are just bit strings)
Turing Machine (1936-37) von Neumann architecture
▪ fetch/store in memory▪ led to creation of digital computers▪ machine language
Imperative programming paradigm▪ assembly, procedural, object-oriented (FORTRAN,
Pascal, C, C++, Java, C#, Python, Perl, PHP, Ruby, etc.)
Covered in this course
Lambda Calculus (1936) based on mathematical functions
▪ higher-level than imperative programming▪ no assignment statement!
Functional programming paradigm▪ Lisp, Scheme, ML, Haskell, Scala, Groovy, F#.NET▪ Features creeping into C++, C#, Java, Python,
Ruby, etc.
Covered in CS 4450
What is “computation”? “The processing of ‘data’ according to an
algorithm”Theory was fairly complete before
computers existedGuided the development of
computers and their use And still does…
Write a program that reads other programs and determines if they work correctly (e.g., halt without error) for all possible inputs
Write a general-purpose sorting algorithm (i.e., that only uses comparisons of its elements to determine order) that has a time complexity less than O(n log n)
Determine if a polynomial of arbitrary degree with integer coefficients has an integer root
Given two arbitrary language grammars, determine if they describe the same language
360 BC Eudoxus (Method of Exhaustion) 350 Aristotle (Deductive Logic) 300 Euclid (The Axiomatic Method) 250 AD Diophantine (Number Theory) 628 Brahmasphuta (Carry/borrow decimals) 830 al-Khowarizmi (The Algorithm) 1614 Napier (Logarithms) 1666 Leibniz (Symbology of calculus) 1671 Newton (Approximations/infinitesimals) 1815-1870 Fourier, Cauchy, Riemann (Formalization of Analysis) 1833-1842 Babbage (Difference Engine) 1852 Boole (Symbolic Logic- “Laws of Thought”) 1874 Cantor (Cardinality) 1884 Frege (Foundations of Arithmetic) 1889 Peano (Axioms of Arithmetic) 1900 Hilbert (Foundations of Geometry; 10 Problems) 1908 Zermelo-Fränkel Set Theory 1910 Russell & Whitehead (Prinicipia Mathematica – Type
Theory) 1931 Godel’s Incompleteness Theorem (Decidability) 1936 Church, Post, Kleene, Turing
“Formal” Languages Syntax only, not semantics
Finite Automata Simple machines (state machines),
regular languages Push-down Automata
Automata with memory Context-free languages
Turing Theory Universal abstract model for computation
Understand the concepts of Regular Languages and their relationship to finite state machines (automata)
Understand the concepts of Context-Free Languages and their relationship to pushdown automata
Understand the concepts of Computable Languages and their relationship to Turing machines
Apply all of the above in computer programs Understand the limits of automatic computation Ultimate outcome: to grok the “big picture” of
computation models
Visit chuckallison.com
Recommended