ENSINO DO CONCEITO DE MQUINAS DE TURING Gerson Pastre de Oliveira 1
Marco Aurlio Seraphim da Silva 2
Resumo Este trabalho relata a construo de um sistema que utiliza uma interface grfica para simular o conceito de mquina de Turing. A interface, construda em Java, baseada em tcnicas de programao de jogos e tem como finalidade principal auxiliar no processo de ensino-aprendizagem em disciplinas como Teoria da Computao. Alm dos aspectos tcnicos pertinentes ao funcionamento da aplicao, este artigo procura abordar as vantagens do uso de simulaes no ensino superior, principalmente em processos que envolvam conceitos complexos. 1. INTRODUO Por que usar simuladores para o ensino de teoria da computao? A pergunta que d ttulo a esta seo suscita uma srie de reflexes, todas elas bastante relevantes, envolvendo duas reas do conhecimento, as quais tm freqentemente aparecido interconectadas na atualidade: educao e cincia da computao. Na tentativa de colaborar com a construo de conhecimentos que permitam trabalhar com estas duas frentes, surge este artigo, tambm como resultado de um esforo de investigao, realizado no ano de 2006, no mbito do Programa de Iniciao Cientfica da Faculdade Politcnica de Jundia. O carter complexo do conhecimento pertinente j foi assinalado por Morin (2002), ao indicar que a linearidade e a simplicidade no se coadunam com a multidimensionalidade que constitui a construo dos saberes contemporneos. Em meio ao caos gerado pela diversidade das fontes de dados, da multiplicao exponencial dos meios de acesso e das formas de conexo com as informaes e do fluxo incontrolvel de produo destes elementos, dados e informaes, no h como pretender que o conhecimento, uma construo pessoal refinada, se submeta a parcelizao em disciplinas no comunicantes. Ao contrrio, diante dos desafios da complexidade, a interdisciplinaridade parece colaborar de forma definitiva para que as iniciativas que visem
1 Professor da Faculdade Politcnica de Jundia (Anhanguera Educacional); Doutor em Educao (USP) 2 Faculdade Politcnica de Jundia. subsidiar este processo de construo de conhecimentos tenham xito principalmente no meio acadmico. Alm disso, mltiplos meios de assimilao de dados esto disponveis na atualidade, permitindo que as snteses pessoais que resultam em informaes possam ser feitas para alm das dimenses primrias da oralidade e do texto escrito, ainda que estas sejam formas muito importantes e vlidas neste processo. Entre esses outros, em adio aos tradicionais meios de comunicao de massa, esto as novas tecnologias de informao e comunicao (NTIC). As possibilidades das NTIC so amplas, incluindo comunicao e ensino a distncia atravs de diversos paradigmas. Entretanto, tais tecnologias abrem novas possibilidades tambm no ensino presencial, de forma a permitir que a estratgia pedaggica do professor receba o auxlio de programas computacionais que pretendam dar suporte ao processo de aprendizagem, por parte dos alunos, de contedos complexos. A perspectiva do computador em sala de aula no a da substituio de professores por mquinas. As ferramentas computacionais, utilizadas como auxiliares do processo de ensino- aprendizagem portanto devidamente encaixadas na estratgia pedaggica do curso rendem largas oportunidades para a construo crtica do conhecimento. No realizam o papel do professor, no ensinam, no resolvem todos os problemas das diversas dimenses da escola, mas podem oportunizar, no contexto acanhado da sala de aula e para alm dele, a dinmica da experimentao. (...) Para o aluno, surge a oportunidade de intervir, de usar da tecnologia para tornar-se co-autor (Oliveira, 2004). Para o professor, ento, o computador configura-se como um auxiliar valioso, desde que utilizado com o planejamento devido. Mas os discentes, para os quais existem contedos e estratgias, no esto esquecidos. Diante da possibilidade de ampliar seu papel, o aluno encontra conexes e implementa, efetivamente, uma interdisciplinaridade que lhe traz sentido e que mais do que um simples projeto de interligao de contedos de disciplinas diversas. Alm disso, amplia-se o espao interacional, composto por pessoas que aprendem juntas e pelo prprio conhecimento no apenas informao (idem,ibidem). Em uma sociedade na qual a interatividade est cada vez mais presente e na qual os dispositivos que potencializam o uso dos sentidos constituem de forma crescente a vida das pessoas, inclusive para aprender, propor que os computadores sejam usados para ensinar uma teoria complexa parece muito razovel. Uma possibilidade aberta para o uso dos computadores com fins educacionais a da simulao, definida por Oliveira como (...) a utilizao de alguns aspectos de determinado universo, testados atravs de inseres feitas em um modelo, admissvel neste mesmo universo. Trata-se de mtodo utilizado na tecnologia educacional, geralmente chamado de simulao baseada em computador, e que, na definio de Laurillard (1995), um programa que assume algumas instncias de um aspecto do mundo, permitindo que o usurio faa entradas no modelo, execute-o e mostre os resultados (Oliveira, 2000, p.44-45). Como pode ser visto mais adiante neste trabalho, o conceito de mquinas universais, e em especial o de mquinas de Turing, no mbito do ensino de disciplinas como Teoria da Computao, bastante complexo, principalmente no que diz respeito operacionalizao de mquinas especficas, dadas a partir de expresses regulares ou de funes. A construo de um programa que efetue a simulao deste processo pode auxiliar no teste de hipteses formuladas por professores e alunos, de modo a consolidar o aprendizado atravs da experimentao. O carter interdisciplinar da proposta surge ao lanar uma viso mais ampla em relao ao uso de simuladores deste tipo: o carter de subsdio aprendizagem lgica tem interfaces importantes e integradoras com disciplinas como algoritmos, estrutura de dados, matemtica discreta, entre outras. 2. MQUINA DE ESTADO FINITO E MQUINA DE TURING 2.1 Mquina de estado finito A definio formal de mquinas de estado finito pode ser dada de acordo com a proposio seguinte (Gersting, 2001, p.399): M = [S, I, O, f e , f o ] uma mquina de estado finito se S um conjunto finito de estados, I um conjunto finito de smbolos de entrada (o alfabeto de entrada), O um conjunto finito de smbolos de sada (o alfabeto de sada) e f e e f o so funes, onde f s :S x I s e f o :S O. A mquina sempre comea inicializada em um estado inicial fixo s 0 . Ao falar sobre este conceito, Gersting (op.cit., p.398) indica que as mesmas constituem um modelo capaz de assimilar caractersticas de computadores atuais. Em termos gerais, o que se pode entender sobre tais mquinas que as mesmas possuem, assim como os computadores digitais, operaes sincronizadas por pulsos discretos, tm aes previsveis, ou seja, funciona de forma determinstica, respondem a dados de entrada e produzem dados de sada, mediante processos aplicados aos dados de entrada e de acordo como a seqncia de estados, de ordem finita, que a mquina pode assumir. O conceito de estado extremamente importante. Para Gersting (idem, ibidem), em qualquer momento, a mquina est em exatamente um desses estados. Em qual estado ela estar a seguir depende tanto do estado atual quanto dos dados de entrada. Ou seja, trata-se de uma mquina conceitual, a qual, a cada ciclo de funcionamento, recebe um dado de entrada, que, por sua vez, alterar o estado no qual a mquina se encontra, de forma a emitir uma sada compatvel. Como estado, ainda, pode-se entender uma memria que armazena um nmero representativo do ponto do processamento no qual a mquina se encontra. O nmero de estados deve ser finito, e a especificao de cada um deles conhecida no mbito da mquina em questo. Os dados de entrada da mquina so conhecidos e dados atravs de um alfabeto I, que deve conter um conjunto finito de smbolos, entre os quais pode constar o smbolo e o sentido matemtico de vazio (). Em Gersting (2001, p.399), tem-se que a descrio particular de uma mquina de estado finito compreende a definio dos conjuntos e funes pertinentes. As funes f s e f o
podem ser definidas com o uso de tabelas de estados ou de grafos de estados, conforme exposto nas figuras seguintes. Para as mquinas ali representadas, os conjuntos envolvidos seriam S = {s 0 , s 1 , s 2 }, I = {0,1}, O = {0,1}.
Tabela 1. Tabela de estado (adaptado de Gersting, 2001, p.399) Prximo estado Entrada Atual Estado atual 0 1 Sada S0 S1 S0 0 S1 S2 S1 1 S2 S2 S0 1
Figura 1. Grafo de estado (adaptado de Gersting, 2001, p.399)
2.2 Mquina de Turing Em 1936, o matemtico britnico Alan M. Turing fez uma proposta que se mostrou, posteriormente, muito avanada em termos cientficos para a poca: o dispositivo conceitual que, em sua homenagem, ficou conhecido como mquina de Turing. Trata-se de uma mquina de estado finito que agrega possibilidades adicionais, como a de reler os dados de entrada, alm de escrever e apagar por cima dos mesmos (Gersting, 2001, p.419). Este modelo representa um avano em relao s mquinas de estado finito tradicionais, de modo a superar as limitaes encontradas em tais modelos, principalmente em uma caracterstica que amplia de forma exponencial suas perspectivas: a mquina de Turing possui memria auxiliar ilimitada (idem, ibidem). Uma mquina de Turing contm um conjunto de quntuplas que definem seu comportamento e uma fita, dividida em clulas, cada qual contendo apenas um smbolo vlido de acordo com um alfabeto finito disponvel. Esta fita tem seu tamanho ilimitado, e pode ser lida e escrita por uma cabea de leitura mvel (conceitual), a qual, a cada ciclo, est parada sobre uma das clulas da fita. Um smbolo especial, geralmente b, permite identificar as clulas em branco. Alm disso, a quantidade de clulas que no est em branco em determinado momento sempre finita (idem, ibidem). A direo do movimento dada por D (direita) ou E (esquerda). Como definio formal, tem-se: Sejam S um conjunto finito de estados e I um conjunto finito de smbolos para a fita (o alfabeto da fita), incluindo um smbolo especial b. Uma mquina de Turing um conjunto de quntuplas da forma (s,i,i,s,d), onde s, s S; i,i I; e d {D,E}, tais que duas quntuplas distintas nunca comeam com os mesmos smbolos s e i (Gersting, 2001, p.420).
Figura 2. Quntupla para mquina de Turing
Figura 3. Exemplo de fita para Mquina de Turing e comportamento da mesma para a quntupla (2,1,0,1,D) 3. PROTTIPO A opo metodolgica adotada neste trabalho previu, desde o incio, a construo de um prottipo em linguagem computacional que permitisse simular os conceitos relacionados mquina de Turing. Para a criao do mesmo, foi escolhida a linguagem de programao Java, dada sua independncia de plataformas, e por permitir que um mesmo aplicativo possa ser executado tanto em ambiente desktop quanto na Internet, na forma de applet. Como forma de manter a portabilidade, todo o projeto foi criado como um componente, no qual existe uma classe (TuringMachine) que encapsula todas as funcionalidades. Todas as interaes entre usurio e mquina so realizadas atravs desta classe. Desta forma, para portar a aplicao de um ambiente desktop, para um ambiente web, necessrio apenas criar uma classe do tipo JApplet e instanciar a classe TuringMachine, inicializando a mesma de forma adequada. Com o propsito de simulao para o aprendizado, a tela principal do prottipo foi criada para ser intuitiva e de fcil utilizao, podendo ser dividida em 5 partes bsicas: menu de opes, estado atual, quntuplas, fita e prximo passo. O menu, situado na parte superior da tela, procura proporcionar facilidade no acesso s funcionalidades do prottipo. Na rea de estado atual, situada na parte superior esquerda da tela, possvel visualizar o estado atual da mquina. As quntuplas cadastradas so apresentadas na parte direita da tela, em forma de lista, permitindo que uma grande quantidade das mesmas seja exibida. A fita, situada na parte inferior da tela, possui um quadrado vermelho, com o texto em negrito no centro, simbolizando a cabea de leitura. J o smbolo de cor vermelha, que aparece ao lado da cabea de leitura ( esquerda ou direita, dependendo do caso), simboliza o ltimo smbolo alterado. Na funcionalidade de iniciar a prxima transio, existe o boto prximo passo, situado na parte inferior central da tela. Implementado na forma de depurador, o prottipo fica aguardando a instruo por parte de seu operador para que seja executado o prximo passo das transies da mquina, o que feito atravs de um boto. A interao do usurio com o prottipo feita atravs da solicitao para a realizao da prxima transio, o que pode ser considerado como a simulao do pulso discreto que faz com que a mquina funcione.
Figura 4. Tela principal do prottipo Tratando-se de uma aplicao que utiliza gerao de imagem para a criao da interface, foram utilizadas tcnicas de programao para jogos, como Double Buffer para melhoria de performance, alm do uso de bibliotecas grficas bsicas. 3.1. Controle da Fita Tendo como base a teoria de Mquina de Turing, que define a fita como ilimitada, e sempre preenchida o smbolo b esquerda e direita, adotou-se a opo de no armazenar os valores em branco. Desta forma, foi escolhida, como estrutura de dados responsvel pela representao da fita, uma lista ligada de objetos do tipo string, na qual sero elementos da mesma apenas os valores diferentes de branco. Assim, no existem limitaes para o tamanho da fita, sendo este limite definido apenas pela capacidade de armazenamento de informao na memria do computador utilizado na simulao. O algoritmo criado responsvel por remover os smbolos nas extremidades esquerda e direita da fita quando marcados como branco, e tambm criar novos smbolos na lista quando o b da extremidade for alterado para um outro smbolo do alfabeto vlido. No caso de alterao da informao escrita, quando no for branco, o smbolo presente alterado pelo novo smbolo informado na quntupla, sem que sejam realizadas outras operaes. Com o intuito de facilitar a interao com o usurio, o prottipo dispe de uma tela exclusiva para insero e deleo de novos elementos na fita, conforme exibe a prxima figura.
Figura 5. Tela de edio de fita 3.2. Quntuplas As quntuplas so modeladas no prottipo como uma classe na qual so informados os valores para cada um dos cinco atributos. Todos os valores so representados como strings, exceto o sentido do movimento, que ser representado pelo tipo char, sendo aceitos, no caso, apenas os caracteres D e E (direita e esquerda, respectivamente). Como forma de facilitar a escrita da quntupla na tela, foi sobrescrito o mtodo toString(), para que, ao ser chamado, o mesmo retornasse um texto no formato apresentado pelo quadro seguinte. (e, i, i, e, s) onde: e Estado atual i Smbolo lido i Smbolo a imprimir e Prximo estado s Sentido do movimento Quadro 1. Modelo de exibio das quntuplas pelo mtodo toString() Visando uma melhor performance durante a execuo do prottipo, e tambm na verificao para evitar ambigidades, o que faria a mquina parar, as quntuplas, so armazenadas na forma de tabela hash, implementada com a classe HashMap. Como chave, foi definido que seriam utilizados o estado atual e o smbolo lido, separados por vrgula. A tela de edio de quntuplas, da mesma forma que as demais, foi concebida como facilitadora para a interao entre usurio e aplicao, de forma que aquele possa incluir, alterar, consultar ou excluir os dados necessrios operacionalizao do modelo.
Figura 6. Tela de edio de quntuplas 3.3. Transies Para realizar as transies, a tabela hash pesquisada, com a finalidade de encontrar a quntupla que atenda ao estado atual e ao smbolo lido. Desta forma, retorna-se o objeto representando a quntupla que satisfaa a condio de estado atual x smbolo lido, sendo tal retorno armazenado para que seja utilizado na realizao da transio. De posse da quntupla necessria para realizar a transio conhecida, o prottipo realiza a modificao do elemento que est sendo apontado na fita. Neste movimento, o prottipo verifica qual ser o novo estado, realizando a alterao do estado atual de acordo com este dado. Terminados todos os passos, a aplicao verifica se o movimento da fita ser para a esquerda ou para a direita. Caso no exista uma quintupla que satisfaa a relao elemento lido x estado atual, o valor da quintupla a ser utilizada ser vazio, no sendo possvel realizar a transio, caracterizando o travamento da mquina (ocorrncia prevista no modelo original). Inicio quintupla := encontra_quintupla(estado_atual, simbolo_lido); fita.simbolo_atual := quintupla.smbolo_atual); estado_atual := quintupla.prximo_estado; SE quintupla.movimento = E ENTO move_fita_esquerda(); SENO move_fita_direita(); Fim; Quadro 2. Pseudocdigo da transio 3.4. Movimento da Fita O movimento da fita dado pelo ndice do smbolo da fita que est posicionado sob a cabea de leitura, chamado de itemAtual. Desta forma, quando realizado um movimento para a esquerda, o itemAtual decrementado em uma unidade, para que a cabea de leitura aponte para o smbolo a esquerda do atual, podendo receber valor negativo caso a cabea de leitura esteja posicionada sobre o branco na extremidade esquerda da fita. Caso o movimento seja realizado direita, o itemAtual ser incrementado em uma unidade, fazendo com que a cabea de leitura aponte para o smbolo direita do atual, podendo o valor do ndice ser igual quantidade de elementos da fita (considerando que o ndice iniciado em zero), quando a cabea de leitura estiver posicionada sobre o branco na extremidade direita da fita. 3.5. Gerao do grafo de estados Para gerao do grafo de estados, foi criado um algoritmo que, primeiramente, percorre todas as quntuplas cadastradas, armazenando todos os valores de estado atual e prximo estado que ainda no tenham sido cadastrados, dando um ndice a cada novo estado encontrado. Tendo todos os estados mapeados, uma matriz quadrada criada para armazenar as adjacncias, com o tamanho igual quantidade de estados encontrados. Aqui, o ndice das linhas e das colunas refere-se ao ndice dado ao estado na primeira etapa do processo. A varredura das quntuplas realizada novamente, sendo verificado o estado atual e o prximo estado das mesmas. Cada quintupla , ento, inserida na posio referente coordenada de linha referenciada pelo ndice do estado atual e coordenada de coluna referenciada pelo ndice do prximo estado. No processo de gerao da imagem, os estados so distribudos na tela de forma aleatria, sendo interligados com retas.
Figura 7. Grafo de estados gerado pelo prottipo Indicando o estado de destino, inserido um quadrado, que tem suas coordenadas centrais informadas atravs do pseudocdigo do prximo quadro. Utilizando o algoritmo proposto, necessrio verificar se o estado de destino est posicionado direita do estado de origem. Em caso positivo, deve-se realizar uma normalizao na equao para que o quadrado seja desenhado do lado oposto, pois o resultado do arco da tangente, neste caso, um valor que compreende a metade direita da esfera do estado, e no caso de o estado de destino estar a direita do estado de origem, o quadrado dever ser desenhado do lado esquerdo. Neste ltimo caso, necessrio adicionar 180 ao grau encontrado. Inicio m = (y_fim y_inicio) / (x_fim x_inicio); grau = ArcTan(m);
cosseno = Cosseno(grau); seno = Seno(grau); x = x_fim + (cosseno * 12); y = y_fim + (seno * 12); Fim; Quadro 3. Pseudocdigo para gerao do quadrado indicador de direo 4. DISCUSSO DOS RESULTADOS De forma a buscar subsdios para afirmar que o simulador aqui descrito pode representar um recurso adicional que auxilia de forma efetiva a estratgia pedaggica do professor, o mesmo foi submetido ao uso por parte dos alunos do sexto e oitavo semestres do curso de cincia da computao da Faculdade Politcnica de Jundia, de forma no- estruturada. Semelhantes testes se mostraram promissores, j que os alunos demonstraram entender o funcionamento da mquina e assimilar a teoria subjacente. Isto indica a possibilidade de implementar o uso do prottipo em situaes reais de ensino, no mbito de palestras, seminrios e aulas. O uso em laboratrio tambm foi bastante elogiado pelos discentes, uma vez que em semelhantes situaes, h a possibilidade de interagir diretamente com o sistema, simulando situaes encontradas em exerccios de disciplinas como Teoria da Computao. Alm disso, no laboratrio, a idia de simulao se completa atravs da interao com o dispositivo, o que pode ser feito de forma individual ou em grupo. No segundo caso, percebeu-se a possibilidade de promover um aprendizado em colaborao consistente, uma vez que os resultados obtidos com o uso do programa podem ser amplamente discutidos, criticados e expostos, na forma de dvidas ou comentrios, ao professor e aos demais colegas. Em um segundo momento, o prottipo foi testado atravs do uso por dez alunos de outra instituio, tambm estudantes de cincia da computao. Tais alunos foram selecionados aleatoriamente entre um grupo de estudantes que apresentava dificuldades na compreenso dos conceitos trabalhados na disciplina Teoria da Computao, componente do sexto semestre (o curso todo tem oito semestres). Aps utilizarem o sistema para estudo, questes equivalentes s relacionadas em provas nas quais os alunos em questo tinham encontrado dificuldades foram elaboradas pelo professor. Apuradas as respostas, constatou- se que: Nenhum aluno obteve resultado menor do que aquele conseguido na prova oficial; Trs alunos obtiveram resultados semelhantes aos obtidos na avaliao anterior; Trs alunos melhoraram o desempenho em relao aos conceitos obtidos na prova oficial, mas ainda permaneceram abaixo do conceito mnimo para aprovao (aumento mdio de 31% nos acertos); Quatro alunos ampliaram seus desempenhos pessoais, atingindo conceitos iguais ou superiores aos necessrios para aprovao (aumento mdio de 39% nos acertos). Ou seja, nos testes iniciais, as impresses e os dados recolhidos permitem afirmar que o prottipo pode auxiliar no ensino e na aprendizagem do conceito de mquina de Turing, j que a maioria dos usurios revelou progressos no entendimento do assunto em foco. 5. CONSIDERAES FINAIS A primeira considerao necessria a de que o prottipo deve passar por mais amplos testes, de modo a recolher impresses de um nmero maior de usurios. Os resultados iniciais foram promissores, permitindo supor que o refinamento do sistema, com a incluso de outros tpicos da mesma rea de conhecimento e de reas correlatas, tem amplas perspectivas de sucesso na composio de uma ferramenta de suporte ao trabalho docente. Este refinamento pode tocar tanto os algoritmos que determinam o funcionamento da mquina, quanto as interfaces que promovem a interao com alunos e professores. Alm disso, a eficincia do emprego do mesmo como instrumento auxiliar do processo de ensino-aprendizagem, apesar das indicaes mencionadas, pede, tambm, uma testagem mais intensa, talvez com um nmero maior de sujeitos e com metodologias experimentais. A experincia de construo de um simulador que tem por finalidade implementar o uso de um modelo cuja teoria no se furta complexidade deixou a impresso que o uso de dispositivos computacionais como parte da estratgia pedaggica nos cursos superiores um campo a ser explorado largamente. Inmeras possibilidades acenam para a confeco de outros tantos aplicativos que venham a lidar com teorias em relao s quais surgem inmeras dificuldades no mbito dos processos de ensino-aprendizagem. Os cursos de cincia da computao tm diversos assuntos que podem ser encarados desta forma, mas isso no muito diferente nas disciplinas referentes s engenharias ou matemtica, por exemplo, para as quais o conceito aqui implementado poderia ser expandido. O percurso para a criao de semelhantes modelos demonstrou, pelo menos no que diz respeito a esta investigao, constituir-se em um desafio, tamanho o nmero de descobertas e de novas necessidades que se interpunham entre a teoria em si e sua implementao no dispositivo. Estes impasses fizeram com que a teoria fosse constantemente revisitada, o que levava a um trabalho adicional de construo de cdigos em Java e de testes exaustivos dos mesmos, at que uma soluo satisfatria fosse encontrada. E isso tudo em relao a uma tese apresentada em 1936! Este fato no deixa de causar a impresso de que, dado o carter incontrolvel da expanso das possibilidades de conhecimento nos dias atuais, as simulaes computacionais possam vir a ter uma maior relevncia na busca por compreenso de fenmenos, teses e teoremas de relevo para a formao do estudante contemporneo. No , sobretudo, um trabalho simples, nem tampouco fcil. Mas a experincia gratificante, medida que se percebe que a teoria, tantas vezes incompreendida no mbito da sala de aula, pode surgir com novos contornos, apresentada de uma forma que venha a possibilitar outros meios para sua assimilao. 6. BIBLIOGRAFIA DIVRIO, Tiaraju A; MENEZES, Paulo B. Teoria da computao: mquinas universais e computabilidade. Porto Alegre: Sagra-Luzzato, 2000. FONSECA, Ijar. Mquinas de Estado Finito. Disponvel em: http://www2.dem.inpe.br/ijar/MaqFin1.doc Acesso em: 01 dez. 2005. GERSTING, Judith L. Fundamentos matemticos para cincia da computao. 4.ed. Rio de Janeiro: LTC, 2001. HORSTMANN, Cay; trad. FURMANKIEWICZ, Edson. Big Java. Bookman: Porto Alegre: 2004. Javadoc. Sun Microsystem. Disponvel em: <http://java.sun.com/j2se/javadoc/>. Acessado em: 11 set. 2006. MORIN, Edgar. Os sete saberes necessrios educao do futuro. 5.ed. So Paulo: Cortez; Braslia, DF : UNESCO, 2002. MORELLI, Ralph; WALDE, Ralph; Java, Java, Java: Object Oriented Problem Solving.3 ed. Estados Unidos: Prentice Hall. OLIVEIRA, Gerson Pastre. Teoria da Computao (mimeo). Jundia: FPJ, 2005. OLIVEIRA, Gerson P. Construo coletiva do conhecimento atravs de uma experincia de incentivo autonomia dos estudantes no aprendizado de matemtica discreta. Anais do VII Encontro Paulista de Educao Matemtica, p. 136-137, 2004. OLIVEIRA, Gerson P. O Uso de Sistemas Computacionais na Avaliao Formativa de Estudantes. Dissertao de Mestrado. Universidade So Francisco: Bragana Paulista, 2000.