Giter Club home page Giter Club logo

theory-of-computation's Introduction

Theory Of Computation

Why do I have to build data structures and what are they for? Data structures are specific examples of mechanical, automated problem solving.

Abstract computing and the Turing Machine

Computers in 1880 were men and more often women who would work out formulas with pen and paper for an hourly rate. Calculations were needed for phsyics and chemistry research, calculus, other mathematics, and finances. This lead to an academic discipline that involved philosophy about the nature of mathematics and what kinds of knowledge could be formally proven.

Alonzo Church, Alan Turning, Stephen Kleene, Kurt Godel, David Hilbert, and others worked to formalize these ideas into mathematical proofs leading, eventually, to the Turing Machine and the proofs that accompanied it.

It was stated above that 'a function is effectively calculable if its values can be found by some purely mechanical process'. We may take this statement literally, understanding by a purely mechanical process one which could be carried out by a machine. It is possible to give a mathematical description, in a certain normal form, of the structures of these machines. The development of these ideas leads to the author's definition of a computable function, and to an identification of computability with effective calculability. It is not difficult, though somewhat laborious, to prove that these three definitions [the 3rd is the λ-calculus] are equivalent.

— Turing (1939) in The Undecidable, p. 160

Something is numerically computable by a human iff it is computable by a Turing machine, and that all forms of iterative deterministic computation are equivalent.

Lambda School Theory of Computation Links

Mathematical and Theoretical background

propositional calculus

calculus

boolean algebra

babbage

principia mathematica

automata theory

Grammars, State Machines, and Languages

Finite-state machine

Suggest regular grammars and context free grammars. Become familiar with the notation of state machines and be able to describe the simple function of any machine with a state machine.

formal languages

Alex Thue

Chomsky Hierarchy

Regular Expression These are of special importance in Computer Science!

Pushdown automaton

Occupies a space of computational complexity between context free grammars and Turing Machines.

Context-free grammars

Chomsky invented CFGs in the context of natural language. They haven't proven to be extremely useful in that context, but have become the standard for all programming languages.

Examples of significant importance

Regular grammars

Algebraic expressions

Backus Naur Form This is of special importance in Computer Science!

programming languages These are obviously of special importance. :)

computability

lambda calculus

theory of computation models

Emil Post

Halting Problem This is of special importance in Computer Science!

One of the first decision problems and the foundation of Computer Science. Turing Machine was invented in order to provide a solution for this problem - that it is undecidable.

The question is: Can a program be written f that will for every other program g say whether or not g will finish? Turing proves using complicated mathematics, and by inventing a Turing Machine in order to support his proof, that this machine f cannot be invented.

The takeaway from this proof and observation is that it is not possible to build a computer program that can solve any problem - some problems are undeciable, that is, unsolveable.

Church-Turing thesis

Turing Machines

Turing Machines These are of special importance in Computer Science!

Visual example of a Turing Machine as formula

Linear Bounded Automata

computational complexity

asymptotic complexity

algorithms

undecideability

intractability

Gödel's Incompleteness Theorem

Artificial Intelligence

Assignments:

Draw a state machine for a stop light Mathematically describe a state machine for a stop light using the rules of Regular Languages Create a new subset of the Javascript language using Backus-Naur Form Write via state machine notation a Turing machine that can identify the string: 'aaabbb' Write a Turing Machine in Javascript

Theory-Of-Computation

theory-of-computation's People

Contributors

dwinslow123 avatar thomcom avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.