MCTA015-13 - Linguagens Formais e Automata (2020 Q1) Primeiro Quadrimestre de 2020
- Turma(s): DA2MCTA016-13SA e NA2MCTA016-13SA
- Professor: Maycon Sambinelli
- E-mail: m.sambinelli@ufabc.edu.br
- 💡 Caixa de Sugestões
Avisos importantes
🚨🔥 alerta: entrem no grupo do Discord 🔥🚨
- 🆕 01/07 - Notas finais divulgadas
- 25/06 - A REC está disponível.
- 22/06 - 🙈 Notas da P1, P2 e Média final (antes da REC) estão disponíveis
- 18/06 - Prova 2 está disponível
- 18/06 - Notas da L3 e L4 estão disponíveis.
- 17/06 - Correções das listas 3 e 4 foram enviadas por e-mail.
- 12/06 - Notas da L1 e L2 estão disponíveis.
- 12/06 - Prova 1 está disponível.
- 05/06 - Lista 4 - parte 2 está disponível.
- 05/06 - Videoaulas da aula 20 estão disponívies.
- 02/06 Datas de entrega das listas 3 e 4 foram adiadas
- 🚨🔥 01/06 Fato importante: Formulário de escolha de meio de avaliação
- 30/05 - Lista 4 - parte 1 está disponível.
- 30/05 - Videoaulas da aula 19 estão disponívies.
- 28/05 - Lista 3 - parte 4 está disponível.
- 28/05 - Videoaulas da aula 18 estão disponívies.
- 24/05 - Lista 3 - parte 3 está disponível.
- 23/05 - Videoaulas da aula 17 estão disponívies.
- 21/05 - Lista 3 - parte 2 está disponível.
- 20/05 - Videoaulas da aula 16 estão disponívies.
- 16/05 - Lista 3 - parte 1 está disponível.
- 16/05 - Videoaulas da aula 15 estão disponívies.
- 13/05 - Prazo final para entrada da lista 2 foi adiado.
- 13/05 - Lista 2 - parte 3 está disponível.
- 13/05 - Videoaulas da aula 14 estão disponíveis.
- 09/05 - Lista 2 - parte 2 está disponível.
- 09/05 - Videoaulas da aula 13 estão disponíveis.
- 06/05 - Lista 2 - parte 1 está disponível.
- 05/05 - Videoaulas da aula 12 estão disponíveis.
- 01/05 - Link para envio da lista 1 partes 1, 2, e 3 está disponível.
- 01/05 - Links para envio da lista 1 partes 4 e 5 estão disponívies.
- 01/05 - Instruções para apresentação das listas está disponível.
- 28/04 - Videoaulas da Semana 2 do ECE estão disponíveis!
- 28/04 - Lista 1 - parte 5 está disponível.
- 21/04 - Lista 1 - parte 4 está disponível.
- 21/04 - Material didátido (aulas/slides/etc) da semana 1 do ECE está disponível.
- 15/04 - Prezados alunos, na próxima semana (20/05), retornaremos as nossas. atividades na modalidade de educação a distância. Os critérios de avaliação, cronograma e está página foram todos atualizados. Por isso, leia atentamente as informações desta página, principalmente o novo plano de aula.
Objetivos
- Apresentar os conceitos fundamentaisda teoria da computação. (ii) Familiarizar o aluno com modelos teóricos de um computador e o tratamento formal de tais modelos. (iii) Apresentar ao aluno as diferentes classes de linguagens.
- Preparar o aluno para o posterior estudo de técnicas de construção de Compiladores e processamento de Linguagem Natural. (v) Refinar a habilidade do aluno para tratar com conceitos formais abstratos.
Ementa da disciplina
Linguagens regulares: autômatos determinísticose não-determinísticos, expressões regulares. Linguagens livres de contexto: gramática, autômatos a pilha. Linguagens recursivamente enumeráveis: máquinas de Turing determinísticas e não-determinísticas. Indecidibilidade: o problema da parada. Complexidade:definição das classes P e NP.
(Disponível na pg. 63 do projeto pedagógico.)
Recomendação
Disciplinas: Programação Estruturada; Matemática Discreta; Algoritmos e Estruturas de Dados I.
Para facilitar o acompanhamento do curso, é recomendado que você já possua:
- Conhecimentos de programação (em qualquer linguagem imperativa)
- Familiaridade com estruturas de dados básicas (vetores, pilhas)
- Familiaridade com linguagem matemática (conjuntos, sequências, relações, funções)
- Capacidade para seguir argumentos lógicos em uma demonstração matemática
Materiais de apoio para esses tópicos:
- O que é uma prova matemática, do prof. Paulo Feofiloff, da USP.
- Matemática discreta para computação, dos profs. Anamaria Gomide e Jorge Stolfi, da Unicamp.
- Projeto de algoritmos (em C), do prof. Paulo Feofiloff, da USP.
- Estruturas de dados (em C), do prof. Paulo Feofiloff, da USP.
- Notas de aula, da disciplina de Programação Estruturada, da prof. Carla Lintzmayer (introdução à programação em C, recursão, vetores e listas).
Bibliografia
Livro texto
- SIPSER, M. Introduction to the Theory of Computation. 2nd edition.
Boston, Massachusetts: Thomson, 2006.
- Errata
- Tradução: SIPSER, M. Introdução à teoria da computação. 2 ed. São Paulo, SP: Thomson Learning, 2007.
Livros auxiliares
- HOPCROFT, J. E.; ULLMAN, D. J.; MOTWANI, R. Introdução à teoria de autômatos, linguagens e computação. 2. ed. Rio de Janeiro, RJ: Campus, 2003.
- Vieira, N. J.. Introdução aos Fundamentos da Computação: Linguagens e Máquinas. 1a edição. Cengage Learning. 2006.
Plano de Aula
No plano de aula você encontrará informações sobre a dinâmica do curso, cronograma, critério de avaliação e recuperação e etc.
Dias, horários e locais das aulas
- Os links para as videoaulas da semana serão disponibilidados nesta página as segundas-feiras.
Atendimento
Para nos comunicarmos de maneira mais eficiente, criei um servidor no aplicativo Discord. Ele será nosso canal primário de comunicação, então peço a todos que se cadastrem e acessem o servidor criado.
O Discord também será utilizado para a realização de atendimentos, de forma assíncrona e síncrona. O atendimento síncrono ocorrerá no seguinte horário:
- Terças-feiras, das 19h às 21h, no Discord
Aulas
ECE - Apresentação
Sobre o curso e conhecimentos necessários
Alfabetos e linguagens, Autômatos finitos determinísticos e
Linguagens Regulares
:CUSTOMID: alfabetos-e-linguagens-autômatos-finitos-determinísticos-e-linguagens-regulares
Autômatos finitos não determinísticos
Função de transição estendida e Propriedade das linguagens regulares
Expressões regulares
- 🕮 Seção 1.3 [1]
- Expressões regulares
- Revisão - Expressões Regulares (parte vista antes da paralisação)
- Expressões regulares descrevem linguagens regulares
- Exemplo: convertendo uma expressão regular em AFN
- Expressões regulares descrevem linguagens regulares
- Exemplo de aplicação de regex
Lema do Bombeamento
Gramática Livre de Contexto (GLC)
Gramática Livre de Contexto (GLC) - Parte 2
Autômato com Pilha (AP)
- 🕮 Seção 2.2 [1]
- Autômato com Pilha (AP)
- Definição formal de um AP
- Exemplo 1 de um AP
- Exemplo 2 de um AP
- Linguagens reconhecidas por um AP
- ❓ Quiz (prazo: 17/05)
Lema do Bombeamento para LLC
- 🕮 Seção 2.3 [1]
- Lema do bombeamento para linguagens livres de contexto
- Exemplo 1 - Aplicando o Lema
- Exemplo 2 - Aplicando o Lema
- ❓ Quiz (prazo: 20/05)
Máquinas de Turing (MT)
- 🕮 Seção 3.1 [1]
- Introdução
- Definição Formal
- Exemplo 1
- Exemplo 2
- ❓ Quiz (prazo: 24/05)
Máquina de Turing (MT) (Cont) 🆕
- 🕮 Seções 3.2 e 3.3 [1]
- MT (descr. intermediária)- Exemplo 1
- MT (descr. intermediária)- Exemplo 2
- MT como Subrotina
- Variantes de MT
- MT Simulando um computador
- Representação
- Tese de Church-Turing
- ❓ Quiz (prazo: 28/05)
Decidibilidade
- 🕮 Seções 4.1 e 4.2 [1]
- Decidibilidade
- ❓ Quiz (prazo: 31/05)
Decidibilidade (Cont.)
- 🕮 Seções 4.1 e 4.2 [1]
- Conjuntos Contáveis
- Conjuntos Incontáveis
- Limites da Computação
- ❓ Quiz (prazo: 04/06)
Redutibilidade (Cont.)
- 🕮 Seções 5.1 e 5.3 [1]
- Introdução a reduções
- Reduções
- Exemplo de Redução - Não Decidível - PARA
- Exemplo de Redução - Não Decidível - Vazio
- Exemplo de Redução - Não Decidível - Regular
- Exemplo de Redução - Não Decidível - Igual
- Reduções - continuação
- Exemplo de Redução - Não Turing-Reconhecível - Igual
- Exemplo de Redução - Não Turing-Reconhecível - Complemento Igual
- ❓ Quiz (prazo: 06/06)
Tratabilidade
- 🕮 Seções 7.1-7.4 [1]
- Tempo de Execução
- Análise Assintótica
- Complexidade entre modelos computacionais
- Teoria da Complexidade
- Reduções polinomiais
- ❓ Quiz (prazo: 15/06)
Listas de exercícios
Ao todo teremos 4 listas, que serão liberadas em pequenas partes. O objetivo principal é prover problemas representativos dos conceitos vistos, equivalentes aos que serão cobrados nas avaliações.
🚨 Instruções para elaboração e apresentação das listas de exercício
- Lista 1: linguagens regulares
- Lista 2: linguagens livres de contexto
entrega até as 23h59 de
17/0520/05 - Lista 3: máquinas de Turing
[entrega até as 23h59 de
02/0605/06] - Lista 4: redutibilidade, complexidade e intratabilidade
[entrega até as 23h59 de
07/0611/06]
Link para entrega da lista 1 - partes 1-2-3: [entrega até as 23h59 de 05/06]
Provas
Notas
- 🙈🤞🍀 notas
Plágio
Entre outros, o código de ética da UFABC estabelece em seu artigo 25 que é eticamente inaceitável que os discentes:
- fraudem avaliações,
- fabriquem ou falsifiquem dados,
- plagiem ou não creditem devidamente autoria,
- aceitem autoria de material acadêmico sem participação na produção,
- vendam ou cedam autoria de material acadêmico próprio a pessoas que não participaram da produção.
Muitos ainda têm dúvidas sobre a interpretação das regras definidas pelo Código de Ética da UFABC. Por esta razão, diversos professores elaboraram um documento (disponível aqui) com vários exemplos e esclarecendo a interpretação das regras acima. Abaixo uma versão resumida, que não substitui de modo algum sua leitura. Sempre consulte o documento completo ou converse com o seu professor em caso de dúvidas!
- Regra 1: Você não pode enviar para avaliação um trabalho que não seja de sua própria autoria ou que seja derivado/baseado em soluções elaboradas por outros.
- Regra 2: Você não pode compartilhar a sua solução com outros alunos nem pedir aos seus colegas que compartilhem as soluções deles com você.
- Regra 3: Nos trabalhos enviados para avaliação você deve indicar eventuais assistências que você tenha recebido.
- Nós encorajamos fortemente que você procure outras pessoas quando houver a necessidade. Discuta o problema e possíveis ideias para soluções, mas elabore sua própria solução, por conta própria.
- 🚨 Qualquer violação às regras descritas acima implicará em descarte dos conceitos atribuídos a TODAS as tarefas avaliativas regulares de TODOS os envolvidos, causando assim suas reprovações automáticas com conceito F.
- Possível denúncia à Comissão de Transgressões Disciplinares Discentes da Graduação, a qual decidirá sobre a punição adequada à violação que pode resultar em advertência, suspensão ou desligamento, de acordo com os artigos 78-82 do Regimento Geral da UFABC.