Este documento discute conceptos fundamentales de programación y resolución de problemas. Explica que un problema implica una familia de preguntas relacionadas que comparten ciertos aspectos pero difieren en otros, y que un programa proporciona una regla general para resolver dicho problema. También aborda temas como qué es la computación, los objetivos de un curso introductorio de programación y consideraciones sobre el uso de lenguajes de programación en dichos cursos.
El documento presenta consejos para el diseño de librerías de Python. Enfatiza la importancia de diseñar APIs que proporcionen un nivel adecuado de "ignorancia" para los usuarios, respetando al mismo tiempo los principios de diseño de Python como la simplicidad y la legibilidad. También recomienda seguir buenas prácticas como la documentación, los tests y la compatibilidad con versiones anteriores.
O documento descreve o período da arte moderna, começando pelo Impressionismo no século XIX. Os impressionistas buscavam capturar a luz e cores da natureza. Posteriormente surgiram outros movimentos como o Pós-Impressionismo e Simbolismo, onde artistas como Van Gogh, Seurat e Gauguin desenvolveram estilos únicos para expressar sentimentos através da forma e cor.
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
Este documento presenta la asignatura de Programación de Algoritmos. Introduce los objetivos de aprender a utilizar Java, presentar excepciones y trabajar con arreglos. Explica conceptos como la API de Java, excepciones, y estructuras de datos como arreglos y sus operaciones. Finalmente, propone como ejercicio desarrollar un programa para insertar un elemento en un arreglo ordenado.
Este documento presenta el plan de estudios para un curso de Introducción a la Programación. El curso busca desarrollar habilidades básicas de programación y algoritmia a través del uso de lenguajes como Java. Los estudiantes aprenderán conceptos como estructuras de control, funciones, arreglos y programación orientada a objetos. El curso incluye evaluaciones como quices, exámenes parciales y un proyecto final para evaluar el aprendizaje de los estudiantes.
Este documento describe dos unidades didácticas de un módulo de Programación II en Visual Basic.NET. La primera unidad se enfoca en la programación en .NET e incluye temas como la plataforma .NET, librerías, compiladores y controles básicos. La segunda unidad cubre la documentación de programas .NET e incluye la elaboración de manuales de usuario. Cada unidad detalla los resultados de aprendizaje, actividades, criterios de evaluación y recursos didácticos.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para facilitar la comprensión de los conceptos básicos de programación.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para ayudar al aprendizaje de la programación.
El documento presenta consejos para el diseño de librerías de Python. Enfatiza la importancia de diseñar APIs que proporcionen un nivel adecuado de "ignorancia" para los usuarios, respetando al mismo tiempo los principios de diseño de Python como la simplicidad y la legibilidad. También recomienda seguir buenas prácticas como la documentación, los tests y la compatibilidad con versiones anteriores.
O documento descreve o período da arte moderna, começando pelo Impressionismo no século XIX. Os impressionistas buscavam capturar a luz e cores da natureza. Posteriormente surgiram outros movimentos como o Pós-Impressionismo e Simbolismo, onde artistas como Van Gogh, Seurat e Gauguin desenvolveram estilos únicos para expressar sentimentos através da forma e cor.
UTPL-PROGRAMACIÓN DE ALGORITMOS-I-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
Este documento presenta la asignatura de Programación de Algoritmos. Introduce los objetivos de aprender a utilizar Java, presentar excepciones y trabajar con arreglos. Explica conceptos como la API de Java, excepciones, y estructuras de datos como arreglos y sus operaciones. Finalmente, propone como ejercicio desarrollar un programa para insertar un elemento en un arreglo ordenado.
Este documento presenta el plan de estudios para un curso de Introducción a la Programación. El curso busca desarrollar habilidades básicas de programación y algoritmia a través del uso de lenguajes como Java. Los estudiantes aprenderán conceptos como estructuras de control, funciones, arreglos y programación orientada a objetos. El curso incluye evaluaciones como quices, exámenes parciales y un proyecto final para evaluar el aprendizaje de los estudiantes.
Este documento describe dos unidades didácticas de un módulo de Programación II en Visual Basic.NET. La primera unidad se enfoca en la programación en .NET e incluye temas como la plataforma .NET, librerías, compiladores y controles básicos. La segunda unidad cubre la documentación de programas .NET e incluye la elaboración de manuales de usuario. Cada unidad detalla los resultados de aprendizaje, actividades, criterios de evaluación y recursos didácticos.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para facilitar la comprensión de los conceptos básicos de programación.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para ayudar al aprendizaje de la programación.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para facilitar la comprensión de los conceptos básicos de programación.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para ayudar al aprendizaje de la programación a través de la práctica.
Este documento presenta una colección de ejercicios de programación en Java para practicar conceptos como condicionales, bucles, tablas y funciones. Está dividido en seis boletines que abordan cada tema de forma progresiva mediante la resolución guiada de problemas. El objetivo es que el lector aprenda a programar desarrollando la lógica necesaria independientemente del lenguaje utilizado.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín se centra en un tema específico y los ejercicios van aumentando gradualmente su dificultad a lo largo del libro. El objetivo del libro es que el lector aprenda conceptos de programación
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín se centra en un tema específico y los ejercicios van aumentando gradualmente su dificultad a lo largo del libro. El objetivo del libro es que el lector aprenda conceptos de programación
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene 6 boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín aumenta gradualmente la dificultad de los ejercicios. El objetivo del libro es que los lectores aprendan conceptos de programación a través de la práctica de resolver ejercicios paso a paso
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín presenta varios ejercicios sobre un tema específico con el objetivo de que el lector practique y afiance sus conocimientos de programación mediante la resolución de ejercicios.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín presenta varios ejercicios sobre un tema específico con el objetivo de que el lector practique y afiance sus conocimientos de programación mediante la resolución de ejercicios.
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un plan de acción para Francisco sobre el aprendizaje basado en proyectos. Incluye actividades para que Francisco evalúe su conocimiento actual, establezca objetivos de aprendizaje y anticipe posibles retos. A lo largo del módulo, Francisco aprende sobre los beneficios del aprendizaje basado en proyectos, las características de los proyectos y cómo podría cambiar los roles en su clase para incorporar este enfoque. Al final, hace un resumen reflexionando sobre lo que ha aprendido y cómo puede mejorar
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
Una breve descripcion de python, la POO y su uso en ingenieria. Esta presentacion minimiza un curso de 4 meses en una sola clase.
A brief description of python and the OOP for engineering applications, it minimized a course of python from 4 months to just one class. From Corrientes to the world
Este documento presenta los acuerdos y compromisos para la clase de Data Analytics. Se detallan normas de convivencia como el uso adecuado de los medios de comunicación durante la clase. También se especifican recomendaciones sobre distractores, herramientas necesarias y formas de interacción. Finalmente, se explican las instancias prácticas como pre-entregas y el proyecto final que consiste en desarrollar un dashboard de análisis.
Este documento presenta un libro sobre fundamentos de programación. El libro introduce conceptos como algoritmos, análisis de eficiencia, notaciones de orden como O grande, y estructuras de control como ciclos y recursión. El objetivo es que los estudiantes aprendan conceptos prácticos de programación de una manera experimental mediante ejercicios y laboratorios.
Apuntes de fundamentos de programacion 2Danthe Garcia
Este documento presenta un libro de texto sobre fundamentos de programación. El libro contiene 9 capítulos que cubren temas como algorítmica elemental, análisis de algoritmos, teoría de números, diseño por contratos, clasificación y búsqueda, programación de problemas de combinatoria, estructuras de datos, retroceso y geometría computacional. El libro utiliza el lenguaje Java y presenta ejercicios tomados de concursos de programación.
Este documento presenta la materia de Lenguajes de Programación I. Incluye una introducción sobre aprender a programar y los lenguajes C y C++ que se examinarán. Detalla los temas de la materia como introducción a la programación, estructuras de control, estructuras de datos, listas, recursividad y E/S. También incluye secciones sobre instrumentos de evaluación, conclusión y reflexión final donde se enfatiza la importancia de los lenguajes de programación para resolver problemas usando computadoras.
Este taller de 4 horas sobre aprendizaje basado en equipos (TBL) incluye varias secciones. La primera sección presenta la idea general y los resultados de aprendizaje, los cuales incluyen modelar TBL y provocar reflexión docente. La segunda sección involucra vivenciar TBL a través de lectura, formación de equipos, pruebas individuales y grupales, y una mini-clase sobre TBL. La tercera sección consiste en una actividad de aplicación de TBL sobre calificaciones y enseñanza. El taller concluye con pregunt
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines de ejercicios resueltos para aprender conceptos básicos de programación como variables, condicionales, bucles, tablas y funciones a través de Java. El libro incluye una introducción y 6 boletines de ejercicios de dificultad creciente con temas como variables y condicionales, condicionales y bucles, bucles anidados, tabl
Artificial intelligence expert Andreas Ebert will give a presentation on the impact of artificial intelligence. The talk will take place on February 7th from 12:00-1:00 pm at the Faculty of Engineering at UNAM. The presentation will discuss the regional technology officer's perspectives on artificial intelligence.
Over 14 years, Andreas Ebert has participated in many projects and discussions advising stakeholders in business, government, and academia in the EU. The topics ranged from the impact of open source, intellectual property rights, national interoperability frameworks, standardization strategies, productivity dimensions, digital transformation, economics of hyperscale cloud computing, economics of compliancy, options for risk modeling, evolution of artificial intelligence, ethics and machine learning, and the socio-economic impact of technology on society. Andreas lives in Vienna with his wife and two children and has worked for Microsoft for 27 years in various roles including building the consulting organization in Austria and leading the enterprise sales unit and Austrian subsidiary.
Más contenido relacionado
Similar a Didáctica del análisis y la solución de problemas mediante programación
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para facilitar la comprensión de los conceptos básicos de programación.
El documento presenta una serie de boletines de ejercicios de programación en Java que abordan temas como variables, condicionales, bucles, tablas y funciones. Cada boletín contiene varios ejercicios resueltos de manera didáctica sobre un tema concreto para ayudar al aprendizaje de la programación a través de la práctica.
Este documento presenta una colección de ejercicios de programación en Java para practicar conceptos como condicionales, bucles, tablas y funciones. Está dividido en seis boletines que abordan cada tema de forma progresiva mediante la resolución guiada de problemas. El objetivo es que el lector aprenda a programar desarrollando la lógica necesaria independientemente del lenguaje utilizado.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín se centra en un tema específico y los ejercicios van aumentando gradualmente su dificultad a lo largo del libro. El objetivo del libro es que el lector aprenda conceptos de programación
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín se centra en un tema específico y los ejercicios van aumentando gradualmente su dificultad a lo largo del libro. El objetivo del libro es que el lector aprenda conceptos de programación
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene 6 boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín aumenta gradualmente la dificultad de los ejercicios. El objetivo del libro es que los lectores aprendan conceptos de programación a través de la práctica de resolver ejercicios paso a paso
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín presenta varios ejercicios sobre un tema específico con el objetivo de que el lector practique y afiance sus conocimientos de programación mediante la resolución de ejercicios.
Este documento presenta un libro titulado "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones". El libro contiene seis boletines de ejercicios resueltos sobre diferentes temas de programación en Java como variables, condicionales, bucles, tablas y funciones. Cada boletín presenta varios ejercicios sobre un tema específico con el objetivo de que el lector practique y afiance sus conocimientos de programación mediante la resolución de ejercicios.
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines con ejercicios de programación resueltos en Java para afianzar conocimientos sobre condicionales, bucles, tablas y funciones. El libro incluye una introducción y 6 boletines de ejercicios con dificultad creciente sobre diferentes temas de programación.
Este documento presenta un plan de acción para Francisco sobre el aprendizaje basado en proyectos. Incluye actividades para que Francisco evalúe su conocimiento actual, establezca objetivos de aprendizaje y anticipe posibles retos. A lo largo del módulo, Francisco aprende sobre los beneficios del aprendizaje basado en proyectos, las características de los proyectos y cómo podría cambiar los roles en su clase para incorporar este enfoque. Al final, hace un resumen reflexionando sobre lo que ha aprendido y cómo puede mejorar
Python y la POO, en una clase, UNNe-Corrientesalexis ibarra
Una breve descripcion de python, la POO y su uso en ingenieria. Esta presentacion minimiza un curso de 4 meses en una sola clase.
A brief description of python and the OOP for engineering applications, it minimized a course of python from 4 months to just one class. From Corrientes to the world
Este documento presenta los acuerdos y compromisos para la clase de Data Analytics. Se detallan normas de convivencia como el uso adecuado de los medios de comunicación durante la clase. También se especifican recomendaciones sobre distractores, herramientas necesarias y formas de interacción. Finalmente, se explican las instancias prácticas como pre-entregas y el proyecto final que consiste en desarrollar un dashboard de análisis.
Este documento presenta un libro sobre fundamentos de programación. El libro introduce conceptos como algoritmos, análisis de eficiencia, notaciones de orden como O grande, y estructuras de control como ciclos y recursión. El objetivo es que los estudiantes aprendan conceptos prácticos de programación de una manera experimental mediante ejercicios y laboratorios.
Apuntes de fundamentos de programacion 2Danthe Garcia
Este documento presenta un libro de texto sobre fundamentos de programación. El libro contiene 9 capítulos que cubren temas como algorítmica elemental, análisis de algoritmos, teoría de números, diseño por contratos, clasificación y búsqueda, programación de problemas de combinatoria, estructuras de datos, retroceso y geometría computacional. El libro utiliza el lenguaje Java y presenta ejercicios tomados de concursos de programación.
Este documento presenta la materia de Lenguajes de Programación I. Incluye una introducción sobre aprender a programar y los lenguajes C y C++ que se examinarán. Detalla los temas de la materia como introducción a la programación, estructuras de control, estructuras de datos, listas, recursividad y E/S. También incluye secciones sobre instrumentos de evaluación, conclusión y reflexión final donde se enfatiza la importancia de los lenguajes de programación para resolver problemas usando computadoras.
Este taller de 4 horas sobre aprendizaje basado en equipos (TBL) incluye varias secciones. La primera sección presenta la idea general y los resultados de aprendizaje, los cuales incluyen modelar TBL y provocar reflexión docente. La segunda sección involucra vivenciar TBL a través de lectura, formación de equipos, pruebas individuales y grupales, y una mini-clase sobre TBL. La tercera sección consiste en una actividad de aplicación de TBL sobre calificaciones y enseñanza. El taller concluye con pregunt
Este documento presenta el libro "Ejercicios de Programación en Java: Condicionales, Bucles, Tablas y Funciones" que contiene una serie de boletines de ejercicios resueltos para aprender conceptos básicos de programación como variables, condicionales, bucles, tablas y funciones a través de Java. El libro incluye una introducción y 6 boletines de ejercicios de dificultad creciente con temas como variables y condicionales, condicionales y bucles, bucles anidados, tabl
Similar a Didáctica del análisis y la solución de problemas mediante programación (20)
Artificial intelligence expert Andreas Ebert will give a presentation on the impact of artificial intelligence. The talk will take place on February 7th from 12:00-1:00 pm at the Faculty of Engineering at UNAM. The presentation will discuss the regional technology officer's perspectives on artificial intelligence.
Over 14 years, Andreas Ebert has participated in many projects and discussions advising stakeholders in business, government, and academia in the EU. The topics ranged from the impact of open source, intellectual property rights, national interoperability frameworks, standardization strategies, productivity dimensions, digital transformation, economics of hyperscale cloud computing, economics of compliancy, options for risk modeling, evolution of artificial intelligence, ethics and machine learning, and the socio-economic impact of technology on society. Andreas lives in Vienna with his wife and two children and has worked for Microsoft for 27 years in various roles including building the consulting organization in Austria and leading the enterprise sales unit and Austrian subsidiary.
Este documento presenta recomendaciones para la construcción de viviendas antisísmicas utilizando materiales de tierra como el tapial, el adobe y el bahareque. Describe los efectos estructurales de los sismos y cómo deben diseñarse los muros, uniones, cubiertas y otros elementos para resistir los movimientos sísmicos sin colapsar. También incluye información sobre la localización de sismos, la importancia de la ductilidad, y recomendaciones sobre el emplazamiento y forma de la vivienda para mejorar
B4U had conversations with key institutions to define their goals of engaging US and Mexican citizens in non-partisan advocacy. They will focus on providing information to address gaps in knowledge about Mexico and the rights of migrants. Specifically, they will:
1. Collaborate with the organization IMUMI to fundraise for and provide volunteer support assisting migrants in obtaining legal documentation.
2. Launch a social media campaign utilizing members' skills to present diverse voices and perspectives of contemporary Mexico that challenge stereotypes.
3. Form working groups to organize the fundraising, volunteer documentation efforts, and social media campaign.
Este documento describe la aprobación y publicación de un reglamento para regular el régimen de condominio de inmuebles en el estado de Morelos, México. El reglamento establece las bases para la administración de condominios y promueve la armonía entre condóminos. También define los derechos y obligaciones de los condóminos y ocupantes de unidades condominiales.
El documento informa al director de la Facultad de Ingeniería de la UNAM que el Colegio del Personal Académico de la Facultad de Ingeniería realizó el proceso de selección de representantes de la sección DIE de acuerdo con su reglamento. La junta directiva del Colegio aprobó los nuevos representantes de la sección DIE según el oficio recibido del Colegio Sección DIE.
La junta directiva del Colegio de Profesores de la Facultad de Ingeniería se reunió el 16 de marzo de 2017 en el Centro de Docencia "Gilberto Borja Navarrete" para realizar la toma de protesta de los nuevos miembros del Colegio. Los nuevos miembros firmaron el acta de la reunión para confirmar su incorporación al Colegio.
La reunión del Colegio del Personal Académico de la Facultad de Ingeniería discutió varios temas clave. Se cuestionó la permanencia del presidente actual y el proceso de elecciones recientes. También se revisó un nuevo reglamento del Colegio y sus diferencias con la versión anterior, creando la necesidad de una revisión más a fondo. Finalmente, se tomó protesta a los nuevos miembros electos de varias secciones e indicó que la sección de DIE resolvería asuntos pendientes de Telecomunicaciones y otras áreas
El documento resume los principales cambios demográficos, económicos y sociales de México durante el siglo XX, incluyendo el crecimiento exponencial de la población, la duplicación de la esperanza de vida, el aumento del PIB y el ingreso per cápita, y la reducción del analfabetismo. También propone objetivos para que México alcance niveles similares a los países más ricos en 2035 a través de 60 proyectos clave en áreas como la agricultura, la vivienda, la salud y la educación.
Didáctica del análisis y la solución de problemas mediante programación
1. Didáctica del análisis y la solución de
problemas mediante programación
Primero gráficas, luego la sintaxis
2. ¿Qué es un problema?
• ¿Cuál es el significado de la vida?
– Una pregunta no tan objetiva
• ¿Cuántos años tengo?
– Pregunta objetiva, la cual requiere información de
la que se carece
• ¿Cuál el número primo más pequeño?
– Objetiva, bien especificada, pero una vez que se
resuelve, concluye
July 5 2011 Program By Design 2011 2
3. ¿Qué es un problema?
• ¿Cuál es el equivalente Celsius de 45F?
– Otra vez, una vez que se contesta, concluye
• ¿Cuál es el equivalente Celsius de 87F?
– Igual, aunque muy relacionada
• ¿Cuál es el equivalente Celsius de ___ en
Fahrenheit?
– Generaliza infinitamente muchas preguntas
July 5 2011 Program By Design 2011 3
4. ¿Qué es un problema?
Pregunta: tiene una sola respuesta
Problema: familia enorme (o infinita) de
preguntas, compartiendo algunos aspectos y
difiriendo de otros
Programa: regla general para resolver un
problema, con entrada para los aspectos que
difieren
Cómputo: un programa operando en una entrada
particular para producir un resultado particular
July 5 2011 Program By Design 2011 4
5. ¿Qué es “computación”?
• ¿Biología = “ciencia del microscopio”?
• acerca de los microbios, no de lo microscopios
• ¿Astronomía = “ciencia del telescopio”?
• acerca de las estrellas, no de los telescopios
¡No es acerca de la herramienta, es acerca de lo que se
puede estudiar con la herramienta!
• “computación”
• tiene que ver con información y su manipulación, no las
computadoras, es cercana a las matemáticas
July 5 2011 Program By Design 2011 5
6. ¿Qué es un curso de Fundamentos a la
programación?
1) ¿Cómo emplear Microsoft Office, et al
2) Survey de la profesión de los computólogos
3) Un lenguaje, IDE, OS, etc. que proporcionen a los
estudiantes trabajo
4) Conceptos, hábitos, y metodologías de programación
Cuatro cursos completamente diferentes, cada uno valioso por
diferentes razones y para diferentes audiencias
#3 útil para estudiantes por recibirse, o en búsqueda de
ayudantías o trabajos de verano
#4 más útil como primer curso. Llamémosle “Fundamentos
de programación"…
July 5 2011 Program By Design 2011 6
7. ¿De qué trata Fundamentos de
programación, FP?
July 5 2011 Program By Design 2011 7
8. ¿Qué se enseña?
Bla, bla algoritmo bla variable bla función bla
tipo de datos bla objeto bla re-uso bla
metodología bla testing bla diseño bla
composición bla refinamiento bla
abstracción
July 5 2011 Program By Design 2011 8
9. ¿Qué se escucha?
bla ; bla { bla ) bla ] bla return bla this.x = x; bla
public static void main (String[] args) bla /* bla //
bla <int> bla if ( bla JOptionPane bla class
Posn(int x,y)
July 5 2011 Program By Design 2011 9
10. Lenguajes de programación e IDEs:
un mal necesario
• Necesario: para escribir programas reales
que realmente corran en computadoras
reales
• Mal: distraen a los estudiantes de temas
importantes
• En cualquier caso serán obsoletos en unos
cuantos años
July 5 2011 Program By Design 2011 10
11. ¿Cómo minimizar los lenguajes e
IDEs?
• Introducir características una a la vez
• Evitar “magia negra"; nunca pedir a los estudiantes escribir algo que
no entiendan en el momento
• Introducir características únicamente cuando sea necesario para
aprender un concepto importante
• Corolario: ningún aspecto que no ayude a enseñar un concepto de
programación debe mencionarse en Fundamentos de programación
• Corolario: se requieren reforzar subconjuntos de un lenguaje de modo
de evitar que los estudiantes usen accidentalmente aspectos no
comprendidos de un lenguaje
• Para GUIs, robótica, redes, etc. se requiere una interface entre el
código del estudiantes (mediante un subconjunto y el código de
biblioteca (en un lenguaje completo)
July 5 2011 Program By Design 2011 11
12. Hecho desafortunado
Java y C++, … no se atienen a esas reglas:
• Introducen muchos conceptos a la vez
• No pueden explicarse inmediatamente -> magia negra
• Tienen que introducir conceptos que podrían
emplearse en algún programa, no sólo aquellos
empleados en este programa
• Es fácil invocar accidentalmente aspectos avanzados
del lenguaje (p.e. punteros, clases internas)
July 11, 2011
13. ¿Qué acerca de Java y POO?
Sí, los estudiantes requieren Java y POO, pero
• ¿Cuándo?
• ¿Por qué?
Contestando primero el “por qué”, debido a que
afecta el “cuándo”.
July 11, 2011
14. ¿Por qué los estudiantes requieren
Java?
• Se emplea en muchas instituciones de
educación superior (actualmente)
• Se emplea en la industria (actualmente)
July 11, 2011
15. Por qué ¿Cuándo los estudiantes
requieren Java?
• Al momento de cursos a mitad de la carrera,
los que lo presuponen, si siguen vigentes
para entonces
• Al momento de obtener un trabajo en la
industria, si para entonces se sigue
empleando en la industria
July 11, 2011
16. ¿Por qué los estudiantes requieren
POO con base en clases?
• Es una forma útil de organizar programas
grandes… digamos, de 10,000 a 1,000,000
lines.
(No la única manera, pero una buena.)
• Se emplea en la industria… a veces.
(véase “Objects Never? Well, Hardly Ever!”
en CACM Sept. 2010)
July 11, 2011
17. Por qué ¿Cuándo los estudiantes
requieren POO con base en clases?
• Cuando escriban programas grandes… digamos,
10,000 a 1,000,000 lines. Probablemente no este año.
• Cuando apliquen en trabajos que requieran POO con
base en clases. Probablemente no este año.
• Los beneficios de POO no son evidentes en el primer
año; los estudiantes sólo sufren el costo y la
complejidad.
• (Desafío: escribir un programa corto, OO C++/Java
que no pudiera ser más corto y simple sin OO)
July 11, 2011
18. Si bien parece que mientras más pronto se inicie
el manejo de Java, mejor se aprenderá
• No necesariamente. Java tiene más sentido si ya
se sabe programar.
• Mejor, primero aprender conceptos y hábitos de
programación, luego un lenguaje complicado.
• Escuelas que posponen Java forman mejores
programadores Java
July 11, 2011
19. Opciones a primero-Java
• Principales opciones: Alice, Python,
Scheme/Racket, Scratch/BYOB, Processing
• Todas: inician con una sintaxis más simple a
la vez que los estudiantes dominan
conceptos. Motivan mediante gráficos.
• Diferencia: Alice, Python, Scratch,
Processing normalmente se enseñan en
forma imperativa; Racket, funcionalmente
July 11, 2011
20. Imperativo Funcional
• “¿Qué salida y efectos • “¿Cuál es la respuesta
colaterales se desean?” correcta?”
• “¿Qué hago, en que orden, • “¿Qué expresión algebraica
para generarlos?” genera la expresión correcta?”
• Primera semana: asignación, • Primera semana: llamadas a
I/O, secuencia función y definiciones
• Luego: condicionales, ciclos • Luego:
condicionales, recursión
• Más tarde: llamadas a
función y definiciones, • Más tarde:
recursión asignación, I/O, secuencia, cic
los
July 11, 2011
21. ¿Por qué programación funcional?
Imperativa Funcional
Modelo mental Máquina von Neumann: Sustitución algebráica:
Almacenar en y recuperar de cajas 3+4*5 -> 3+20 -> 23
Escritura de setFoo(5); setBar(3); setOther(-4); f(5,3) == rightAnswer
pruebas doF();
getResult().equals(rightAnswer)
&&
getOther() == -4 // hasn’t changed
Cambio en Cada prueba afecta los resultados Se pueden comentar o reordenar
pruebas de las subsecuentes pruebas sin cambiar los resultados
Debugging ¿Cuál es el valor de ésta variable ¿Cuál es el valor de ésta?
en éste momento?
Hábitos Grandes métodos que mezclan I/O Separa I/O y cálculo; corto,
y cálculo, haciendo muchas tareas reusable, funciones de un sólo
diferentes propósito
July 11, 2011
22. Puede programarse funcionalmente en
otros languajes (p.e. Java)
• Enseñar “return” antes de asignación o println
• Enseñar métodos con parámetros y valores
devueltos antes de sin
• Enseñar composición de métodos antes de
secuencias
• Enseñar recursión antes de loops
• … etc.
• Aunque el lenguaje no lo facilita.
July 11, 2011
23. Pero ¿por qué enseñar Racket?
¡Nadie lo emplea!
• Lo mismo se decía de Pascal en los 1980’s
• Realmente no importa enseñar Racket;
interesa enseñar programación.
• Enseñar lo menos posible de Racket:
5-10 reglas sintácticas en todo un semestre
• Curricula mucho más importante que el
lenguaje
July 11, 2011
24. ¿Qué hacer?
NO “enseñar Racket en lugar de Java”
Curricula multi-semestre, integrada
1) Enseñar lo menos posible de Racket; concentrarse en la
solución de problemas y en el pensamiento matemático
2) Enseñar lo menos posible de Java; concentrarse en la
solución de problemas y en el pensamiento matemático
3) Enseñar aspectos del lenguaje que requieren los
estudiantes en becas, servicio social, cursos
subsecuentes, etc.
“lo menos de Java" >> “lo menos de Racket"
July 11, 2011
25. La Trinidad
Curricula centrada en la solución
de problemas (Programación
mediante diseño)
Lenguaje simple IDE didáctica
(lenguajes para (DrRacket)
estudiantes tipo-
Scheme)
July 11, 2011
26. "concentrarse en solucionar
problemas"
• Receta de diseño paso a paso: de la descripción verbal
de un problema al código probado y corregido
• Preguntas concretas y entregables en cada paso
• Casos de prueba antes que la codificación; parte de la
face de análisis
• Data Driven Design (diseño impulsado por datos):
“la forma de los datos determina la forma del código"
July 11, 2011
27. Stephen Bloch, Adelphi University, Garden City, NY
John Clements, Cal Poly, San Luis Obispo, CA
Kathi Fisler, Worcester Polytechnic Institute, Worcester, MA
Matthew Flatt, University of Utah, Salt Lake City, UT
Shriram Krishnamurthi, Brown University, Providence, RI
Viera K. Proulx, Northeastern University, Boston, MA
Supported by NSF grant #0618543
Related work by Matthias Felleisen, Robby Findler,
Kathy Gray, Eli Barzilay, Emmanuel Schanzer, et al