UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO TEORIA DA COMPUTAÇÃO Aula 01 Apresentação da Disciplina Prof.ª Danielle Casillo
PLANO DE ENSINO Nome: Teoria da Computação Créditos: 4 60 horas Período: 2011.1 Horário: terça das 20:30 às 22:20 e quinta das 18:40 às 20:30 Professora: Danielle S. S. Casillo Página: www.ufersa.edu.br Sigaa: www.sig.ufersa.edu.br Contato: danielle@ufersa.edu.br Teoria da Computação - Aula 01 2
OBJETIVOS GERAIS Os alunos serão preparados para o estudo e aprofundamento da semântica e lógica da computação do ponto de vista de computabilidade; observando as linguagens como modelos computacionais e examinando a sua expressividade. Teoria da Computação - Aula 01 3
OBJETIVOS ESPECÍFICOS Serão fornecidos os fundamentos matemáticos de dois importantes paradigmas de programação: lógica e funcional. No aspecto prático, orientar-se-á ao estudante no tratamento de problemas simples e na implementação das soluções com técnicas lógicas e funcionais. Teoria da Computação - Aula 01 4
METODOLOGIA DIDÁTICA Ensino: Aulas teóricas, estudos individuais e em grupo, resolução de exercícios. Avaliação: Provas escritas; Trabalhos realizados individualmente e/ou em grupo; Seminários. Data das avaliações: 14/04/2011-1ª avaliação 24/05/2011-2ª avaliação 28 a 30/06/2011 - Seminários 05/07/2011 Reposição 07/07/2011-4ª avaliação Teoria da Computação - Aula 01 5
PROGRAMA DA DISCIPLINA Primeira Unidade: Introdução e Conceitos Básicos Programas Máquinas Computações e Funções Computadas Equivalência de Programas e Máquinas Verificação da Equivalência de Programas Teoria da Computação - Aula 01 6
PROGRAMA DA DISCIPLINA Segunda Unidade: Máquinas Universais Codificação de Conjuntos Estruturados Máquina de Registradores NORMA Máquina de Turing Máquina de Post Máquina com Pilhas Autômatos com Duas Pilhas Linguagem Lambda Teoria da Computação - Aula 01 7
PROGRAMA DA DISCIPLINA Terceira Unidade: Seminários Teoria da Computação - Aula 01 8
BIBLIOGRAFIA BÁSICA: Notas de Aula Profª Danielle. Teoria da Computação Máquinas Universais e Computabilidade. Tiarajú Asmuz Diverio e Paulo Blauth Menezes. 2ª Edição. Ed. Bookman. 2008. COMPLEMENTAR: Introdução à Teoria da Computação. Michael Sipser. 2ª Edição. Ed. Thompson. 2007. Teoria da Computação - Aula 01 9
CIÊNCIA DA COMPUTAÇÃO X TEORIA DA COMPUTAÇÃO A importância da Teoria para a Prática é imensa! A teoria para esta ciência se faz necessário para iluminar o caminho dos cientistas da computação (práticos), dos engenheiros em computação, dos analistas de sistemas, em fim de todos os profissionais que usem a computação como objeto de estudo ou de trabalho. Mas antes de entender o que seria uma teoria para a ciência da computação vamos entender o que seria Ciência da Computação. Teoria da Computação - Aula 01 10
CIÊNCIA DA COMPUTAÇÃO Computação: tudo o que um computador pode realizar. Mas o que é um computador? Hardware e tecnologia. Ex: calculadora, elevador, máquina de vender refrigerante, CD player, impressora,... A teoria nos fornece conceitos e princípios para nos ajudar entender a natureza geral da Ciência do Computador. Teoria da Computação - Aula 01 11
CIÊNCIA DA COMPUTAÇÃO Definição: é o estudo dos algoritmos, suas aplicações e de sua implementação, na forma de software, bem como das estruturas matemáticas indispensáveis à formulação precisa dos conceitos fundamentais da teoria da computabilidade e da computação aplicada. Teoria da Computação - Aula 01 12
CIÊNCIA DA COMPUTAÇÃO Antes de 1920: computador era um termo associado a pessoas que realizavam cálculos. Após 1920: a expressão máquina computacional começou a ser usada para referir-se a qualquer máquina que realize o trabalho de um profissional computador. O termo máquina computacional acabou perdendo espaço para o termo reduzido computador em 1940. Alan Turing, conhecido como pai da Ciência da Computação, inventou a Máquina de Turing, que posteriormente evoluiu para o computador moderno. Teoria da Computação - Aula 01 13
CIÊNCIA DA COMPUTAÇÃO Ciência da computação tem tanto a ver com o computador como a Astronomia com o telescópio, a Biologia com o microscópio, ou a Química com os tubos de ensaio. A Ciência não estuda ferramentas, mas o que fazemos e o que descobrimos com elas. Edsger Dijkstra Teoria da Computação - Aula 01 14
O QUE É COMPUTAÇÃO? Computação pode ser definida como a solução de um problema ou, formalmente, o cálculo de uma função, através de um algoritmo. Teoria da Computação - Aula 01 15
A DISCIPLINA: TEORIA DA COMPUTAÇÃO O campo dessa disciplina inclui um vasto leque de tópicos especiais, desde projetos de máquinas até programação. Para estudar os princípios básicos da computação, construiremos modelos abstratos de computadores e computação, estes modelos contém as características importantes que são comuns tanto ao hardware quanto ao software. Teoria da Computação - Aula 01 16
TEORIA DA COMPUTAÇÃO A área de TC (Teoria da Computação) procura fornecer fundamentos matemáticos rigorosos para as diversas áreas da computação. Conhecimento não amarrado à tecnologia Ferramentas matemáticas e métodos formais para modelar fenômenos da computação Teoria da Computação - Aula 01 17
TEORIA DA COMPUTAÇÃO A TC introduz conceitos fundamentais que são desenvolvidos em outras áreas. A abordagem de reconhecimento de linguagens é a base de todo o estudo das Linguagens Formais, Semântica Formal, Compiladores, e todo o conjunto de disciplinas que tratam de Linguagens de programação. Teoria da Computação - Aula 01 18
O QUE É TEORIA DA COMPUTAÇÃO? A teoria da computação, um subcampo da ciência da computação e matemática, busca determinar quais problemas podem ser computados em um dado modelo de computação. Existem 3 áreas centrais da Teoria da Computação: Autômatos Computabilidade Complexidade Teoria da Computação - Aula 01 19
TEORIA DA COMPUTAÇÃO Estas áreas são interligadas pela seguinte questão: Quais são as capacidades e limitações fundamentais dos computadores? Para cada uma das três áreas autômatos, computabilidade e complexidade essa questão é interpretada diferentemente. Teoria da Computação - Aula 01 20
TEORIA DA COMPUTAÇÃO Teoria da Complexidade: Os problemas computacionais vem em diferentes variedades: alguns são fáceis e outros difíceis. Ex: Problema da ordenação Fácil Criptografia Difícil O que faz alguns problemas computacionalmente difíceis ou fáceis? Entender qual o aspecto do problema é a raiz da dificuldade; Encontrar soluções que se aproximam da solução perfeita; Alguns problemas são difíceis somente na situação do pior caso. Teoria da Computação - Aula 01 21
TEORIA DA COMPUTAÇÃO Teoria da Computabilidade: Classifica os problemas por meio da separação entre os que são solúveis e os que não o são. Ex: determinar se um enunciado matemático é verdadeiro ou falso. As teorias da computabilidade e complexidade estão intimamente relacionadas. Na teoria da complexidade, o objetivo é classificar os problemas como fáceis ou difíceis; Na teoria da computabilidade a classificação é feita por meio dos problemas que são solúveis ou não. Teoria da Computação - Aula 01 22
TEORIA DA COMPUTAÇÃO Teoria dos Autômatos: Lida com as definições e propriedades de modelos matemáticos de computação. Autômatos finitos: usados em processamento de textos, compiladores e projeto dehardware. Gramática livre-do-contexto: usado em linguagem de programação, inteligência artificial. Teoria da Computação - Aula 01 23
TEORIA DA COMPUTAÇÃO HISTÓRICO: A Teoria da Computação teve início nos primeiros anos do século XX, antes da invenção dos modernos computadores eletrônicos. Naquela época, os matemáticos estavam tentando descobrir quais problemas matemáticos poderiam ser resolvidos por um método simples, e quais não poderiam. O primeiro passo estava em definir o significado de um "método simples" para resolver o problema. Em outras palavras, eles precisavam de um modelo formal da computação. Teoria da Computação - Aula 01 24
TEORIA DA COMPUTAÇÃO HISTÓRICO: Na década de 1920, computador era associado a pessoas que realizavam cálculos; O termo máquina computacional referia-se a qualquer máquina que realize cálculos; Os fundamentos matemáticos da ciência da computação moderna começaram a ser definidos por Gödel com seu Teorema da Incompletude, que mostra que existem limites no que pode ser provado ou desaprovado em um sistema formal. Teoria da Computação - Aula 01 25
TEORIA DA COMPUTAÇÃO HISTÓRICO: Diversos modelos diferentes da computação foram propostos pelos primeiros pesquisadores. Máquina de Turing: propunha a construção de uma máquina universal, executando a programação que lhe for passada; Funções Recursivas: compostas para operar diretamente sobre os números; Cálculo-Lambda: similar às Funções Recursivas. Teoria da Computação - Aula 01 26
TEORIA DA COMPUTAÇÃO HISTÓRICO: Todos estes formalismos são equivalentes em termos de poder computacional, ou seja, qualquer computação que possa ser realizada com um modelo pode ser realizada com qualquer um dos outros modelos. As questões relativas à possibilidade de realizar certos tipos de computação em determinados tipos de máquinas são estudadas pela Teoria da Computabilidade. Teoria da Computação - Aula 01 27
TEORIA DA COMPUTAÇÃO HISTÓRICO: Alan Turing propôs, em 1936 um formalismo para representação de procedimentos efetivos. A intenção do modelo de Turing, denominado Máquina de Turing, foi simular, tanto quanto possível, as atitudes humanas relacionadas à computação. Foi o primeiro trabalho a identificar programas escritos para uma máquina computável. Teoria da Computação - Aula 01 28
TEORIA DA COMPUTAÇÃO HISTÓRICO: Assim, define-se programa como sendo um procedimento efetivo, que permite descrever todos os procedimentos possíveis que podem ser executados em um computador. Teoria da Computação - Aula 01 29