Language Emulator, uma ferramenta de auxílio no ensino de Teoria da Computação

Documentos relacionados
Melhorias de um framework para o estudo de elementos de Teoria da Computação

Linguagens Formais e Autômatos (LFA)

Teoria de Linguagens 2 o semestre de 2015 Professor: Newton José Vieira Primeira Lista de Exercícios Entrega: até 16:40h de 15/9.

Teoria de Linguagens 2 o semestre de 2017 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 19/9/2017 Valor: 10 pontos

Teoria de Linguagens 1 o semestre de 2018 Professor: Newton José Vieira Primeira Lista de Exercícios Data de entrega: 17/4/2018 Valor: 10 pontos

Laboratório de Linguagens Formais - LabLF

2. DISCIPLINA REQUISITO (RECOMENDAÇÃO) 3. INDICAÇÃO DE CONJUNTO (BCC) Obrigatória TEORIA: 60 LABORATÓRIO: 30

Linguagens Formais e Autômatos 02/2016. LFA Aula 01 24/10/2016. Celso Olivete Júnior.

INCLUSÃO DO ALGORITMO DE TRANSFORMAÇÃO DE UM AUTÔMATO FINITO EM EXPRESSÃO REGULAR NO AMBIENTE EDITOR DE AUTÔMATOS FINITOS

Fundamentos da Teoria da Computação

Universidade Federal de Alfenas

Teoria da Computação. Expressões Regulares e Autômatos Finitos. Thiago Alves

Como construir um compilador utilizando ferramentas Java

Teoria da Computação Prof. Lucília Figueiredo Prova 03 - ENTREGA DIA 24/06/2015. (a) Descreva o programa da MT usando um pseudocódigo.

SCC-5832 Teoria da Computação

Linguagens Formais e Autômatos (BBC242) Professor: Anderson Almeida Ferreira DECOM-UFOP

SCC Introdução à Teoria da Computação

SCC Teoria da Computação e Linguagens Formais

Caixa Postal 3167 CEP Criciúma, SC, Brasil

Expressões Regulares. Linguagens Formais e Autômatos. Andrei Rimsa Álvares

Linguagens Formais e Autômatos

Algoritmo de Minimização de AFD

PLANO DE ENSINO. CURSO: Bacharelado em Sistemas de Informação MODALIDADE: PRESENCIAL ( X ) OBRIGATÓRIA ( ) OPTATIVA DEPARTAMENTO: DEINFO

Professora Orientadora do Departamento de Ciências Exatas e Engenharias. 4

INE5317 Linguagens Formais e Compiladores AULA 5: Autômatos Finitos

Turing to Norma, uma ferramenta para auxiliar o estudo da equivalência entre Máquina de Turing e Máquina Norma

Linguagens Formais. Aula 01 - Conceitos Básicos. Prof. Othon Batista Mestre em Informática

Análise Léxica. Fundamentos Teóricos. Autômatos Finitos e Conjuntos Regulares (cap. III da apostila de Linguagens Formais e Compiladores)

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Curso de Ciências de Computação

Teoria da Computação (BBC244)

Linguagens Formais e Autômatos. Tiago Alves de Oliveira

O que é Linguagem Regular. Um teorema sobre linguagens regulares. Uma aplicação do Lema do Bombeamento. Exemplo de uso do lema do bombeamento

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

LFA Aula 08. Minimização de AFD Autômatos Finitos com saídas 25/01/2017. Linguagens Formais e Autômatos. Celso Olivete Júnior.

Universidade Federal de Alfenas

INF1626 Linguagens Formais e Autômatos em

Máquinas de Turing - Computabilidade

SIMULADOR DE AUTÔMATOS FINITOS DETERMINÍSTICOS - AUTOMATOGRAPH 1 DETERMINISTIC FINITE AUTOMATA SIMULATOR - AUTOMATOGRAPH

Curso: Ciência da Computação Turma: 6ª Série. Teoria da Computação. Aula 5. Aplicação Prática de Autômatos Finitos

UFCG IQuanta DSC. Cheyenne R. G. Isidro Bernardo Lula Júnior

ECO026 TEORIA DA COMPUTAÇÃO. Prof: Rafael Santos Site:

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular OPÇÃO 3 - TEORIA DA COMPUTAÇÃO Ano Lectivo 2011/2012

UNIVERSIDADE ESTADUAL DO SUDOESTE DA BAHIA - UESB DEPARTAMENTO DE CIÊNCIAS EXATAS - DCE PLANO DE CURSO DISCIPLINA

SCC-ICMC-USP. Trabalho em Grupo 1 SCC-0205

UNIVERSIDADE DA BEIRA INTERIOR

Fundamentos da Teoria da Computação

A. (Autómatos finitos determinísticos e não determinísticos AFD e AFND)

Ubiratam Carvalho de Paula Junior Rafaelli de Carvalho Coutinho

Linguagens Regulares. Prof. Daniel Oliveira

Fundamentos da Teoria da Computação

A pesquisa no ensino de computação. Práticas de ensino de algoritmos (Hazzan, Cap. 4) Péricles Miranda

Universidade Federal de Alfenas

Prof. Dr. Marcos Castilho. Departamento de Informática/UFPR. 22 de Fevereiro de 2018

UNIVERSIDADE LUSÍADA DE LISBOA. Programa da Unidade Curricular COMPILADORES Ano Lectivo 2017/2018

Java Básico. Aula 1 por Thalles Cezar

Estruturas de Dados Apresentação

AMBIENTE DIDÁTICO GRÁFICO PARA A COMPREENSÃO DE LÓGICA DE PROGRAMAÇÃO. Rodrigo Ferreira da Silva

Desenvolvimento de documentação para usuário do SCTMF

PORTUGOL/PLUS: UMA FERRAMENTA DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO BASEADO NO PORTUGOL

MANUAL DO AMBIENTE VIRTUAL DE APRENDIZAGEM - ALUNO

Compiladores. Prof. Bruno Moreno Aula 8 02/05/2011

1 INTRODUÇÃO E CONCEITOS BÁSICOS

Decidibilidade. Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/02)

INE5317 Linguagens Formais e Compiladores. Ricardo Azambuja Silveira INE-CTC-UFSC URL:

Linguagens Formais e Autômatos P. Blauth Menezes

Linguagens Formais e Autômatos. Autômatos Finitos Determinísticos (AFD)

Introdução a Tecnologia da Informação

SIMMoL SIMULADOR ITERATIVO DE MODELOS PARA LINGUAGENS. Clemilton Mackson Fagundes Baracho

Maquetes Tridimensionais Interativas

GAM - Um Simulador para Auxiliar o Ensino de Linguagens Formais e de Autômatos

Editor de Autômatos Finitos. Acadêmica: Josiane Patrícia Morastoni Orientadora: Joyce Martins

LFApp: Um Aplicativo Móvel para o Ensino de Linguagens Formais e Autômatos

Autómatos Finitos Determinísticos (AFD)

BEM-VINDOS À BIBLIOTECA BIM SASAZAKI Página 1 de 21

Construindo Jogos Digitais para apoiar o Ensino de Matemática e Ensinar a Construir e Testar Sistemas Concorrentes

WEB VIEWER - Versão 3.3.1

Mário S. Alvim Fundamentos de Teoria da Computação (FTC) DCC-UFMG (2018/01)

Linguagens Formais e Autômatos Apresentação da Disciplina

SOFTWARE DE INCENTIVO EDUCACIONAL. Educational Incentive Software

Caros Usuários Siga Brasil,

TUTORIAL REDEC-LOOK: Repositório Gestor de Objetos de Aprendizagem

INE5317 Linguagens Formais e Compiladores AULA 6: Autômatos Finitos Com S aída

SCC Capítulo 3 Linguagens Sensíveis ao Contexto e Autômatos Limitados Linearmente

Capítulo 9: Linguagens sensíveis ao contexto e autômatos linearmente limitados.

PROTOCOLO ONLINE. Após realizar o login, na tela inicial, o aluno irá clicar em Educacional, para visualizar todas as funcionalidades acadêmicas.

SCC Capítulo 2 Linguagens Livres de Contexto e Autômatos de Pilha (versão 2)

Algoritmos e Programação

SCC 205 Teoria da Computação e Linguagens Formais

MANUAL DO AMBIENTE VIRTUAL DE APRENDIZAGEM - ALUNO

Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação

Modelos de Computação

Teoria da Computação. 2006/2007 Trabalho prático nº 1. Trabalho realizado por: Pedro Oliveira ( ) Rui Costa ( ) Turma: TP1

AF Não-determinísticos Equivalência entre AFDN e AFD Equivalência entre AF e GR (H&U, 1969 e 1979), (H;M;U, 2001) e (Menezes, 2002) 1

Tutorial para o uso do aplicativo TransCal 1.1

Capítulo A máquina de Turing (TM) padrão Combinações de máquinas de Turing A Tese de Turing. ADC/TC/Cap.9/ /LEI/DEIFCTUC 375

Lista de Exercícios Definição de gramáticas e Autômatos Finitos Determinísticos

Uma Hierarquia de Classes para Construção de Autômatos Finitos. An Hierarchy of Classes for Development of Finite Automata

Transcrição:

Language Emulator, uma ferramenta de auxílio no ensino de Teoria da Computação Luiz Filipe Menezes Vieira 1, Marcos Augusto Menezes Vieira 1, Newton José Vieira 1 1 Departamento de Ciência da Computação - Universidade Federal de Minas Gerais (UFMG) - Av. Antônio Carlos, 6627-31270-010, Belo Horizonte, MG, Brasil {lfvieira, mmvieira, nvieira} @dcc.ufmg.br Abstract. During a master degree class, we developed a tool to help students to understand the concepts of Automata Theory. It was denominated Language Emulator and has been used by undergraduate students to help them to learn the ideas of Automata Theory. Language emulator is a software developed in Java that allows the manipulation of regular expressions, regular grammar, deterministic finite automata, non-deterministic finite automata, nondeterministic finite automata with lambda transitions, Moore and Mealy machines. Using this software tool was of great acceptance among students, leading to over 95% of approval in a recent opinion research. Resumo. Durante o curso de pós-graduação, foi desenvolvida uma ferramenta para ajudar os estudantes a compreender os conceitos da teoria da computação. Ela foi denominada Language Emulator e tem sido usada por estudantes da graduação com o intuito de ajudar-lhes a aprender as idéias da teoria dos autômatos. O Language Emulator é um software desenvolvido em Java na UFMG que permite a manipulação de expressões regulares, gramáticas regulares, autômatos finitos determinísticos, autômatos finitos não-determinísticos, autômatos finitos não-determinísticos com transições lambda, máquinas de Moore e de Mealy. O uso da ferramenta foi de grande aceitação entre os estudantes, chegando a 95% de aprovação em uma pesquisa recentemente realizada com os alunos. Keywords: Teoria da computação, ferramenta, ensino. 1. Introdução O curso de teoria da computação é tradicionalmente ensinado sem nenhuma ajuda de ferramentas de software, limitando-se ao uso de tarefas que não necessitam do uso de um computador. Todos os exercícios envolvem o uso do lápis e papel e estes podem ser um inconveniente neste curso. Uma possível solução seria ter alguns exercícios que envolvessem o uso de ferramentas de software. Como mostrado por [1], há duas razões principais porque muitos estudantes têm mais dificuldade com cursos da área de teoria da computação do que cursos de outras áreas. A primeira é que disciplinas da teoria tem mais matemática do que a maioria das outras disciplinas de Ciência da Computação. A segunda razão é o fato dos estudantes não recebem um feedback imediato ao trabalharem em problemas usando lápis e papel.

Estes efeitos podem ser reduzidos pelo uso de ferramentas de software, tais como o Language Emulator que permite que os estudantes brinquem com a teoria da computação e interajam com autômatos. Neste artigo, nós descrevemos os trabalhos relacionados na seção 2, a funcionalidade do Language Emulator na seção 3, a apresentação gráfica na seção 4. A seção 5 descreve como esta ferramenta pode ser usada em uma sala de aula e o estudo de caso da ferramenta em uma sala da graduação. E, finalmente, na seção 7 as conclusões e trabalhos futuros. 2. Trabalhos relacionados Na Ciência da Computação, para muitos assuntos existem ferramentas para ajudar os estudantes na aprendizagem. Muitas ferramentas, incluindo [2], foram desenvolvidas para criar animações dos algoritmos e estas podem ser usadas no ensino. JFLAP[1] (Java Formal Languages and Automata Package) é uma excelente ferramenta que pode ser usada na disciplina de fundamentos da teoria da computação, mais especificamente, na parte de teoria dos autômatos. Infelizmente, não é internacionalizada, aceita somente o inglês, e não suporta a transição entre os vários tipos de autômatos que trabalha. Deus Ex Machine [6] foi desenvolvido por Nick Savoiu e compreende simulações de sete modelos da computação. Foi desenvolvido para acompanhar o livro Models of Computation and Formal Languages de R. Gregory Taylor. Atualmente só há versões para a plataforma Windows. Turing s World [7] é uma ferramenta gráfica que permite especificar máquinas de Turing desenhando o diagrama de estados e as transições. Ela permite visualizar graficamente as operações na máquina de Turing. Webworks Laboratory [8] apresenta um conjunto de projetos na área de Fundamentos da Teoria da Computação. Se destaca o Animating the Theory of Computing, uma ferramenta desenvolvida para permitir que os estudantes aprendessem através de animações de automâtos finitos. Ganimal [9] é um projeto de software para aprendizado de compiladores que gera animações de máquinas abstratas. A máquina pode ser escolhida de acordo com o tipo de linguagem: imperativa, funcional ou a pilha. The Java Computability Toolkit [10] é um ambiente gráfico para criar e simular automâtos finitos determinísticos e não-determinísticos e máquinas de Turing. Ele foi desenvolvido em Java, e permite minimizar o AFD e converter um AFN em um AFD. 3. A Ferramenta O Language Emulator foi construído para trabalhar com as formas mais usuais de descrição de linguagens regulares. Os sete formatos suportados são: Expressão Regular. Gramática Regular. Autômato finito determinístico (AFD). Autômato finito não determinístico (AFN).

Autômato finitos não determinístico com transições lambda (AFNλ). Máquina de Moore. Máquina de Mealy. E adicionalmente as seguintes funcionalidades: Minimizar autômatos finitos determinísticos. Transformar autômato finito não-determinístico em autômato finito determinístico. Transformar autômato finito não-determinístico com transições lambda em autômato finito não-determinístico. Transformar uma gramática regular em um autômato finito não-determinístico. Transformar autômato finito não-determinístico em uma gramática regular. Transformar uma expressão regular em um autômato finito não-determinístico com transição lambda. Transformar autômato finito não-determinístico em uma expressão regular. Derivar todas as palavras até um tamanho n que pertençam a uma gramática regular. Determinar se uma palavra pertence a uma gramática regular. Determinar se uma palavra pertence à linguagem especificada por um autômato finito determinístico. Determinar se uma palavra pertence à linguagem especificada por uma expressão regular. Transformar uma máquina Mealy em uma máquina de Moore. Transformar uma máquina de Moore em uma máquina Mealy. Dar a saída de uma máquina de Moore para uma entrada dada. Determinar se uma palavra pertence à uma máquina Mealy ou de Moore. União, interseção e diferença de dois AFDs. Complemento de um AFD. União das diferenças entre dois AFDs. A F = (A 1 - A 2 )U(A 2 - A 1 ) Salvar e Carregar AFDs. Exportar o AFDs para um arquivo no formato utilizado pela ferramenta GraphViz[11]. Esta ferramenta recebe uma descrição textual de um grafo e gera uma representação visual do mesmo.

Minimize Gramática Regular AFN com lambda AFD AFN Expressão Regular Moore Mealy Figura 1 Transformação entre formatos de linguagem regulares A ferramenta também mostra os passos intermediários do algoritmo, imprimindo os valores de cada etapa da execução. 4. Interface A linguagem de programação escolhida para criar a ferramenta de ajuda para a teoria dos autômatos foi Java, simplesmente porque funciona em toda plataforma que suporta a máquina virtual Java, o que é comum em um ambiente educacional. Ela foi projetada usando Java Swing que é o novo padrão de interface da plataforma Java. Ela foi desenvolvida inicialmente para o português, mas é possível internacionalizar a ferramenta, mudando para a língua desejada, como, por exemplo, inglês.

Figura 2 Autômatos finitos determinísticos no Language Emulator. Há sete abas que o usuário pode escolher na relação que permite construir qualquer um dos sete formatos de linguagem regular suportadas no Language Emulator: autômatos finitos determinísticos, autômatos finitos não-determinísticos, autômatos finitos não-determinísticos com transições lambda, gramática regular, expressão regular, máquinas Moore e máquinas Mealy. Para cada formato existe uma interface apropriada. Esta pode ser visualizada quando o usuário seleciona a aba com o nome do formato. Ela permite acessar as funcionalidades associadas ao formato. Por exemplo, os autômatos finitos determinísticos podem ser minimizados ou gerar a expressão regular que reconhece a mesma linguagem que eles. Estas duas funcionalidades podem ser acessadas pelo usuário através dos botões Minimizar e ER presentes na tela dos autômatos finitos determinísticos, que é mostrada na Figura 2.

Figura 3 ToolTips estão presentes no Language Emulator. A Figura 3 mostra uma tela do Language Emulator que mostra a presença de ToolTips. Eles estão presentes na ferramenta, o que torna mais intuitivo o uso desta. Figura 4 Uma Gramática Regular no Language Emulator.

A Figura 4 mostra a construção de uma gramática regular. O usuário introduz primeiramente os não terminais, o alfabeto e então o não terminal inicial, de acordo com a definição matemática de uma gramática regular. Então acione o botão OK para iniciar a tabela onde podem ser inseridas as regras. Clicando sobre inserir regras, a gramática é construída. É possível ver se há uma palavra que pertença ou não à linguagem regular que é reconhecida pela gramática regular, ou construir um autômato finito não determinístico (AFN) que reconheça a mesma linguagem que a gramática. Com este AFN é possível descobrir se uma palavra é reconhecida pelo autômato, modificá-lo, inserindo novos símbolos no alfabeto ou mudando os estados iniciais e/ou finais. Também é possível gerar uma expressão regular que represente a linguagem aceita pelo autômato e, inclusive, gerar a gramática ou um autômato finito determinístico (AFD). No Language Emulator, as funcionalidades que permitem manipular um AFD estão descritas na seção sobre a ferramenta. É possível modificar o autômato em qualquer um dos seus componentes (estados, alfabeto, estado inicial, estados finais e transições). Este pode ser minimizado ou pode-se gerar a expressão regular equivalente. O Language Emulator pode ser utilizado para verificar se uma palavra pertence ou não a linguagem equivalente a uma expressão regular e/ou gerar o AFNλ equivalente a uma expressão regular. Esta também pode ser editada. Na ferramenta, uma representação no formato de um AFNλ apresenta quase as mesmas funcionalidades que uma no formato de um AFN. É possível descobrir se uma palavra é reconhecida pelo autômato, modificá-lo e pode ser gerado um AFN equivalente. 5. Auxílio no ensino Junto com a teoria, alguns exercícios práticos podem ser atribuídos. A cada parte da teoria abordada, como autômatos finitos determinísticos, uma tarefa pode ser dada envolvendo o uso da ferramenta. Este modelo torna o assunto mais divertido para aprender. Caso de Uso - UFMG Durante o primeiro semestre de 2002, na aula da disciplina Fundamentos da Teoria da Computação na UFMG (Universidade de federal Minas Gerais) a ferramenta foi utilizada. Seguindo o modelo sugerido acima, após o ensino de AFNλ, AFN, AFD e ER foi proposto o seguinte exercício: Exemplo de exercício Seja o AFNλ:

a 1 λ λ λ 3 4 c 2 c b,c Figura 5 Autômato do Exercício (a) Faça no papel a tabela de transições. (b) Construa um AFNλ na ferramenta. (c) Faça no papel o AFN equivalente. (d) Utilizando a ferramenta, converta o AFNλ para um AFN. (e) Faça no papel um AFD equivalente. (f) Utilizando a ferramenta, converta o AFN para um AFD. (g) Faça no papel a minimização do AFD. (h) Utilizando a ferramenta, minimize o AFD. (i) Construa uma expressão regular que denote a linguagem reconhecida. (j) Utilizando a ferramenta, converta o AFD para uma ER. Com a aplicação do exercício para ser resolvido em casa, os alunos puderam corrigir os próprios exercícios e aprender aonde estavam errando. Auxílio ao professor A ferramenta além de ser utilizada pelos alunos, também pode ser utilizada pelo professor para corrigir exercícios. Seja L 1 a linguagem reconhecida pelo autômato A 1 descrito pelo aluno e seja L 2 a linguagem reconhecida pelo autômato correto A 2. A ferramenta permite calcular o autômato resultante da união, interseção ou diferença entre dois autômatos finitos determinísticos. Além disso, foi incorporado a ferramenta a operação de união das diferenças de dois AFDs. Esta operação é útil, conforme mostraremos a seguir. Utilizando a própria ferramenta, selecionando o botão União das Diferenças na interface dos AFDs, podemos calcular:

A 3 = (A 1 - A 2 ) U (A 2 - A 1 ) A linguagem reconhecida pelo autômato A 3 será vazia se o autômato estiver correto. E gerando uma palavra de A 3 é possível encontrar um exemplo de palavra que torna a solução incorreta. Exemplo: Seja a linguagem L 2 = {ab}*. O autômato correto A 2 seria: Suponha que o autômato A 1 do aluno seja: Figura 6 AFD que reconhece L 2 Figura 7 AFD desenvolvido por um aluno. O autômato A 1 reconhece ab, abab, ababab,, (ab) n. Porém ele não está correto. Uma maneira rápida de mostrar isto é encontrar um contra-exemplo. No nosso caso, o autômato A 1 não reconhece λ e portanto, não reconhece a linguagem L 2. Utilizando a função de diferença entre dois AFDs da ferramenta, calculamos A 2 - A 1 para encontrarmos as palavras que não são corretamente reconhecidas pelo autômato A 1.

Figura 8 Autômato resultante de A 2 -A 1. O autômato da Figura 8 reconhece apenas λ. E também calculamos A 1 -A 2 para encontrar as palavras que são incorretamente reconhecidas pelo autômato A 1 Figura 9 Autômato resultante de A 1 -A 2. O autômato da Figura 9 reconhece o conjunto vazio. Observe que não há estados finais. Figura 8 e Figura 9 foram geradas com o GraphViz[11] após utilizar a função exportar do Language Emulator. Outra maneira de se verificar a corretude do autômato do aluno seria gerar a expressão regular equivalente ao autômato e verificar se ela representa a mesma linguagem que o autômato correto. No exemplo, o Language Emulator retornou ER 1 =(ab(ab)*) para o autômato do aluno. Observa-se que λ não pertence a linguagem equivalente a ER 1. Avaliação da ferramenta Como era a primeira vez que o Language Emulator estava sendo utilizado em uma sala de aula, os estudantes da disciplina participaram também no processo de avaliação da ferramenta. Quase 95% dos estudantes responderam que o uso do Language Emulator ajuda no processo de aprender a teoria dos autômatos. Eles deram também algumas sugestões que podem ser feitas como trabalho futuro para melhorar a ferramenta e sua capacidade de ajudar no ensino. Uma das vantagens citadas pelos estudantes é o fato que eles podem fazer os exercícios com lápis e papel e depois usar o Language Emulator para verificar se o fizeram corretamente.

6. Conclusão e Trabalhos Futuros O Language Emulator tem sido utilizado no processo de ensinar teoria dos autômatos. É possível o estudante interagir com os formatos de linguagens regulares e receber um feedback imediato. O uso da ferramenta em um curso de computação teve um nível elevado de aprovação, concordando com a finalidade de tal ferramenta. Os estudantes gostaram muito do fato de poderem verificar se seu trabalho feito a lápis estivesse correto. A ferramenta está em um estágio inicial e pode ser melhorada. Um trabalho futuro seria permitir o desenho dos estados e transições, tornando a entrada de dados gráfica. Este trabalho foi parcialmente financiado pelo CNPQ. References [1] Rodger, S.H. Using JFLAP to interact with Theorems in Automata Theory. SIGCCE (1999), 336-340. [2] P. Gloor, AACE Algorithm Animation for Computer Science Education. Workshop on Visual Languages, p. 25-31,1992. [3] Rincon, Mauricio Ayala et al. A framework to visualize equivalences between computational models of regular languages. [4] Grinder, Michael T., Animating Automata A Cross-Plataform Program for Teaching Finite Automata [5] Robinson, M. B., Hamshar, J. A., Novillo, J. E., and Duchowski, A. T. A java-base tool for reasoning about models of computation through simulating finite automata and turing machines. In Thirtieth SIGCSE Technical Symposium on Computer Science Education,1999, p. 105-109. [6] Deus Ex Machine, web site: http://www.ics.uci.edu/~savoiu/dem/ [7] Turing s World, web site: http://www-csli.stanford.edu/hp/logic-software.html [8] Webworks Laboratory,web site: http://www.cs.montana.edu/webworks [9] Ganimal, web site: http://rw4.cs.uni-sb.de/~ganimal/ [10] Robinson, M.B., Hamshar, J.A., Novillo, J.E., Duchowski, A.T. A Java-based Tool for Reasoning About Models of Computation Through Simulating Finite Automata and Turing Machines. 30th Annual ACM SIGCSE Symposium (Special Interest Group on Computer Science Education), New Orleans, Louisiana, March 24-28, 1999. [11] E. Koutsofios and S. C. North. Drawing Graphs with dot. AT&T Bell Laboratories, Murray Hill NJ, U.S.A., October 1993.