DC-UFRPE/Licenciatura Plena em Computação/Teoria da Computação

Programa da Disciplina

editar
Nome: Teoria da Computação Código: 06223
Departamento: Departamento de Computação - (DC) Área: Computação
Carga-horária total: 60 horas Créditos: 4
Carga-horária semanal: 4 horas (teóricas: 4; práticas: 0; EAD*: 0)
Pre-requisitos: MATEMÁTICA DISCRETA I e MATEMÁTICA DISCRETA II
Co-requisitos: Nenhum
Horários: Segunda-Feira: 20:10 as 21:50 e Quinta-Feira: 18:30 as 20:10

Ementa

editar

Propriedades e operações com linguagens. Expressões regulares e gramáticas. Modelos clássicos de reconhecedores: autômatos finitos, autômatos a pilha, autômatos linearmente limitados, máquinas de Turing. Teorema de Kleene, equivalência entre autômatos à pilha e gramáticas. Hierarquia de Chomsky: linguagens regulares, livre de contexto, sensíveis ao contexto e recursivas. Propriedades de linguagens e funções recursivas. Tese de Church. Problemas indecidíveis: problema da parada, problema da correspondência de Post, redução entre problemas. Classes de problemas: P, NP, NP-Completo.

Prática como componente curricular

editar

Não possui.

Metodologia de Aula

editar
  • Notas de aula divulgadas pelo professor Pablo Sampaio.
  • Aulas Presenciais.
  • Atividades semanais no Google Classroom.

Método Avaliativo

editar

1VA

  • Prova escrita (70% da nota da 1VA) + Listas de Exercícios Semanais (30% da nota da 1VA).

2VA

  • Prova escrita (70% da nota da 2VA) + Listas de Exercícios Semanais (30% da nota da 2VA).

3VA

  • Prova escrita.

FINAL

  • Prova escrita.

Objetivos

editar
  • Capacitar o aluno na elaboração de algoritmos através do desenvolvimento do raciocínio lógico aplicado à solução de problemas computacionais, tornando-o capaz de resolver problemas simples de forma teórica e aplicá-los na prática em uma linguagem de programação.
  • Apresentar os comandos de entrada e saída e suas utilizações.
  • Apresentar os conceitos de variáveis e constantes e suas utilizações.
  • Apresentar os operadores aritméticos e seu comportamento.
  • Apresentar os operadores relacionais e lógicos e seu comportamento.
  • Desenvolver a habilidade de construção de expressões e sua utilização.
  • Apresentar o conceito de modularização.
  • Desenvolver a habilidade de modularizar problemas em unidade menores.

Conteúdo Programático

editar
editar

Vídeos Complementares

editar

Bibliografia

editar

Bibliografia básica:

editar
  1. LOPES, Anita; GARCIA, Guto. Introdução à programação: 500 algoritmos resolvidos. Rio de Janeiro: Campus, 2002. 469p.
  2. Ziviani, Nivio. Projeto de Algoritmos. Editora Nova Fronteira, 2007.
  3. Sebesta, Robert W. Conceitos de Linguagens de Programação. Bookman, 2005.
  4. MENEZES, Nilo Ney Coutinho. Introdução à programação com Python: algoritmos e lógica de programação para iniciantes. 2.ed. rev. ampl. São Paulo: Novatec Editora, 2014. 328 p.
  5. SIPSER, M. Introdução a Teoria da Computação. 2a Edição Americana. Thomson, 2007.
  6. HOPCROFT, J. E.; MOTWANI, R.; e ULLMAN, J. D. Introdução à Teoria de Autômatos, Linguagens e Computação. Tradução da 2a Edição Americana. Editora Campus, 2002.
  7. LEWIS, Harry R; PAPADIMITRIOU, Christos H. Elementos de teoria da computação. 2. ed. Porto Alegre: Bookman, 2000

Bibliografia Complementar:

editar
  1. MENEZES, Paulo Blauth. Linguagens formais e autômatos. 5. ed. Porto Alegre, RS: Bookman, 2008.
  2. DIVERIO, T. A.; MENEZES, P. B. Teoria da Computação: Máquinas Universais e Computabilidade. 3a edição. Bookman, 2011.
  3. GERSTING, J. L. Fundamentos Matemáticos para a Ciência da Computação. Quinta Edição. Rio de Janeiro: LTC, 2004.
  4. RAMOS, Marcus Vinícius Midena; JOSÉ NETO, João; VEGA, Ítalo Santiago. Linguagens formais: teoria, modelagem e implementação. Porto Alegre: Bookman, 2009.
  5. PAPADIMITRIOU, Christos M. Computational complexity. New York: Addison Wesley Longman,