
Sitio web del proyecto: https://feli10.github.io/math-coding/
En 2022, mis padres me confiaron que ayudara a mi hermano menor a aprender matemáticas de la escuela primaria. En ese momento, tenía seis años y yo era un estudiante de primer año en la escuela secundaria. Para abordar este proyecto, formulé un plan: después de completar cada unidad en su libro de texto de matemáticas, diseñaría y le asignaría 1-2 ejercicios de codificación, escritos en Python, que se relacionan estrechamente con el contenido de la unidad. Utilizando este enfoque combinando matemáticas y codificación, logramos completar un promedio de los cursos de un semestre cada dos meses. En aproximadamente un año, habíamos terminado el plan de estudios de matemáticas de la Escuela Primaria China de los grados tres a cinco.
La biblioteca del proyecto contiene 60 programas de Python que escribimos durante el año, incluidas 22 con interfaces gráficas de usuario y 38 con interfaces de línea de comandos. Estos programas cubren las 49 unidades de los libros de texto de matemáticas chinas de tercer a quinto grado de la prensa de educación del pueblo. El archivo math_coding_handbook.pdf contiene los principales temas matemáticos para cada unidad y las descripciones de los programas correspondientes. También hemos incluido documentación detallada y comentarios en todos los programas.
Graphical User Interface | Command Line Interface |
|---|---|
![]() | ![]() |
Todos los programas y el manual de aprendizaje tienen versiones separadas en inglés y chino. El directorio _en contiene la versión en inglés, con todas las pantallas gráficas y comentarios del programa en inglés. El directorio _cn contiene la versión china, con todas las pantallas gráficas y comentarios del programa en chino.

Descargar math_coding_handbook.pdf (versión en inglés)
Descargar math_coding_handbook.pdf (versión china)
A través de este proyecto, mi hermano y yo hemos demostrado en la práctica que aprender matemáticas de la escuela primaria con codificación permite a los alumnos estudiar de manera eficiente y efectiva las matemáticas y al mismo tiempo ser competente en un lenguaje de programación.
Para aprender de manera efectiva las matemáticas de la escuela primaria con la codificación a través de este proyecto requiere lo siguiente:
Hay dos formas de usar este proyecto:
En 2022, cuando mi hermano menor Henry tenía seis años, mis padres me pidieron que se hiciera cargo temporalmente de su educación matemática e inglesa. En ese momento, era diez años mayor que él y en mi primer año de secundaria. El objetivo inicial que acordamos fue que, antes de ir a la universidad, lo ayudaría a completar las matemáticas de la escuela primaria y alcanzar un nivel de dominio del inglés donde podría continuar mejorando de forma independiente. Como era el mejor en la familia en inglés, no había muchas incertidumbres al respecto, pero ¿cómo le enseñaría matemáticas?
Completé las matemáticas de la escuela primaria cuando tenía nueve años. Mirando hacia atrás, recuerdo haber leído muchos libros de texto, hacer muchos problemas de práctica y tomar bastantes pruebas simuladas. Después de alguna consideración, me di cuenta de que Henry, que solo tenía seis años, necesitaba un enfoque diferente. Según mi experiencia de aprendizaje, cuando alguien lucha constantemente con un tipo particular de problema matemático, generalmente es porque carecen de una comprensión profunda de los conceptos subyacentes. El propósito de hacer problemas de práctica debe ser identificar y abordar estas debilidades. Sin embargo, si uno practica problemas sin pensar, los mismos errores aparecerán una y otra vez. Es por eso que hacer un mar de problemas de práctica a menudo no es una forma eficiente de aprender nuevos temas matemáticos. Por lo tanto, su objetivo era encontrar un enfoque que le permitiera a Henry comprender a fondo los conceptos y habilidades matemáticas que necesita aprender antes de sumergirse en una extensa resolución de problemas.
La inspiración principal para combinar matemáticas y codificación provino de tomar cursos de matemáticas de alto nivel como parte de un proyecto de investigación de aprendizaje automático. Al tomar los cursos, descubrí que usar herramientas de programación para ayudar en el aprendizaje de las matemáticas a nivel universitario era bastante común y altamente efectivo. Al aprender el cálculo, el álgebra lineal y las estadísticas, la programación se utilizó para realizar experimentos matemáticos y resolver problemas prácticos. Junto con la visualización de resultados, esto ayudó en gran medida a mi comprensión de conceptos y teoremas matemáticos abstractos. Más tarde, también encontré algunos recursos para aprender matemáticas de la escuela intermedia con la ayuda de la programación. Sin embargo, nunca encontré nada similar para las matemáticas de la escuela primaria.
Entonces, después de discutir mi idea con Henry, nació el proyecto "Learn Elementary School Math with Coding".
Además del proyecto de un año con Henry, organizamos varios eventos de "fin de semana de programación", en los que llevé a grupos de 5-10 niños a aprender matemáticas con programación. Debido a que estos eventos fueron bastante exitosos, creo que este proyecto puede beneficiar a más niños, lo que les permite aprender matemáticas de manera eficiente con mejores resultados de aprendizaje al tiempo que los equipa con habilidades de programación.
Para los niños que siguen el plan de estudios escolar, esperamos que este proyecto pueda ayudarlos a mejorar sus habilidades de matemáticas y programación. También esperamos que este proyecto permita que aquellos que deseen acelerar su aprendizaje de matemáticas, como Henry, lo hagan. Un beneficio del aprendizaje acelerado es que el conocimiento de las matemáticas fundamentales puede facilitar el desarrollo de intereses tempranos. Por ejemplo, las habilidades matemáticas de Henry ayudaron enormemente a su aprendizaje musical, permitiendo que su interés y talento musical se desarrollen temprano.
Espero que este proyecto pueda proporcionar a las personas un nuevo enfoque para aprender matemáticas y brindar más oportunidades a aquellos que eligen usarlo. Si tiene alguna pregunta o sugerencia sobre el proyecto, no dude en ponerse en contacto conmigo en este correo electrónico: [email protected].
La organización de los directorios es idéntica a los libros de texto de matemáticas chinas de la escuela primaria de la prensa de educación del pueblo. Por ejemplo, para el nombre del directorio g311_time , el "G311" al principio identifica que el directorio corresponde a la unidad 1 del semestre 1 del libro de texto de grado 3.
El texto después del identificador indica el principal contenido de aprendizaje de la unidad. La unidad G311 se trata principalmente de contar el tiempo, por lo que el nombre del directorio de esta unidad es g311_time .
Cada directorio contiene 1-2 archivos de programa Python. Los nombres de los programas son indicativos de su contenido. Por ejemplo, g311_time contiene dos programas: clock.py , que muestra un reloj analógico funcional y digital_clock.py , que muestra un reloj digital en funcionamiento.
El archivo math_coding_handbook.pdf en el directorio _en contiene páginas de descripción para los 60 programas en 49 unidades de los grados 3 a 5. Cada descripción del programa contiene lo siguiente:

Todos los programas contienen una documentación detallada al principio y comentarios útiles en todo momento.

El manual de aprendizaje y todos los programas tienen versiones separadas en inglés y chino. Los directorios _en y _cn se organizan de la misma manera, pero con contenido en inglés y chino, respectivamente.
Algunos programas en la biblioteca de códigos contienen referencias entre sí. Por lo tanto, recomendamos descargar toda la biblioteca de códigos antes de usar.
Algunas notas sobre el contenido matemático del programa:
Todas las unidades matemáticas están en SI (sistema internacional).
La visualización de aritméticos de forma vertical en ciertos programas se basa en las formas verticales que se muestran en libros de texto chinos.

| ID de unidad | Nombre de la unidad | (S) programa (s) |
|---|---|---|
| G311 | Tiempo de contar: horas, minutos y segundos | 1. Reloj analógico 2. Reloj digital |
| G312 | Adición de 2 dígitos y resta | Practica la adición de 2 dígitos y la resta |
| G313 | Medidas | Conversión de la unidad de práctica |
| G314 | Adición vertical y resta | 1. Adición vertical 2. Resta vertical |
| G315 | Problemas de palabras de multiplicación | Practicar problemas de palabras de multiplicación |
| G316 | Multiplicación corta | Multiplicación corta |
| G317 | Rectángulos y cuadrados | Crear clase rectangular |
| G318 | Comprender fracciones | Practica comparar fracciones |
| G319 | Sets | Establecer operaciones |
| G321 | Orientación | Practicar las orientaciones de identificación |
| G322 | División corta | División corta |
| G323 | Mesas | Creación y visualización de tablas |
| G324 | Multiplicación de 2 dígitos | Multiplicación larga 1 |
| G325 | Área | Mejorar la clase de rectángulo: calcule el área y dibuje rectángulos |
| G326 | Años, meses y días | Calendario de visualización |
| G327 | Comprender los decimales | 1. Práctica decimal 1 2. Visualización de decimales |
| G328 | Combinaciones | Tres problemas de conteo comunes |
| G411 | Trabajando con grandes números | Lea cualquier número natural |
| G412 | Unidades de área grande | Conversión de la unidad de área de práctica |
| G413 | Ángulos de medición | Dibujar dial de reloj |
| G414 | Multiplicación de 3 dígitos | Multiplicación larga 2 |
| G415 | Paralelogramas y trapecios | Contando trapecios |
| G416 | División larga | División larga |
| G417 | Gráficos de barras | 1. Creación de gráficos de barras usando matplotlib 2. Creación de subclase de la clase de mesa para dibujar gráficos de barras |
| G418 | Mejoramiento | Juego de conteo |
| G421 | Orden de operaciones | Evaluar expresiones aritméticas |
| G422 | Objetos de observación | Tres vistas de los cubos |
| G423 | Leyes básicas de operación | Resolver 24 |
| G424 | Significado y propiedades de los decimales | Práctica decimal 2 |
| G425 | Triángulos | 1. Dibuja triángulos de isósceles 2. Dibuja los polígonos regulares |
| G426 | Adición y resta de decimales | Adición y resta de decimales en forma vertical |
| G427 | Simetría reflectante | Generar formas simétricas reflectantes |
| G428 | Valor medio y gráficos de barra agrupados | Valor medio y gráficos de barra agrupados |
| G429 | Problema de pollo y conejo | Problema de pollo y conejo |
| G511 | Multiplicación decimal | Larga multiplicación de decimales |
| G512 | Posición | 1. Coordenadas de entrada basadas en posiciones 2. Haga clic en posiciones basadas en coordenadas |
| G513 | División decimal | 1. División larga de decimales 2. Practica convertir fracciones comunes en decimales |
| G514 | Probabilidad | 1. Selección aleatoria con pesos 2. Suma de dos rollos de dados |
| G515 | Ecuaciones simples | Resolver el problema de pollo y conejo usando ecuaciones |
| G516 | Área de polígonos | Clases de polígono con propiedades de área |
| G517 | Problema de plantación de árboles | Problema de plantación de árboles |
| G521 | Observando objetos 2 | Tres vistas de los cubos V2 |
| G522 | Factores y múltiplos | 1. Obtenga números primos 2. Conjetura de Goldbach |
| G523 | Cuboides y Cubos | 1. Clase cuboidea con propiedad de la unidad 2. Conversión de la unidad de volumen de práctica |
| G524 | Significado y propiedades de las fracciones | 1. El mayor divisor común y múltiplo menos común 2. Convierta decimal a una fracción más simple |
| G525 | Rotación | Rotación |
| G526 | Adición y resta de fracciones | Adición y resta de fracciones |
| G527 | Gráficos de línea | Mejorar la clase de datos para dibujar gráficos de múltiples líneas |
| G528 | Identificar el valor atípico | Identificar el valor atípico |
El objetivo de los programas en este proyecto es traducir los métodos de resolución de problemas humanos en lenguaje de máquina (es decir, programas de Python) de la manera más clara y explícita posible. Esto se debe principalmente a las siguientes consideraciones:
Por lo tanto, priorizamos los resultados por encima de la eficiencia para la mayoría de nuestros programas. Sin embargo, al encontrar escenarios en los que el tiempo de ejecución se ve muy afectado por los datos de entrada, los alumnos se guiarán a probar diferentes métodos de programación de variables eficiencias.
Descargue el instalador de Python del sitio web oficial de Python (adecuado para varios sistemas operativos). Para los usuarios de Windows, asegúrese de verificar la opción "Agregar python.exe a ruta" durante la instalación.

Instale Anaconda o Miniconda (adecuado para varios sistemas operativos). Conda es un paquete de código abierto y un sistema de gestión del medio ambiente. La instalación de conda también instala Python y algunos módulos de uso común.
Use Homebrew para instalar Python (adecuado para sistemas operativos MacOS y Linux). Homebrew es un sistema de gestión de paquetes de código abierto. Si HomeBrew ya está instalado en su sistema, puede usar el siguiente comando para instalar Python:
brew install python-tkIdle (entorno integrado de desarrollo y aprendizaje) es la herramienta de programación incorporada para Python. Incluye un intérprete interactivo y editor de código. Idle solo tiene funcionalidades de hueso desnudo, por lo que se recomienda usar un editor de código más potente como VS Code.

VS Código (Código Visual Studio)

Un intérprete interactivo de Python, también conocido como shell, es una interfaz de línea de comandos muy útil donde puede ingresar cualquier expresión de Python, y los resultados se mostrarán en la pantalla al instante. El intérprete es ideal para experimentar con pequeños fragmentos de código, como probar el uso de tipos o funciones de datos incorporados. Se recomienda que al programar, no solo ingrese el código en el editor de códigos, sino que también tenga un intérprete interactivo abierto al mismo tiempo. Esto le permite experimentar y verificar los resultados inmediatamente en el intérprete cuando el resultado de una expresión es incierto.
Puede acceder al intérprete interactivo de Python de las siguientes maneras:
Para los usuarios de MacOS o Linux, puede ingresar python en el terminal para acceder al intérprete interactivo. Si el sistema no reconoce python , puede probar python3 .

Los usuarios de Windows pueden acceder al intérprete interactivo haciendo clic en "Python" en el menú o ingresando python en la ventana del símbolo del sistema (cmd.exe). Si el sistema no reconoce python , puede probar python3 o py .
La herramienta de programación incorporada inactiva en Python abre directamente el intérprete interactivo cuando se lanza.

También puede acceder al intérprete interactivo a través de la ventana terminal o interactiva incorporada de VS Code.
Los módulos o paquetes como Turtle y Tkinter son parte de la biblioteca estándar de Python y vienen preinstalados con Python, por lo que no se requiere instalación adicional.
Matplotlib es una popular biblioteca de visualización de datos de Python y se puede instalar utilizando los siguientes métodos:
Instale con el módulo pip de Python. Si el sistema no reconoce python , puede reemplazar python con python3 o py (para usuarios de Windows) en los comandos a continuación:
python -m pip install -U matplotlib Si se instala conda, puede usar el comando conda para la instalación:
conda install matplotlibPygame es una popular biblioteca de desarrollo de juegos de Python. El "juego de coordenadas" del programa G512 usa el módulo de sonido de PyGame. Puede instalarlo de manera similar a matplotlib:
Instale con el módulo pip de Python:
python -m pip install -U pygame Si se instala conda, puede usar el comando conda para la instalación:
conda install pygame⏫ De vuelta a la cima