Overview.  Explores the theoretical foundations of computing  What can and cannot be done by an algorithm  Most of the material predates computers!

Slides:



Advertisements
Similar presentations
CS 345: Chapter 9 Algorithmic Universality and Its Robustness
Advertisements

Introduction to Programming Languages Nai-Wei Lin Department of Computer Science and Information Engineering National Chung Cheng University.
HISTORY OF LOGIC BY JOHN NAGUIB. What is Logic? The science or study of how to evaluate arguments and reasoning. “Logic is new and necessary reasoning”
Applied Computer Science II Chapter 3 : Turing Machines Prof. Dr. Luc De Raedt Institut für Informatik Albert-Ludwigs Universität Freiburg Germany.
you admittance to the “show”.
Turing-intro.ppt version: Turing 1936: “On Computable Numbers” William J. Rapaport Department of Computer Science & Engineering, Department of.
Theory of Computation What types of things are computable? How can we demonstrate what things are computable?
CS 330 Programming Languages 09 / 18 / 2007 Instructor: Michael Eckmann.
CS 101 Course Summary December 5, Big Ideas Abstraction Problem solving Fundamentals of programming.
The Evolution of Programming Languages
CS Master – Introduction to the Theory of Computation Jan Maluszynski - HT Lecture 1 Introduction Jan Maluszynski, IDA, 2007
CSE115: Introduction to Computer Science I Dr. Carl Alphonce 219 Bell Hall
Gödel’s Incompleteness Theorem and the Birth of the Computer Christos H. Papadimitriou UC Berkeley.
Summer 02-03Programming Language Concepts1 Programming Language Concepts (CS 360) Lecture 1: Overview, Grammars, and Little Languages Jeremy R. Johnson.
Theory of Computation. General Concepts  Scope of course – Formal languages – Automata theory – Computability – Computational complexity.
Dr. Muhammed Al-Mulhem ICS An Introduction to Functional Programming.
Computability Thank you for staying close to me!! Learning and thinking More algorithms... computability.
Introduction to Programming (in C++) Introduction Jordi Cortadella, Ricard Gavaldà, Fernando Orejas Dept. of Computer Science, UPC.
CSE 425: Intro to Programming Languages and their Design A Few Key Ideas No particular language is a prerequisite for this course –However you should be.
By: Er. Sukhwinder kaur.  Computation Computation  Algorithm Algorithm  Objectives Objectives  What do we study in Theory of Computation ? What do.
Workshop 2 Limits to logic and computing power 1.Are there limits to what humans can know ? Ignoramus et ignorabimus 2.Are there limits to computer knowledge?
Introduction to the Theory of Computation
Introduction Chapter 0. Three Central Areas 1.Automata 2.Computability 3.Complexity.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Chapter 1 - Introduction
The Church-Turing Thesis Lecture by H. Munoz-Avila.
Programming History. Who was the first programmer?
Logic in Computer Science - Overview Sep 1, 2011 POSTECH 박성우.
1 Concepts of Programming Languages TK 327, Fall 2015 MW 2:00 PM – 3:15 PM STV 104 Instructor:Dr. Chung-Chih Li Home page of the Class.
CS3518 Languages and Computability Kees van Deemter Lectures Monday14:00New King’s 14 Tuesday11:00KC T2 Tutorials/Practicals Tuesday13:00-15:00.
Copyright © 2006 Addison-Wesley. All rights reserved.1-1 ICS 410: Programming Languages.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
Lecture 18. Unsolvability Before the 1930’s, mathematics was not like today. Then people believed that “everything true must be provable”. (More formally,
1 Programming Languages Fundamentals Cao Hoaøng Truï Khoa Coâng Ngheä Thoâng Tin Ñaïi Hoïc Baùch Khoa TP. HCM.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Syntax and Semantics CIS 331 Syntax: the form or structure of the expressions, statements, and program units. Semantics: the meaning of the expressions,
Great Theoretical Ideas in Computer Science.
Theory of Programming Languages Introduction. What is a Programming Language? John von Neumann (1940’s) –Stored program concept –CPU actions determined.
Great Theoretical Ideas in Computer Science.
1-1 An Introduction to Functional Programming Sept
Artificial Intelligence “Introduction to Formal Logic” Jennifer J. Burg Department of Mathematics and Computer Science.
CSE 311 Foundations of Computing I Lecture 26 Cardinality, Countability & Computability Autumn 2011 CSE 3111.
CSE 311 Foundations of Computing I Lecture 25 Pattern Matching, Cardinality, Computability Spring
CSE 311: Foundations of Computing Fall 2013 Lecture 26: Pattern matching, cardinality.
Donghyun (David) Kim Department of Mathematics and Physics North Carolina Central University 1 Chapter 0 Introduction Some slides are in courtesy of Prof.
CS 154 Formal Languages and Computability January 28 Class Meeting Department of Computer Science San Jose State University Spring 2016 Instructor: Ron.
CMSC 330: Organization of Programming Languages Operational Semantics.
1 Course Overview Why this course “formal languages and automata theory?” What do computers really do? What are the practical benefits/application of formal.
Copyright © Curt Hill Other Automata Pushdown through Turing machines.
Spring, 2011 –– Computational Thinking – Dennis Kafura – CS 2984 Lambda Calculus Introduction.
The Church-Turing Thesis Chapter Are We Done? FSM  PDA  Turing machine Is this the end of the line? There are still problems we cannot solve:
MA/CSSE 474 Theory of Computation Universal Turing Machine Church-Turing Thesis (Winter 2016, these slides were also used for Day 33)
Language Paradigms CS655.
CPS120 Introduction to Computer Science High Level Language: Paradigms.
MA/CSSE 474 Theory of Computation Universal Turing Machine Church-Turing Thesis Delayed due dates for HWs See updated schedule page. No class meeting.
Theory of Computation. Introduction to The Course Lectures: Room ( Sun. & Tue.: 8 am – 9:30 am) Instructor: Dr. Ayman Srour (Ph.D. in Computer Science).
Theory of Computation. Introduction We study this course in order to answer the following questions: What are the fundamental capabilities and limitations.
Functional Programming
Basic Concepts: computer, program, programming …
Introduction to formal languages and automata
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
Why study programming languages?
PROGRAMMING LANGUAGES
Discrete Mathematics for Computer Science
Ch. 11 Theory of Computation
Great Theoretical Ideas in Computer Science
Lecture 2 Propositional Logic
Programming Languages 2nd edition Tucker and Noonan
Great Theoretical Ideas in Computer Science
Lecture One: Automata Theory Amjad Ali
Presentation transcript:

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 2 CS Introduction

Symbolic computation (numbers are just bit strings)

 Turing Machine ( )  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 existed  Guided 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)  Fourier, Cauchy, Riemann (Formalization of Analysis)  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