Ensear programacin desde un enfoque conceptual Contenido Sntesis del proyecto ........................................................................................................................................................ 1 Destinatarios..................................................................................................................................................................... 1 Fundamentacin ............................................................................................................................................................... 2 Objetivos .......................................................................................................................................................................... 2 Contenidos ....................................................................................................................................................................... 2 Duracin y carga horaria .................................................................................................................................................. 3 Propuesta didctica........................................................................................................................................................... 3 Semana 1 ....................................................................................................................................... 3 Semana 2 ...................................................................................................................................... 4 Semana 3 ....................................................................................................................................... 4 Semana 4 ....................................................................................................................................... 4 Semana 5 ....................................................................................................................................... 4 Semana 6 ....................................................................................................................................... 5 Semana 7 ....................................................................................................................................... 5 Semana 8 ........................................................................................................................................ 5 Presentacin de materiales de acuerdo con la modalidad del curso ................................................................................. 5 Bibliografa ...................................................................................................................................................................... 6 Evaluacin ........................................................................................................................................................................ 6 Sntesis del proyecto Esta capacitacin busca presentar un enfoque nuevo a la enseanza de la primera materia de programacin, basado en nociones conceptuales fundamentales. El enfoque permite ir incorporando los conceptos de manera gradual, pero de forma tal que se construye en el estudiante una slida base sobre la que materias posteriores pueden abundar en detalles. Se trabajar en 2 ejes: el de contenidos, donde se presentan los temas que conforman la enseanza de la materia, y el de fundamentos, donde se presentan las razones de la seleccin y ordenamiento de los temas. La secuencia de temas comienza con la presentacin de comandos y expresiones; contina con la nocin de procedimientos y luego incorpora la idea de parametrizacin, trabajando con abundantes ejemplos; sigue con estructuras de control (secuencia, repeticin y alternativa), al tiempo que introduce la idea de funciones; finalmente se presentan recorridos de secuencias como esquema de programas, integrando todos los temas. Pgina 2 de 8 Destinatarios Docentes de la materia "Laboratorio de Programacin I" de las Escuelas Secundarias Tcnicas con orientacin Programacin o Informtica Personal y Profesional que deseen incorporar un enfoque conceptual en el dictado de su materia. Fundamentacin La enseanza de la programacin ha tenido multiples enfoques, pero en general se basa en la eleccin de un lenguaje especfico de moda (por ejemplo, Logo, Pascal, Java) y la enseanza de los conceptos asociados a ese lenguaje particular; o bien la eleccin de alguna herramienta informtica especfica (en la forma de algn programa con capacidades grficas, por ejemplo, EToys\ o Alice), y ensear a partir de las capacidades de dichas herramientas. Esta propuesta es de carcter radical con respecto a las anteriores, en cuanto a que se basa fuertemente en conceptos fundamentales (que fueron cuidadosamente seleccionados y testeados) y minimiza el impacto de las herramientas, presentando un lenguaje de programacin diseado sobre estos conceptos con el propsito especfico de concentrar la enseanza en los mismos, mantenindose as simple en su concepcin y transmisin. Esto permite formar tcnicos con habilidades suficientes para adaptarse a los tiempos modernos, tan cambiantes en cuanto a herramientas especficas, tecnologas y desarrollos. La contribucin ms importante de este enfoque es que no depende de herramientas ad-hoc, que pueden ir mutando con el tiempo, sino en ideas sencillas, poderosas y perdurables. El enfoque de este curso se viene probando con xito en el nivel inicial de la carrera de Tecnicatura en Programacin de la Universidad Nacional de Quilmes. Objetivos Los objetivos principales son que los capacitandos puedan: incorporar los conceptos fundamentales de la programacin comprender porqu los conceptos aprendidos son fundamentales comprender que la enseanza de los conceptos es independiente de los lenguajes y las herramientas proponer ejercitacin para la enseanza de los conceptos en el aula. Si bien los conceptos fundamentales de la programacin son independientes de los lenguajes y herramientas utilizadas, es conveniente explicar los mismos en algn lenguaje especfico. La Pgina 3 de 8 propuesta de este proyecto es utilizar Gobstones como lenguaje de enseanza. Por este motivo, son objetivos secundarios que el capacitando: domine el lenguaje Gobstones con fluidez. entienda cmo se implementan los conceptos fundamentales de programacin en Gobstones y sus por qu. Contenidos 1. Elementos de Gobstones (tablero, cabezal, bolitas, colores). Comandos (Poner, Mover, Sacar). Operaciones (puedeMover, hayBolitas, etc.). Estado inicial de un tablero. 2. Procedimientos y funciones. Punto de entrada de un programa. Invocacin, parmetros y argumentos. 3. Parcialidad y precondiciones. Errores: operaciones invlidas, errores lgicos, no terminacin. 4. Valores, expresiones y tipos. Evolucin del valor denotado por una expresin (estado del programa). 5. Estructuras de control: alternativa condicional (if-then-else), repeticin indexada (repeatWith), repeticin condicional (while). 6. Variables e ndices. Operacin de asignacin. Alcance de los identificadores (parmetros, variables, ndices). 7. Esquemas de recorridos lineales de estructuras. Clases de recorridos: completo, parcial, con acumuladores, etc. 8. Justificacin de las caractersticas de Gobstones en funcin de la enseanza de los conceptos fundamentales. Duracin y carga horaria El curso de capacitacin durar 8 semanas. En cada semana se dictar una clase terica y habr dos talleres prcticos, siendo cada encuentro de 4 horas reloj cada uno (6 horas ctedra). Propuesta didctica En las clases tericas se introducen los conceptos fundamentales de programacin que los capacitandos deben adquirir, a la vez que se discuten la implementacin de estos conceptos en el lenguaje Gobstones, y las motivaciones pedaggicas que sustentan dicha implementacin. Pgina 4 de 8 Los talleres prcticos sirven como refuerzo de las clases tericas y tienen dos objetivos principales. El primero es que los capacitandos ejerciten los conceptos de programacin en el lenguaje Gobstones, de forma tal que puedan programar con fluidez. El segundo es discutir la forma de transmitir estos conceptos fundamentales a los alumnos en el aula, haciendo hincapi en el concepto a transmitir y no en la herramienta utilizada (que en nuestro caso es Gobstones). A continuacin se exponen los temas a tratar en cada semana: Semana 1 1. Presentacin del curso. Instalacin de PyGobstones (el sistema que implementa el lenguaje Gobstones). Objetivos del curso. Conceptos que el alumno de la escuela secundaria debera aprender. 2. Elementos de Gobstones: tablero, cabezal, bolitas, colores, etc. Comandos Poner, Mover, Sacar. Procedimiento Main. Documentacin y uso de comentarios. 3. Discusin de conceptos. Programacin imperativa. Comandos Gobstones vs instrucciones imperativas. Memoria Fsica vs. Tablero. Ventajas de la documentacin. 4. Debate. Por qu usar programacin imperativa?, Por qu utilizar un tablero? Semana 2 1. Contenidos: Parcialidad y precondiciones. BOOM y errores lgicos. Procedimientos. Parmetros y argumentos. Alcance de los parmetros. Divisin en subtareas: reutilizacin de cdigo, abstraccin. Estrategias de programacin top-down vs. bottom-up. 2. Discusin de conceptos. Precondiciones vs manejo de errores (cundo, dnde y porqu utilizar uno o el otro). Estado inicial de un programa. 3. Debate. Por qu los tableros iniciales son aleatorios? Cmo fomentar la abstraccin en los alumnos? Cmo lograr que un alumno divida su problema en subproblemas?. Semana 3 1. Contenidos: Alternativa condicional (if-then-else). Valores de verdad (bool) y numricos. Operaciones de consulta del tablero (puedeMover, hayBolitas, nroBolitas). Valores de colores y direcciones. Operaciones provistas por el lenguaje. Introduccin a expresiones. Repeticion indexada. Indices y Rangos. 2. Discusin de conceptos. Precondiciones y alternativa condicional (cundo, dnde y porqu usar uno o el otro). Comandos vs. operaciones (i.e., ejecucin vs. evaluacin de estado). Repeticin finita pero no acotada. Robustez de un programa ante cambios (uso de repeat vs. copiar/pegar). Pgina 5 de 8 3. Debate. Por qu separar los conceptos de comando y operacin? Por qu es necesaria la repeticin finita? Cmo se puede fomentar la calidad expresiva de un programa? Semana 4 1. Contenidos: Valores, expresiones y tipos. Formalizacin rigurosa de la alternativa condicional y la repeticin indexada utilizando expresiones y tipos. Funciones. 2. Discusin de conceptos. Computo de valores. Comandos y operaciones como procedimientos y funciones provistos por el lenguaje. Uso de funciones para brindar expresividad y abstraccin. Simulacin de constantes. Diferencias entre estado vs denotacin. 3. Debate. Por qu las funciones son "puras" (i.e. no modifican el estado del tablero)?. Por qu es importante dividir los cmputos denotacionales de los operacionales? Por qu es necesario formalizar las expresiones y qu utilidad tienen los tipos? Semana 5 1. Contenidos: Repeticin condicional (while). Propsito de ciclo (i.e., invariante de un ciclo). Recorridos bsicos del tablero. Esquema general de recorrido. Recorridos parciales del tablero. 2. Discusin de conceptos. Terminacin y guarda. Parcialidad por no terminacin. Recorridos de estructuras. Casos de borde. Uso de marcas para guardar estados. Pureza de las funciones para ocultar las marcas. 3. Debate. Por qu es necesaria la repeticin condicional y no alcanza con la indexada? Cules son las ventajas de las precondiciones en los recorridos? Por qu no anidar repeticiones? Cul es el objetivo del propsito de ciclo? Semana 6 1. Contenidos. Variables. Alcance de los distintos identificadores (parmetros, ndices y variables). Inicializacin. Propsito de una variable. Recorridos con variables: acumuladores, contadores, etc. 2. Discusin de conceptos. Parmetros vs. variables vs. ndices, diferencias semnticas. Prohibicin de variables globales. Inicializacin autmatica. Tablero como nico espacio de memoria fsica. 3. Debate. Por qu las variables se consideran como expresiones denotacionales y no cmo espacios de memoria? Por qu las variables se inicializan en BOOM y no en basura o en un valor conocido? Por qu las variables globales estn prohibidas? Pgina 6 de 8 Semana 7 1. Contenidos. Repaso de conceptos fundamentales y cmo se relacionan: divisin en subtareas, propsitos, precondiciones, documentacin, robustez. Expresiones booleanas vs alternativas condicionales. 2. Ejercicios tipo de recorridos. Funciones vs. variables. 3. Discusin de todos los conceptos aprendidos Semana 8 Clase de integracin resolviendo un ejercicio completo en el que se programa una mini- aplicacin. Diseo de trabajos prcticos en Gobstones.
Presentacin de materiales de acuerdo con la modalidad del curso El esquema de clase prctica estar centrado en los contenidos dados en la clase terica anterior. Se da un breve repaso de los conceptos, enumerando algunos ejemplos y aumentando gradualmente su grado de abstraccin. Dependiendo de la evolucin de los capacitandos en el tema especfico (por ser la primera o segunda clase prctica luego de la teora) se proceder a realizar diferentes actividades durante la clase: 1. Ejercicios sobre la computadora. Para ayudarlos a entender la herramienta, los conceptos asociados. 2. Resolucin participativa de ejercicios, en pizarrn. 3. Discusin de errores comunes en los que los capacitandos deberan poner atencin. 4. Experiencia de los capacitandos con los mismos conceptos en sus aulas. 5. Solicitar que los capacitandos piensen ejercicios similares a los de la gua actual que ellos consideren que aplican. Discutir su utilidad y/o dificultades que pudieran surgir, con objetivos de ejercitacin y evaluacin. 6. Entregas escritas, individuales y/o grupales, de ejercicios cortos similares a los vistos en clase. Con objetivos de ejercitacin, evaluacin y autoevaluacin. 7. Presentacin de solucin al curso. Que los capacitandos (por turnos) presenten a toda la clase, su solucin propuesta para un ejercicio. 8. Resolucin de ejercicios terico-prcticos con PyGobstones, con objetivos de ejercitacin y autoevaluacin. 9. Mostrar en pantalla con uso de caon, la resolucin de un ejercicio con mayor grado de abstraccin. Con objetivos de mostrar el uso de los conceptos aprendidos y como se Pgina 7 de 8 utilizan en la herramienta propuesta. Que los capacitandos perciban el estmulo de motivacin que genera ver resultados de la resolucin de ejercicios ms complejos. Bibliografa "El nombre verdadero de la programacin. Una concepcin de la enseanza de la programacin para la Sociedad de la Informacin", Martnez Lpez, Pablo E., Bonelli, Eduardo A., Sawady O'Connor, Federico A. 10mo Simposio sobre la Sociedad de la Informacin, dentro de las 41ras Jornadas Argentinas de Informtica (JAIIO). Gabriel Baum y Nora Sabelli, editores; Facultad de Informtica, UNLP. Setiembre 2012. "Introduccin a la programacin en Gobstones", Martnez Lpez, Pablo E.; Bonelli, Eduardo A. Apuntes de clase de la materia "Introduccin a la Programacin", Tecnicatura en Informtica, UNQ. Mayo 2010. "Introduccin a la programacin, para la carrera de Licenciatura en Artes y Tecnologas", Martnez Lpez, Pablo E., Sawady O'Connor, Federico A. Universidad Virtual de Quilmes, 2012. ISBN en trmite.
Evaluacin En cada encuentro prctico, los docentes evaluarn el desarrollo de cada capacitando, tanto en los contenidos como en las habilidades desarrolladas en la programacin con Gobstones. Estas evaluaciones servirn tanto para establecer una calificacin de concepto de los capacitandos como de retroalimentacin para que los docentes realicen modificaciones y ajustes en la planificacin de las tareas. Para obtener la aprobacin del curso, los capacitandos debern obtener una calificacin de aprobado que asegure el setenta por ciento de los contenidos mnimos en todas las instancias de evaluacin: 1. Calificacin de concepto. 2. Elaboracin individual de una gua de ejercicios de Gobstones (y resolucin de la misma) para utilizarse con estudiantes de nivel secundario. 3. Elaboracin individual del enunciado de un examen que podra ser utilizado en el curso de Laboratorio de programacin 1. Resolucin de este examen. 4. Una evaluacin prctica de aptitud sobre instalacin y uso de PyGobstones, realizada en una computadora por capacitando. 5. Una evaluacin personal integradora de los contenidos tericos y prcticos. Pgina 8 de 8 Si el capacitando no obtuviese la aprobacin en alguna de las mencionadas instancias, tendr posibilidad de recuperacin donde aplique la devolucin de los docentes.