Open-access Etnomatemática, Cognição e Programação: Recursos em Python para Educação Matemática

Ethnomathematics, Cognition and Programming: Python Resources for Mathematics Education

Resumo

Para atenuar a mesmice das práticas educacionais em matemática, e suprir uma demanda contemporânea, este estudo integra a programação de computadores e a Etnomatemática numa abordagem inovadora, apresentando-as como epistemologias amigáveis capazes de conectar conhecimentos matemáticos às realidades diversas, na Educação Básica e na formação de professores. Partindo do pensamento computacional e embasado em discussões sobre os currículos escolares vigentes e sobre cognição (biológica e artificial), estabelece como questão da pesquisa: como considerar o pensamento computacional e a programação na Educação (Matemática) a partir da Etnomatemática? Nesse sentido, o objetivo geral é demonstrar, a partir do Programa Etnomatemática, como o pensamento computacional e a programação podem ser considerados na Educação (Matemática). Com a programação conceituada como uma forma de Etnomatemática, metodologicamente, foram elaborados exemplos de recursos pedagógicos sobre aritmética, probabilidade, biologia, música e cognição. Os exemplos em Python priorizam a acessibilidade para iniciantes, promovendo o pensamento matemático e computacional de maneira integrada ao materializar diálogos transdisciplinares. Os resultados sugerem uma Educação mais crítica e reflexiva, pois trazem algumas situações sociais relevantes, flexíveis e adaptáveis, e levam a concluir que o estudo é contributivo ao uso consciente de conhecimentos matemáticos no exercício da cidadania.

Palavras-chave:
Etnomatemática; Pensamento Computacional; Programação Python; Recursos Pedagógicos; Transdisciplinaridade

Abstract

To mitigate the monotony of educational practices in mathematics and to meet a contemporary demand, this study integrates computer programming and Ethnomathematics in an innovative approach, presenting them as friendly epistemologies capable of connecting mathematical knowledge to diverse realities, both in Basic Education and in teacher training. Based on computational thinking and grounded in discussions about current school curricula and cognition (both biological and artificial), the research poses the following question: how can computational thinking and programming be considered in (Mathematics) Education from an Ethnomathematics perspective? In this regard, the general objective is to demonstrate, through the Ethnomathematics Program, how computational thinking and programming can be addressed in (Mathematics) Education. By conceptualizing programming as a form of Ethnomathematics, the study methodologically develops pedagogical resources involving arithmetic, probability, biology, music, and cognition. The examples, written in Python, prioritize accessibility for beginners, promoting integrated mathematical and computational thinking by materializing transdisciplinary dialogues. The results suggest a more critical and reflective form of education, as they bring forth relevant, flexible, and adaptable social situations, leading to the conclusion that this study contributes to the conscious use of mathematical knowledge in the exercise of citizenship.

Keywords:
Ethnomathematics; Computational Thinking; Python Programming; Pedagogical Resources; Transdisciplinarity

1 Introdução

Programação é uma Etnomatemática. Partindo desta concepção, trazemos ao debate teórico, a programação de computadores e o Programa Etnomatemática como epistemologias amigáveis e com potencial para orientar práxis educacionais com ênfase em conhecimentos matemáticos e enfoque multicultural. Argumentamos a favor da presença da programação na Educação baseados no Programa Etnomatemática e sua perspectiva de currículo como ação que utiliza instrumentos socioculturais, como as linguagens de programação, para refletir e se fazer refletir transdisciplinar e transculturalmente a/na realidade. Neste artigo, mostraremos possibilidades da programação no ensino-aprendizagem contextualizada em etnos variados.

Concebemos a programação e a Etnomatemática como epistemologias ad hoc, passíveis de mobilizar interesses e habilidades e de viabilizar finalidades aos conhecimentos matemáticos que emergem das realidades distintas, complexas e dinâmicas. “As práticas ad hoc para lidar com situações problemáticas surgidas da realidade são o resultado da ação de conhecer. Isto é, o conhecimento é deflagrado a partir da realidade. Conhecer é saber e fazer.” (D’Ambrosio, 2005a, p. 101).

As linguagens de programação, como Python, Javascript e C++, são meios de expressão que permitem controlar máquinas capazes de executar algoritmos na forma de programas (softwares). Atuam como interface homem-máquina e podem expressar qualquer proceder lógico computável – são instrumentos para lidar com computadores. Não quer dizer que são capazes de atingir todas as respostas, apenas as computáveis e num tempo finito, além de outras restrições práticas, como o problema e resposta caberem na memória do hardware.

O artigo fundamenta-se no Programa Etnomatemática, conforme D’Ambrosio, e em autores que investigam a relação entre computação e Educação. Nesse sentido, incomoda-nos a não introdução efetiva do pensamento computacional e da programação de computadores na Educação (Matemática) e na formação de professores. Diante disso, estabelecemos a seguinte questão de pesquisa: como considerar o pensamento computacional e a programação na Educação (Matemática) a partir da Etnomatemática?

Em decorrência, objetivamos demonstrar, a partir do Programa Etnomatemática, como o pensamento computacional e a programação podem ser considerados na Educação (Matemática). Especificamente: refletir sobre relações entre programação, Etnomatemática e cognição na Educação (Matemática); exemplificar recursos pedagógicos que integrem a programação e Etnomatemática com situações socioculturais enquanto fenômenos potencialmente matemáticos; e orientar para o uso crítico.

Apesar da vontade de introduzir a computação na matemática escolar, há carência de ações para tal. Neste artigo, buscamos preencher a lacuna integrando Etnomatemática e programação no currículo de forma transdisciplinar. Para tanto, metodologicamente, optamos pela linguagem Python por apresentar uma curva de aprendizagem suave, especialmente quanto à sintaxe simplificada em relação a outras, sendo adequada para iniciantes, professores e estudantes. Com ela, criamos exemplos que empregam funcionalidades básicas do Python para facilitar sua viabilidade na Educação Matemática. Outro fator que motivou a escolha do Python foi sua versatilidade: é empregada em diversos domínios, como engenharia e pesquisa, refletindo na adoção por infindáveis empresas, como Meta, Google e Uber.

O estudo inova materializando diálogos e ações interdisciplinares. Os resultados sugerem práticas mais exitosas na Educação Matemática e na utilização de conhecimentos matemáticos no exercício da cidadania. Nossa expectativa é promover a efetiva consideração da programação numa Educação (Matemática) etnomatematicamente orientada.

2 Etnomatemática, programação e Educação: motivações, justificativas e problemática

Etnomatemática, desenvolvida por D’Ambrosio, é um programa de pesquisa sobre geração, organização e difusão do conhecimento. Nomeia-se conceitualmente por relações entre técnicas e/ou artes (tica), entendimentos, explicações etc. (matema) e realidades (etno). A dimensão cognitiva da EtnoMatemaTica é bem discutida em D’Ambrosio (2013), e grifamos o caráter genérico desta teoria do conhecimento destacando os três termos que a conceituam. Como epistemologia geral, considera o conhecimento como vital, substrato do comportamento, que constitui a cultura. As culturas são dinâmicas e apoiam-se em processos também dinâmicos, dentre eles, os que reconhecemos como característicos do conhecimento matemático. O Programa Etnomatemática defende uma Educ(Ação) que viabilize criticamente acessos aos recursos culturais vigentes comunicativos (literacia), analíticos (materacia) e materiais (tecnoracia), isto é, que reflita e se reflita no contexto sociocultural contemporâneo à prática educacional. O fazer provoca questionamentos e explicações acerca da prática, promove conhecimentos que possibilitam outros fazeres, ações… A Etnomatemática contesta a Educação que dicotomiza teoria e prática, busca integrar diferentes formas de conhecer e fazer matemática, valorizando metodologias de ensino que prezem diálogos entre conhecimentos dos contextos socioculturais e da comunidade escolar.

Nesse contexto, a matemática escolar tem como etno privilegiado a academia e segue prescrições políticas para a Educação Básica em geral, em ritmo e universo próprios e alheios ao pulsar das manifestações socioculturais “latentes” da comunidade, a despeito dos esforços e empreendimentos da Educação Matemática. O sociocultural é considerado, obviamente, pois é incontestável a sua importância na formação integral para o exercício da cidadania, mas aspectos matemáticos do social e cultural da comunidade prestam-se, muitas vezes, como meros exemplos fictícios sinalizadores do quão úteis e importantes serão os conceitos matemáticos a serem aprofundados e cobrados para aprovação - ou não - dos estudantes.

Há 20 anos, D’Ambrosio (2005b) falava da mesmice em Educação Matemática, das propostas discutidas na transição dos séculos XIX-XX continuarem na transição para o XXI. Nesse sentido, trazer situações educacionais com linguagens de programação, com exemplos pensados para a prática pedagógica e formação de professores, pode ser uma forma de quebrar essa mesmice que perdura. D’Ambrosio (2005b) mencionava a meta de preparar as gerações futuras para um futuro desconhecido e o desafio da Educação de promover cidadania e criatividade, que não pode mais fugir da complexidade das tecnologias vigentes.

No Brasil, em 1975-76, as perspectivas iniciais da programação na Educação pareciam promissoras quando D’Ambrosio coordenou uma pesquisa interdisciplinar para introduzir programação em escolas de 2º Grau, originando as primeiras investigações sobre o tema no país (Sousa; Lacerda, 2019). No início deste século, D'Ambrosio (2013), cuja primeira edição é de 2001, associou a estagnação à ignorância sobre percepções de cognição:

A ignorância dos novos enfoques à cognição tem um reflexo perverso nas práticas pedagógicas, que se recusam, possivelmente em razão dessa ignorância, a aceitar tecnologia. Ainda há uma enorme resistência de educadores, em particular educadores matemáticos, à tecnologia. [...] Claramente, a introdução de calculadora e computadores não é meramente uma questão de metodologia. Em função da tecnologia disponível, surgem novos objetivos para a educação matemática. [...] E também novos conteúdos, importantes e atuais [em 2001 e em 2024], que nunca poderiam ser abordados sem a informática. (D’Ambrosio, 2013, p. 55).

Assim, a relação entre Etnomatemática e programação torna-se relevante à Educação (Matemática) ao aproximar concepções contemporâneas de cognição da prática pedagógica. Ademais, a Base Nacional Comum Curricular (BNCC) (Brasil, 2018) diz que o pensamento computacional é atualmente desejável no Ensino Fundamental para formulação e resolução de problemas, sendo considerado no Ensino Médio para construção de uma visão integrada da Matemática. Essas reflexões motivam e justificam nosso interesse pela problemática.

3 Pensamento computacional e escolarização básica

De acordo com a BNCC Computação (Brasil, 2022a), estabelecido pelo parecer CNE/CEB Nº 2/2022 (Brasil, 2022b), a computação deveria ser inserida na Educação Básica desde 2023. Realizando apenas a paridade competências/habilidades e ano, os documentos não indicam em quais disciplinas alocar as competências. A nosso ver, a computação pode ser introduzida pela Educação Matemática, mas não deve ater-se a esta, pois é transversal.

Normalmente, o ensino de programação se volta às estruturas de controle de seleção condicionais (if, else, elif) e de repetição (for, foreach, while, do while) o mais cedo possível, assuntos basilares na elaboração de algoritmos. No entanto, o subconjunto de expressões aritméticas é mais fácil, não ocupando sequer lugar explícito no currículo do Ensino Superior, pois a notação/sintaxe costuma ser extremamente semelhante à da Matemática acadêmica, bastando uma simples transposição de conceitos. A título de exemplo, temos o Programa 1, que ilustra algumas operações básicas na linguagem de programação Python.

Programa 1
– Exemplo de programa em Python.

A BNCC Computação explicita, para o 6º ano, a habilidade “(EF06CO02) Elaborar algoritmos que envolvam instruções sequenciais, de repetição e de seleção usando uma linguagem de programação.” (Brasil, 2022a, p. 38). Este ano pode ter sido escolhido porque o currículo tradicional de computação se inicia pelas estruturas de controle e seria inapropriado para anos anteriores, mas argumentamos que essas linguagens podem ser introduzidas pelo subconjunto de expressões aritméticas desde o 2º ano, ao abordar o objeto Instrução de máquina, quando, além de calculadora, sugerimos realizar aritmética simples com o Python. O uso pode ser continuado no 3º ano, no objeto Lógica computacional, ao associar valores de verdadeiro e falso a sentenças lógicas, como os exemplos dos programas 2 e 3 deste artigo.

No Ensino Médio, espera-se que os estudantes sejam capazes de “expressar e partilhar informações, ideias, sentimentos” e soluções computacionais utilizando diferentes plataformas, ferramentas, linguagens e tecnologias da Computação de forma fluente, criativa, “crítica, significativa, reflexiva e ética” (Brasil, 2022b, p. 25). Com isto, a BNCC implica a adoção de novas posturas educacionais docentes, as quais envolvem o estudo sobre a BNCC Computação e o desenvolvimento de estratégias de ensino pautadas no pensamento computacional.

O pensamento computacional não é exatamente a habilidade de programar, está mais relacionado ao desenvolvimento da criatividade e à produção do conhecimento e imbuído de saberes e fazeres privilegiados na matemática, como abstrair e modelar, desenvolver algoritmos, lidar com problemas, propor soluções etc. (Sassi; Maciel; Pereira, 2023), conhecimentos conceituados na Etnomatemática como matema. Mesmo não sendo o mesmo exatamente, programar com linguagens de programação é um dos principais instrumentos tecnológicos (tica) para se pensar computacionalmente (matema), mas não é o único. Existe o movimento da computação (des)plugada que estimula o pensamento sem ferramentas digitais (Menezes; Piccolo, 2023) e, para Brasil (2022a), deve iniciar na Educação Infantil.

Como normatizam a BNCC (Brasil, 2018) e BNCC Computacional (Brasil, 2022a), o ensino do pensamento computacional pode aprofundar a aprendizagem de matemática e ciências, e vice-versa, sendo sugerido o ensino-aprendizagem integrado desde a infância (Weintrop et al., 2016; Muhammad et al., 2023), e o papel crescente da computação nas ciências as modificou, tornando latente a discussão deste tipo de pensamento (Weintrop et al., 2016). Assim, estamos frente a uma situação de grande complexidade, pois, além de todas as reflexões acerca das cognições humana e artificial que efervescem cada vez mais nas mais diversas áreas, a exemplo da computação, matemática, Educação, filosofia, ressaltamos que, até então, não existe uma definição clara e única de pensamento computacional (Shute; Sun; Asbell-Clarke, 2017; Dahshan; Galanti, 2024), mas as definições geralmente envolvem a habilidade de resolver problemas e pensar algoritmicamente (Cansu; Cansu, 2019), sendo, portanto, uma forma de matema, o qual tem uma definição abrangente e inclusiva.

Entendemos, então, a programação de computadores como uma arte/técnica de codificação e processamento (tica) do pensamento computacional (matema) em realidades diversas (etno). É, conceitualmente, uma Etno+Matema+Tica, e é ad hoc pois se contextualiza na realidade sob demanda, necessidade e aprendizado do programador. É muito importante atentar para o etno dos estudantes, isso permitirá a elaboração de aulas mais relevantes a partir e para a vivência dos mesmos, sem esquecer da importância de se transcender o conhecimento específico por meio de generalizações, por exemplo. Nesse sentido é que mostraremos possibilidades educacionais da programação contextualizada em etnos variados.

4 Diálogos sobre cognição humana e artificial

Buscando outras teorias que possam alinhar-se ao discutido neste artigo, trazemos à reflexão uma possível integração entre ideias da teoria da cognição corporificada, conforme diálogos de Sousa (2015), e a teoria da cognição distribuída (Rogers; Ellis, 1994) que diz que indivíduos e artefatos se relacionam realizando computações (cognições) num meio que pode ser externo (computador, papel etc.), mas trazendo novas ideias sobre a programação especificamente. Com base nesses autores, consideramos a máquina (computador) como uma estrutura informacional externa mediada pelos dispositivos periféricos de entrada (teclado e mouse) e saída (tela e alto-falantes). O teclado, principal dispositivo de entrada ao programar, é manipulado principalmente de modo automático, sem pensar conscientemente, pelo mecanismo da memória muscular. Assim, o computador seria uma ferramenta cognitiva que estende os sistemas modais de alta função cerebral, responsáveis pelo pensamento e linguagem: um cérebro externo para o qual delegamos parte da cognição com interações mediadas por entre dispositivos periféricos e sistema sensório-motor. Ao programar, se realiza uma simulação mental sobre o que será delegado para computação externa (simulação do processamento a ser executado pela máquina), criando uma expectativa sobre o resultado computado que não é exata, pois o cérebro humano e o computador são diferentes.

A interface teclado-mouse-tela se tornou padrão e ubíqua, facilitando a interação pela padronização e acostumação, mas diminuindo a vastidão de experiências corpóreas possíveis do sistema sensório-motor, tornando-as mais homogêneas. O computador pode ser entendido como extensão do corpo, mas não é o corpo em si. Assim, o uso de computadores pode facilitar o ensino-aprendizagem devido à familiaridade com os dispositivos, mas calculadoras, por apresentarem uma interface diferente, e linguagens de montagem de blocos (como Scratch e Blocky), por empregarem interfaces que são metáforas de estruturas físicas, apesar de situadas no digital, talvez enriqueçam a experiência corpórea. Sobre diversificação da experiência sensório-motora, desconhecemos modos atuais de programar que utilizem além das interfaces-padrão, como realidade aumentada e outras.

Refletimos acerca da cognição que, além de entender o computador como ferramenta cognitiva, tem o mesmo como metáfora para cognição humana, o que é curioso, visto que computadores reciprocamente apresentam metáforas para cognição biológica: as redes neurais artificiais (ChatGPT e Gemini são exemplos de aplicações). Muitas metáforas existem e são possíveis, como o perceptron, que faz analogia a neurônios e, desde a década de 1940, aprende ajustando os pesos sinápticos no sentido de diminuir o erro (Du et al., 2022). Com o avanço das redes neurais, o ajuste de pesos se sofisticou, aplicando uma taxa (velocidade) de aprendizagem adaptativa que ajusta os pesos diante do erro, acelerando ou diminuindo se está aparentemente indo na direção correta (Almeida, 2020). Da mesma forma, humanos tendem a dar passos mais largos quando estão avançando e confiantes que estão na direção correta.

Entre as muitas metáforas possíveis, iremos dialogar a cognição humana e artificial com as redes de Hopfield (Folli; Leonetti; Ruocco, 2017), tema celebrado no Prêmio Nobel de Física de 2024 e que vamos abordar no Programa 9. Essas redes têm uma memória associativa: a capacidade de associar informações novas a memórias prévias. Apresentam uma metáfora matemática computacional do modelo de aprendizagem de Hebb, que está relacionado à potenciação e depressão de longo prazo, e diz que neurônios que se ativam repetida e conjuntamente fortalecem suas ligações sinápticas devido à neuroplasticidade. Curiosamente, embora reconhecesse a relevância dessas ideias, Hebb (1949, p. xi) evitava recorrer a métodos matemáticos na psicologia: “Com esses métodos, em geral, eu não tento lidar”.

Programa 9
– Aprendizado de Hebb não paralelizado.

Na etapa de aprendizagem/treinamento, as redes de Hopfield aplicam conhecimentos (padrões de entrada, informações da realidade) sobre uma série de neurônios interconectados a fim de verificar o peso da ativação conjunta -- pesos maiores indicam sinapses mais fortes. Estes modelos sugerem que o fortalecimento de sinapses (aprendizagem) ocorre ao ensinar diferentes competências integradas, com repetidos acionamentos sinápticos entre si, e é benéfica às redes. A nosso ver, isso fortalece a defesa da transdisciplinaridade e é uma base já bem conhecida à criatividade, pois com redes neurais biológicas mais estabelecidas, pode-se alcançar novas conexões sinápticas, por exemplo, facilitando resolver novos problemas.

Já na etapa de aplicação/recuperação, redes de Hopfield pulsam discretamente o tempo, etapa a etapa, convergindo novos padrões, antes desconhecidos, a um dos previamente aprendidos, permitindo redes neurais associarem novos conhecimentos (realidades), mesmo que incompletos ou diferentes, aos prévios (memórias), por exemplo, facilitando se adaptar e inovar com base na experiência, como aplicar soluções aprendidas a novos problemas.

Uma das limitações das redes de Hopfield é que um novo padrão é sempre associado a um prévio, independentemente da qualidade do relacionamento entre eles. Além disso, apresentam uma capacidade de recuperação de 10-20% da quantidade de neurônios, a partir da qual a memória associativa rapidamente se degrada. Esse tipo de saturação ou sobrecarga de informação pode haver paralelos na cognição humana e apresentar relevância na Educação. Outra limitação das redes de Hopfield é o crosstalk, isto é, a comunicação cruzada (sobreposição, similaridade, correlação) entre os padrões aprendidos, que leva a associação única ser ambígua ou imprecisa, o que não necessariamente ocorre na cognição humana, que, aparentemente, pode associar livremente múltiplos padrões.

5 Exemplos de recursos pedagógicos em Python

Considerando que a programação deve ser introduzida a partir dos Anos Iniciais do Ensino Fundamental e no contexto da Educação Matemática, esforçamo-nos para mostrar que é viável, respaldados, principalmente, na Educação Matemática e na Etnomatemática. Elaboramos exemplos versáteis em Python que partem de contextos específicos e focam o ensino-aprendizagem de Matemática de forma transdisciplinar, os quais priorizam a acessibilidade para iniciantes. Portanto, optamos por deixar o professor livre e os recursos flexíveis para adaptação dos mesmos às próprias realidades.

A decisão metodológica de elaborar qualitativamente recursos pedagógicos está amparada na escassez de trabalhos que trazem códigos funcionais e exemplares, especialmente em linguagens de propósito geral, como o Python, particularmente nos anos iniciais. Por exemplo, Souza (2016) ilustrou sua dissertação com exemplos de códigos produzidos em oficinas com alunos do 7º ano. Ele observou um alto grau de interatividade com a máquina enquanto os alunos cooperavam entre si, além de naturalização do erro durante o processo de aprendizagem, tendo feedback imediato dado pela máquina. A linguagem escolhida por Souza foi o Processing, que apesar de não ser generalista, é muito utilizada com propósitos educativos e artísticos, especialmente gráficos, como foram os programas baseados em retângulos, arcos, elipses etc. desenvolvidos nas oficinas.

Em língua portuguesa, a maioria dos artigos sobre programação e Educação Matemática na escola se restringe ao ensino médio e, na maioria das vezes, sequer apresenta recursos pedagógicos para a materialidade do desejo de inserção da programação na Educação Matemática no ensino básico.

No estudo e elaboração desses exemplos, refletimos acerca de pontos que podem favorecer o planejamento de um educador (matemático) para inseri-los em aulas, projetos, atividades de coordenação, formação de educadores. Por conta disso, deixamos de fora programas que envolvessem um exercício maior do pensamento algorítmico, que é nuance do pensamento computacional, ou outras competências mais específicas da computação.

Para discorrer sobre os aspectos práticos para a aplicação dos recursos, supomos que a questão que nos motivou à pesquisa é a mesma que motiva o leitor a chegar até aqui, especialmente o educador (matemático) que exerce a profissão de professor numa escola da Educação Básica, tendo em vista o contexto político-pedagógico brasileiro vigente e o trabalho do dia a dia escolar: como considerar o pensamento computacional e a programação de computadores [em Python] na Educação (Matemática) a partir da Etnomatemática? Longe de ser uma receita, pontuamos três aspectos político-pedagógicos que intencionam provocar reflexões para planejamento e ações com Python na prática escolar.

1º aspecto) Como inserir a programação no currículo escolar?

A habilidade “EM13MAT405” (Brasil, 2018) fala do uso de conceitos iniciais de programação no Ensino Médio e representa menos de 0,1% das habilidades prescritas, não deixando tempo e espaço livres na escolarização. A carência impulsiona a produção de um complemento (Brasil, 2022a), também normativo, que não orienta o trabalho pedagógico para o desenvolvimento das habilidades e competências supostamente complementares.

A nosso ver, a brecha estaria numa proposta de projeto que parta do educador matemático e que seja abraçada por outros educadores e pela gestão e coordenação escolares, podendo ser desenvolvida intra ou interdisciplinarmente, na parte diversificada e itinerários formativos (Brasil, 2018) dos Ensinos Fundamental e Médio. Assim, o projeto pode orientar-se etnomatematicamente ao reconhecer situações-problema que emergem da realidade da comunidade escolar, e o trabalho poderá desenvolver-se transdisciplinarmente.

2º aspecto) O que é necessário para usar o Python?

Para programar em Python, deve-se instalar o Python e um editor de código, além dos pacotes requeridos. Pacotes ou bibliotecas são programas externos dos quais um código Python depende. Para os exemplos deste artigo, serão necessários os pacotes numpy, matplotlib e sounddevice. Há vários editores de código Python, e um destinado a iniciantes é o Thonny. As etapas a seguir descrevem o passo-a-passo para ter um ambiente gratuito de desenvolvimento Python em Windows: 1) Instale o Python <https://www.python.org/> habilitando as opções "Add Python 3.x to PATH" e "Install pip"; 2) Instale o Thonny <https://thonny.org/>; 3) Com o Thonny aberto, no menu “Ferramentas”, submenu “Gerenciar pacotes…”, pesquise e instale/atualize os pacotes requisitados. É recomendado ter as versões do Python, editor e pacotes atualizadas todos os anos. As instruções podem variar.

Para programas breves, como o 1, 2 e 3 presentes neste artigo, utilize o interpretador shell (parte de baixo do Thonny) e interaja com o Python executando comando a comando (digite e dê enter) para ver os resultados imediatamente, como na Figura 1.

Figura 1
– Execução de programas no shell do Thonny.

Caso seja necessário editar programas mais longos, como o 4, 5, 6, 7, 8 e 9, utilize o editor de código (parte de cima do Thonny). Para executar um programa, clique no botão “Executar programa atual (F5)”, é possível que seja necessário salvar o arquivo antes. Para depurar (executar pausadamente, “debugar”, debug) um programa, dê duplo clique sobre o número da linha a qual deseja pausar a execução (breakpoint), aperte em “Depurar programa atual (Ctrl+F5)”, então examine os botões “Pular (F6)”, “Entrar (F7)”, “Sair” e “Continuar (F8)”. No shell ou depuração, as variáveis podem ser inspecionadas pelo menu “Visualização”, submenu “Variáveis”. Na execução e depuração, resultados não são imediatos, para exibi-los, chame a função print, como nos programas 4 e 9.

Adicionalmente, a respeito da instalação do Python, é possível conferir o caderno pedagógico de Pesente e Matos (2019) que apresenta orientações aos professores sobre a introdução e instalação do Python. Cabe destacar que os autores apresentam exemplos para o ensino de matemática, que foram elaborados a partir da pesquisa de mestrado de Pesente (2019), os quais preveem a colaboração entre os professores de programação e de matemática, para facilitar a compreensão. Este caderno pedagógico propõe introduzir a programação a partir de conteúdos de lógica de programação mais avançados e destinados ao 6º ano, do mesmo modo que a BNCC Computação (Brasil, 2022a), diferentemente da nossa proposta de introdução já nos anos iniciais utilizando Python e aritmética.

3º aspecto) Como trabalhar a programação em aulas práticas?

Durante atividades práticas, uma abordagem possível é a “programação em par”, na qual um estudante faz o papel de “piloto” e comanda o computador à frente do teclado e mouse, e o outro, o papel de “copiloto” observando e instruindo diretamente o piloto, trocando-se os papéis periodicamente. Outra abordagem possível, que é baseada na programação em par, é o coding dojo, que se inicia discutindo o problema a ser atacado, então um piloto e um copiloto vão para o computador que está sendo projetado, e todos os demais da turma podem conversar e interagir (inclusive com o piloto e copiloto), trocando-se os papéis periodicamente entre cinco e dez minutos, com o copiloto assumindo o papel de piloto e alguém da plateia assumindo o de copiloto. Estas abordagens colaborativas são validadas no Ensino Superior, melhorando a aprendizagem com maior satisfação dos participantes, melhor qualidade dos códigos produzidos e menos abstenções (Mcdowell et al., 2003; Estacio et al., 2015; Rocha; Sabino; Rodriguez, 2018). Outra vantagem da programação em par e coding dojo é que são necessários menos computadores para a prática laboratorial, com o dojo requerendo apenas um computador.

É possível desenvolver os programas a partir de um arquivo em branco, mas pode o código, parcial ou completamente, ser disponibilizado aos estudantes para investigação por modificações exploratórias e execuções sucessivas. Um fenômeno na programação é que o código não precisa ser compreendido totalmente para se introduzir modificações, permitindo aos estudantes focarem aspectos que julguem mais relevantes para si. Com alterações simples, pode-se modificar valores de variáveis, cálculo de fórmulas, adicionar curvas a gráficos etc.

5.1 Divisão em turma

O raciocínio da divisão difere do algoritmo que o realiza, e saber dividir e suas implicações não é o mesmo que saber e conseguir executar o algoritmo corretamente, e vice-versa. Apesar da importância de se aprender a executar como meio de estimulação do pensamento, com as calculadoras modernas, pouco se divide com o algoritmo ensinado na escola. Igualmente, o Python pode ser usado na simplificação da execução de procedimentos, com a vantagem sobre calculadoras do atrelamento semântico dos termos às variáveis.

No Programa 2, trazemos um exemplo com etno da própria realidade escolar, em que 597 representa o total de alunos numa escola que possui 20 turmas. A ideia é que o professor, diante da realidade escolar, e nela baseado, proponha problemas adaptados aos códigos deste e dos demais programas. Os alunos poderiam participar de todo o processo, desde a seleção do problema real, adaptação ao código e sua resolução. O professor pode projetar a tela do computador de modo que os alunos interajam com os programas, assumindo a programação com a turma.

Programa 2
– Aritmética em Python.

Os valores podem ser alterados, produzindo novos resultados com esforço mínimo. O Programa 3 pode aguçar a criticidade ao abordar aspectos sociais da realidade. Nele, verificamos as sentenças lógicas, a seguir, que resultam em verdadeiro ou falso.

Programa 3
– Teste de (in)equações. Continuação do Programa 2.

Além das sentenças lógicas, abordamos outras características introdutórias do Python, como definição de variáveis e operadores booleanos (and, or). Linhas com um único símbolo de igual (=) não são equações/sentenças, são definições de variáveis. Trechos iniciados com cerquilha (#, em verde) são anotações/comentários opcionais e não executáveis. Quando se faz múltiplas operações, parênteses podem ser usados para dar precedência. Outros operadores aritméticos incluem divisão inteira (//), módulo/resto da divisão (%), exponenciação/potência (**).

Um erro comum é digitar um nome de variável errado, pois o erro/exceção da Figura 2 apareceria. Também ocorre quando se tenta usar a variável antes de definir/declarar.

Figura 2
– Erro/exceção indicando que a variável turma não está definida. O correto seria turmas.

Propostas Investigativas: o que acontece se variar o número de alunos? E o de turmas? A quantidade média de alunos por turma é uma boa métrica? Um professor pode atender 50 turmas? Como relacionar isto com a carga horária do professor? Combinar os programas 1, 2 e 3, fazer testes sem variáveis, usar outros operadores aritméticos etc.

5.2 Simulação de acidentes de carro

O Programa 4, inspirado no fenômeno social do trânsito no etno urbano, estima a probabilidade de ocorrer um acidente de carro com alguém. A Simulação de Monte Carlo, técnica que estuda o comportamento de fenômenos incertos, será aplicada neste exemplo. Para dar algum realismo, a chance diária foi atribuída para os eventos terem moda zero.

Programa 4
– Simulação de eventos probabilísticos.

Para os programas adiante, o editor de código é preferível ao shell.

Na primeira linha, importamos os recursos do pacote random que introduz a função random, que resulta em um número aleatório entre 0 e 1. random, quando chamada na linha 6, o número será testado ser menor que 0,0000137. A partir da linha 2, são definidos valores de variáveis, com n_eventos iniciando em 0; este valor será acrescido (redefinido) na linha 7 dependendo do teste anterior resultar em 1/verdadeiro ou 0/falso. A estrutura for se repetirá quantas vezes a faixa de n_dias estiver definida, o que se repetirá serão as instruções nas 2 linhas que a seguem e estão recuadas (indentadas) com espaços, portanto o teste da probabilidade de random e acréscimo de n_eventos serão executados 365*80 vezes. Dentro do for, no recuo, é possível usar apenas espaços ou apenas tabulações (“tabs”), desde que sejam consistentes e de mesma quantidade de caracteres.

Com essa proposta, esperamos que os alunos desenvolvam habilidades relacionadas ao entendimento de distribuição normal (especialmente truncada no 0), que percebam a relação entre calcular o número de eventos pela chance diária ou pela multiplicação da chance com o intervalo de tempo. Deve ser observado que o número de eventos ocorridos pela chance diária é um número inteiro e não uma probabilidade real, sendo necessário a aferição do mesmo várias vezes para noção estatística. Também esperamos que, ao fazer uso das tecnologias da Computação (tica) , possam refletir acerca de uma situação social (etno) comum que envolve a habilidade de dirigir (matema), mobilizadora de interesses de muitos jovens.

Propostas Investigativas: um indivíduo dirige por todos seus prováveis 80 anos? E se multiplicar a chance por um fator de embriaguez? Para estimar para todos os motoristas de um bairro, quantos habitantes tem o bairro? É possível estimar outros tipos de eventos? E simultaneamente? Esse método estocástico varia entre alunos? A distribuição é normal?

5.3 Reprodução e morte celular

Neste exemplo do Programa 5, trazemos um modelo biológico de reprodução e morte celular, assunto do cotidiano. Apesar da aparência complexa, é bastante simples.

Programa 5
– Análise do comportamento de funções.

Começamos definindo a população inicial, taxa de divisão/multiplicação e apoptose e faixa (vetor/array) de horas. Posteriormente, os resultados são plotados em função das horas, mas o cerne do exemplo está a seguir, no cálculo da evolução populacional ao longo do tempo. Finalmente, os resultados são exibidos com a função show, conforme a Figura 3.

Figura 3
– Resultado gráfico do Programa 5

Pode ser vantajoso copiar o código completo no editor e apenas modificá-lo, somente linhas referentes às fórmulas precisam ser editadas. Uma versatilidade é que novos cálculos podem ser feitos e exibidos com as funções plot e show, permitindo explorar o comportamento de outras funções. É importante que algum dos termos da função em questão esteja definido a partir de um vetor/array, no caso, temos a variável independente horas definida como uma faixa de 0 até 24.

Propostas investigativas: qual o impacto da variação da população inicial de uma colônia de bactérias a curto prazo? E a longo prazo? O câncer, que é o desregulamento da divisão e/ou apoptose, se comporta de que modo? Representar a evolução populacional como uma série finita (população_inicial*taxa_crescimento*taxa_crescimento…) ajuda a compreender a função? Como as funções lineares e exponenciais evoluem?

5.4 Funk e teoria musical

Neste recurso, reproduzimos um trecho da música “Baile de Favela” de MC João. A música é muito popular, chegando ao pódio das Olimpíadas no solo de ginástica artística com Rebeca Andrade. Originalmente com letras obscenas, foi considerada polêmica, mas foi adaptada em diversas versões por diversos artistas, demonstrando a versatilidade da melodia e do funk ao retratar o Brasil através de citações de localidades majoritariamente periféricas.

Para a familiaridade com o conceito de reprodução de áudio, no Programa 6, serão tocadas, com a função play, as notas Lá (A4) por 0,5 segundo e Dó (C4) por 1,0 segundo. Em seguida, será aguardada a reprodução de cada nota com a função wait. A variável tempo é um vetor/array que amostra de 0 a n segundos em intervalos de 1/48000, mesma taxa de amostragem de um DVD.

Programa 6
– Reprodução de áudio a partir das frequências e durações.

Depois, no Programa 7, a partir das notas do funk disponíveis na internet e uma tabela de relação nota/frequência (por exemplo, https://muted.io/note-frequencies/), uma parte da melodia é modelada. A variável melodia é uma lista de 2-tuplas que carrega as notas e suas durações especificadas a partir de frações de uma unidade de tempo base.

Programa 7
– Modelagem de melodia. Continuação do Programa 6.

Mas, no Programa 8, os valores das frequências são calculados a partir da relação intrínseca entre as notas, conhecida como “temperamento igual” na teoria musical. A partir da frequência de uma nota, para obter-se a frequência da seguinte (incluindo os acidentes musicais sustenido/bemol), multiplica-se a anterior por 212, um número irracional.

Programa 8
– Relação teórica entre notas a partir de 212. Continuação do Programa 7.

Propostas investigativas: como modelar o restante do funk estendendo a variável melodia? Sabendo que uma pausa musical é silenciosa, como modelar pausas entre as notas? Um acorde é a soma de múltiplas notas, é possível definir onda como a soma de duas ondas senoidais? O timbre é uma das características que diferenciam um instrumento do outro, uma forma limitada de modelá-lo é somando múltiplas ondas de mesma frequência, mas amplitudes diferentes, como: onda=10*onda+5*onda+2.5*onda. Mesclando os programas deste exemplo com o Programa 5, de visualização de funções, substituindo a reprodução de áudio pela plotagem das funções, é possível investigar, por exemplo, porque o termo 2*pi é necessário para formar uma frequência específica em Hertz?

5.5 Aprendizagem de Hebb

Na Equação 1 e Programa 9, temos algumas formas de calcular a aprendizagem de Hebb, discutida anteriormente, que complementa a fundamentação teórica sobre cognição. Pode ser entendida como a média da ativação conjunta de neurônios dos padrões (conhecimentos, memórias). A força sináptica é a média da multiplicação dos neurônios.

Equação 1 – Aprendizado de Hebb sem viés.

w i , j = 1 P p P n i n j W = 1 P P T P

P é uma matriz 3x4 que contém 3 padrões p de 4 neurônios. Os padrões apresentam valores binários de ativação excitatórios (+1) ou inibitórios (-1) e a notação ||P|| = 3 corresponde à quantidade de padrões em P. Na primeira formulação, a cada p ∈ P

, será somada a multiplicação entre cada par de neurônios ni e nj de p ao peso sináptico wi,j . Isto resulta na força da associação sináptica, ou seja, na interação média dos 4X4 neurônios entre si e, por isto, divide-se pela quantidade de memórias ||P||. Na segunda formulação, obtém-se o mesmo resultado, porém com operações matriciais de álgebra linear. Nesta fórmula, em que PTP é o produto escalar (função dot) entre a transposta de P e P, fica implícito o somatório que encapsula a interação entre neurônios. Cada peso wi,j é igual a um elemento da matriz W (atenção para letras maiúsculas e minúsculas!). A implementação em Python no Programa 9, a seguir, está de acordo com a fórmula matricial.

Como resultado deste exemplo artificial, temos as forças sinápticas após a rede armazenar as memórias. As interações wi,j=wj,i são as mesmas porque são entre os mesmos neurônios, portanto a matriz é simétrica. Percebe-se que exemplos artificiais podem estar conectados com a realidade e ilustra-se um caso que ultrapassa a capacidade de armazenamento, pois a quantidade de memórias ||P|| = 3 é maior que 10-20% de neurônios. Nota-se que há diferenças entre as implementações do modelo por somatório, álgebra linear e Python, havendo desafios a serem enfrentados na adaptação dos conhecimentos.

Propostas investigativas: como codificar informações reais em valores binários (+1, -1)? Por que o peso sináptico é uma média? Desconsiderando outros fatores, haveria realmente diferença se não dividisse por 3 memórias? Se for planejado modelar 3 memórias e o modelo só é capaz de reter aproximadamente 15% em relação à quantidade de neurônios, quantos neurônios seriam necessários? Se um selo com 200 músicas quiser reconhecer versões novas para fins de licenciamento, ele precisará de 200 padrões armazenados; assumindo didaticamente que todas as músicas do mundo têm 5 Mb (5*8*1024*1024 bits), quantos neurônios seriam necessários em cada padrão?

6 Considerações finais

Mostramos que programar pode ser entendido como uma Etnomatemática e integramos teorias epistemológicas sobre as cognições natural e artificial, sob o olhar da matemática e computação, com foco na Educação. Frente à polissemia do pensamento computacional, o conceituamos como um matema, dada a abrangência deste. Também desenvolvemos recursos pedagógicos viáveis para diminuir a distância entre teoria e prática. Notadamente, propomos antecipar o ensino de linguagens de programação para os anos iniciais pelos conteúdos de aritmética, em adição à calculadora; no mesmo sentido, trouxemos reflexões dialógicas entre a cognição biológica e artificial.

Apesar de serem instrumentos (tica), destacamos que linguagens de programação são manifestações culturais, estando obviamente situadas na cultura. De fato, o poema The Zen of Python (Peters, 2004), que é embutido na linguagem e influencia seu desenvolvimento, menciona que o modo de fazer no Python deve ser óbvio, “embora esse modo possa não ser óbvio a princípio, a menos que você seja holandês”, ressaltando a origem do seu criador.

O Python demanda muito a língua inglesa, criando necessidades interdisciplinares. E nem sempre é óbvio o significado do nome da função: arange significa “a range/uma faixa”, print significa imprimir/exibir na tela. Para descobrir além, é necessário ler a documentação que, normalmente, também está em inglês. Outros desafios aos iniciantes em Python são: os resultados das operações sobre números decimais serem frequentemente aproximados devido à representação de ponto flutuante usada na codificação; o obstáculo da sintaxe, pois enquanto no caderno há a admissão de ligeiros erros sintáticos, como grafia, omissão de parênteses etc., na programação, causam a não produção de resultados.

Python apresenta uma sintaxe relativamente simples, mas Scratch e Blocky podem ser alternativas de linguagens ao ensino de programação, devido à abordagem de montagem de blocos que elimina erros sintáticos. Para facilitar a curva de aprendizagem, exemplos que focam a aritmética (como os programas 1, 2 e 3) podem ser introduzidos nos anos iniciais, aproveitando-se da familiaridade da sintaxe do Python e operadores aritméticos convencionais na matemática.

Para investigações futuras, propomos o uso de métodos experimentais (estudos de caso, aplicação de métricas e notas, grupos de teste e controle etc.), carentes na Etnomatemática, para a avaliação da inclusão da programação na aprendizagem matemática; a nível teórico, a discussão sobre os diferentes jogos de linguagem que podem ser mobilizados no ensino da matemática escolar, considerando os diferentes contextos que emergem em sala de aula e os que são próprios da programação.

Esperamos que os educadores (matemáticos), ávidos por um pontapé inicial na comunidade escolar e por aprofundar estudos e pesquisas que abranjam fenômenos da era da informação e suas implicações pedagógicas, experimentem os recursos propostos e consigam inserir a programação em suas práticas pedagógicas de maneira exitosa, evitando essa mesmice que perdura há séculos. Igualmente, que interesse aos formadores de educadores.

Este artigo foi escrito sob revisão constante do Gemini e do ChatGPT que, em algum momento, disseram respectivamente que “a ideia é usar a programação para ensinar matemática de uma forma mais engajadora, conectada à realidade dos alunos e que valorize a diversidade cultural” e que “Etnomatemática e programação se entrelaçam ao reconectar cognição, cultura e tecnologia, promovendo uma Educação crítica que transcenda a dicotomia teoria-prática e se ajusta às complexidades contemporâneas".

Referências

  • ALMEIDA, L. B. Multilayer Perceptrons. FIESLER, E.; BEALE, R. (eds.). Handbook of Neural Computation. Boca Raton: CRC Press, 2020. p. C1.2: 1-C1. 2: 30.
  • BRASIL. Base Nacional Comum Curricular. Brasília: MEC, 2018.
  • BRASIL. BNCC Computação - Complemento. Brasília: Ministério da Educação. Conselho Nacional de Educação, 2022a. Disponível em: https://bit.ly/42ihWJy Acesso em: 02 nov. 2024.
    » https://bit.ly/42ihWJy
  • BRASIL. Parecer CNE/CEB nº 2, aprovado em 17 de fevereiro de 2022 - Normas sobre Computação na Educação Básica - Complemento à Base Nacional Comum Curricular (BNCC). Brasília: Conselho Nacional de Educação. Câmara de Educação Básica, 2022b. Disponível em: https://bit.ly/3qh5WKI Acesso em: 02 nov. 2024.
    » https://bit.ly/3qh5WKI
  • CANSU, F. K.; CANSU, S. K. An Overview of Computational Thinking. International Journal of Computer Science Education in Schools, London, v. 3, n. 1, p. 17-30, 2019. Disponível em: https://doi.org/10.21585/ijcses.v3i1.53 Acesso em: 14 dez. 2024.
    » https://doi.org/10.21585/ijcses.v3i1.53
  • DAHSHAN, M.; GALANTI, T. Teachers in the Loop: Integrating Computational Thinking and Mathematics to Build Early Place Value Understanding. Education Sciences, Basel, v. 14, n. 2, p. 201, 2024. Disponível em: https://doi.org/10.3390/educsci14020201 Acesso em: 14 dez. 2024.
    » https://doi.org/10.3390/educsci14020201
  • D'AMBROSIO, U. Sociedade, cultura, matemática e seu ensino. Educação e Pesquisa, São Paulo, v. 31, n. 1, p. 99-120, jan./abr. 2005a. Disponível em: https://www.scielo.br/j/ep/a/TgJbqssD83ytTNyxnPGBTcw/?format=pdf⟨=pt Acesso em: 28 out.2024.
    » https://www.scielo.br/j/ep/a/TgJbqssD83ytTNyxnPGBTcw/?format=pdf⟨=pt
  • D’AMBROSIO, U. Armadilha da Mesmice em Educação Matemática. Bolema, Rio Claro, v. 18, n. 24, p. 1-15, set. 2005b. Disponível em: https://www.periodicos.rc.biblioteca.unesp.br/index.php/bolema/article/view/10500 Acesso em: 28 out.2024.
    » https://www.periodicos.rc.biblioteca.unesp.br/index.php/bolema/article/view/10500
  • D'AMBROSIO, U. Etnomatemática: elo entre as tradições e a modernidade. 5. ed. Belo Horizonte: Autêntica, 2013.
  • DU, K.-L.; LEUNG, C.-S.; MOW, W. H.; SWAMY, M. N. S. Perceptron: Learning, Generalization, Model Selection, Fault Tolerance, and Role in the Deep Learning Era. Mathematics, Switzerland, v. 10, n. 24, p. 4730, 2022. Disponível em: https://doi.org/10.3390/math10244730 Acesso em: 14 dez. 2024.
    » https://doi.org/10.3390/math10244730
  • ESTACIO, B.; VALENTIM, N.; RIVERO, L.; CONTE, T.; PRIKLADNICKI, R. Evaluating the Use of Pair Programming and Coding Dojo in Teaching Mockups Development: An Empirical Study. In: HAWAII INTERNATIONAL CONFERENCE ON SYSTEM SCIENCES, 48., 2015, Kauai. Proceedings… Hawaii: IEEE, 2015. p. 5084-5093. Disponível em: https://doi.org/10.1109/HICSS.2015.602 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1109/HICSS.2015.602
  • FOLLI, V.; LEONETTI, M.; RUOCCO, G. On the Maximum Storage Capacity of the Hopfield Model. Frontiers in Computational Neuroscience, Lausanne, v. 10, p. 1-8, jan. 2017. Disponível em: https://doi.org/10.3389/fncom.2016.00144 Acesso em: 14 dez. 2024.
    » https://doi.org/10.3389/fncom.2016.00144
  • HEBB, D. O. The Organization of Behavior: a Neuropsychological Theory. New York: John Wiley and Sons, Inc.; London: Chapman & Hall, Limited, 1949.
  • MCDOWELL, C.; WERNER, L.; BULLOCK, H. E.; FERNALD, J. The Impact of Pair Programming on Student Performance, Perception and Persistence. In: INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING, 25., Portland, 2003. Proceedings ... IEEE, 2003. p. 602-607. Disponível em: https://doi.org/10.1109/ICSE.2003.1201243 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1109/ICSE.2003.1201243
  • MENEZES, S. V.; PICCOLO, L. O ensino de computação para além dos muros da escola: análise crítica dos caminhos no Brasil e no Reino Unido. Cadernos CEDES, Campinas, v. 43, n. 120, p. 108-115, 2023. Disponível em: https://doi.org/10.1590/cc271276 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1590/cc271276
  • MUHAMMAD, I.; RUSYID, H. K.; MAHARANI, S.; ANGRAINI, L. M. Computational Thinking Research in Mathematics Learning in the Last Decade: A Bibliometric Review. International Journal of Education in Mathematics, Science and Technology, Konya, v. 12, n. 1, p. 178-202, 2023. Disponível em: https://doi.org/10.46328/ijemst.3086 Acesso em: 14 dez. 2024.
    » https://doi.org/10.46328/ijemst.3086
  • PESENTE, G. M. O ensino de matemática por meio da linguagem de programação Python. 2019. 134 folhas. Dissertação (Mestrado em Ensino de Ciência e Tecnologia) - Universidade Tecnológica Federal do Paraná, Ponta Grossa, 2019.
  • PESENTE, G. M.; MATOS, E. A. S. A. Ensine matemática por meio da linguagem Python - Caderno Pedagógico. Produto Educacional. 2019. 20 folhas. (Mestrado em Ensino de Ciência e Tecnologia) - Universidade Tecnológica Federal do Paraná, Ponta Grossa, 2019.
  • PETERS, T. PEP 20 - The Zen of Python. 2004. Disponível em: https://peps.python.org/pep-0020/ Acesso em: 11 nov. 2024.
    » https://peps.python.org/pep-0020/
  • ROCHA, F. G.; SABINO, R. F.; RODRIGUEZ, G. Using Dojo as a Pedagogical Practice to Introduce Undergraduate Students to Programming. In: LATIN AMERICAN CONFERENCE ON LEARNING TECHNOLOGIES (LACLO), 13., 2018, São Paulo. Proceedings… IEEE, 2018. p. 13-16. Disponível em: https://doi.org/10.1109/LACLO.2018.00012 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1109/LACLO.2018.00012
  • ROGERS, Y.; ELLIS, J. Distributed Cognition: An Alternative Framework for Analysing and Explaining Collaborative Working. Journal of Information Technology, London, v. 9, n. 2, p. 119-128, 1994.
  • SASSI, S. B.; MACIEL, C.; PEREIRA, V. C. Explorando a matemática e o pensamento computacional com atividades (des)plugadas com crianças de 6 a 9 anos de idade. Cadernos CEDES, Campinas, v. 43, n. 120, p. 45-59, 2023. Disponível em: https://doi.org/10.1590/cc271283 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1590/cc271283
  • SHUTE, V. J.; SUN, C.; ASBELL-CLARKE, J. Demystifying Computational Thinking. Educational Research Review, Washington, v. 22, p. 142-158, nov. 2017, Disponível em: https://doi.org/10.1016/j.edurev.2017.09.003 Acesso em: 14 dez. 2024.
    » https://doi.org/10.1016/j.edurev.2017.09.003
  • SOUSA, O. S. Etnomatemática e cognição corporificada: diálogo teórico. Acta Latinoamericana de Matemática Educativa, Ciudad de México, v. 28, n. 1, p. 961-967, 2015. Disponível em: https://core.ac.uk/download/pdf/158573029.pdf Acesso em 3 jan. 2025.
    » https://core.ac.uk/download/pdf/158573029.pdf
  • SOUSA, O. S., LACERDA, P. S. Programa Etnomatemática e programação de computadores: linguagens de programação no currículo contemporâneo. In: SCHEWTSCHIK, A. (org.). Matemática: ciência e aplicações 3. Ponta Grossa: Atena, 2019. Disponível em: https://educapes.capes.gov.br/bitstream/capes/432544/1/E-book-Matem%C3%A1tica-Ci%C3%AAncia-e-Aplica%C3%A7%C3%B5es-3-1.pdf Acesso em: 6 nov. 2024.
    » https://educapes.capes.gov.br/bitstream/capes/432544/1/E-book-Matem%C3%A1tica-Ci%C3%AAncia-e-Aplica%C3%A7%C3%B5es-3-1.pdf
  • SOUZA, E. C. Programação no ensino de matemática utilizando Processing 2: um estudo das relações formalizadas por alunos do ensino fundamental com baixo rendimento em matemática. 2016. Dissertação (Programa de Pós-Graduação em Educação para a Ciência) - Universidade Estadual Paulista, Bauru, 2016.
  • WEINTROP, D.; BEHESHTI, E.; HORN, M.; ORTON, K.; JONA, K.; TROUILLE, L.; WILENSKY, U. Defining Computational Thinking for Mathematics and Science Classrooms. Journal of Science Education and Technology, London, v. 25, n. 1, p. 127–147, 2016. DOI: https://doi.org/10.1007/s10956-015-9581-5 Acesso em: 2 out. 2025.
    » https://doi.org/10.1007/s10956-015-9581-5
  • Disponibilidade de dados:
    Os dados gerados ou analisados durante este estudo estão incluídos neste artigo publicado.
  • Editor-chefe responsável:
    Prof. Dr. Roger Miarka
  • Editor associado responsável:
    Prof. Dr. Roger Miarka

Disponibilidade de dados

Os dados gerados ou analisados durante este estudo estão incluídos neste artigo publicado.

Datas de Publicação

  • Publicação nesta coleção
    28 Nov 2025
  • Data do Fascículo
    2025

Histórico

  • Recebido
    03 Jan 2025
  • Aceito
    16 Jun 2025
location_on
UNESP - Universidade Estadual Paulista, Pró-Reitoria de Pesquisa, Programa de Pós-Graduação em Educação Matemática Avenida 24-A, 1515, Caixa Postal 178, 13506-900 - Rio Claro - SP - Brazil
E-mail: bolema.contato@gmail.com
rss_feed Acompanhe os números deste periódico no seu leitor de RSS
Reportar erro