Post on 25-Sep-2018
transcript
El Proyecto Cupi2Buscando nuevas maneras de enseñar a programar
Jorge VillalobosRubby Casallas
Marcela HernándezIngeniería de Sistemas y Computación
Universidad de los Andes
Mayo 3 2006
Objetivo
Presentar un informe sobre el estado actual del proyecto
Agenda
Contexto del proyecto APO1APO2DATOSConclusionesPreguntas
Contexto del proyectoBuscando nuevas maneras de enseñar a programar
http://cupi2.uniandes.edu.co/
Etapas:2003-2004: Levantamiento de información2004-2: Diagnóstico2004-2: Marco conceptual2004-2: Diseño APO12005-1: Piloto APO12005-2: 2do piloto APO1, piloto APO22006-1: Masificación APO1, 2do piloto APO2, piloto APO12006-2: Estable APO1, masificación APO2, 2do piloto DATOS2007-1: Cursos estables + piloto ISOFT
Ejes conceptualesprocesos desoftware modelaje y solución
de problemas
tecnología yprogramación
herramientas deprogramación
algorítmica
técnicas de programacióny metodologías
elementos estructuradoresy arquitecturas
Estructura de niveles
Semana Nivel Eje1 Eje2
Eje3 Eje4 Eje5 Eje6 Eje7 Entrenadores Evaluación
C H C H C H C H C H C H C H
1 1
2 1
3 1 ***
4 2
5 2 ***
6 3
7 3
8 3 ***
9 4
10 4 ***
11 5
12 5 ***
13 6
14 6
15 6 ***
ejercicio
APO1:123456 APO2:
789
101112 DATOS:
131415161118
Generación incremental de habilidades
Cupi2: materiales de soporte
El enfoque implica el desarrollo y mantenimiento de una gran cantidad de materiales:
Ejercicios y ejemplosEntrenadoresHojas de trabajoTalleresTutorialesLibros
Seminarios de inducción de profesores y monitores
La comunidad Cupi2: profesores
La comunidad Cupi2: profesores
La comunidad Cupi2: estudiantes
PublicacionesJ. Villalobos, R. Casallas, “Teaching/Learning a First Object-Oriented Programming Course outside the CS Curriculum”, ECOOP 10th Workshop on Pedagogies and Tools for the Teaching andLearning of Object Oriented Concepts, Nantes, Francia, Julio 2006.
J. Villalobos, R. Casallas, L. Osorio. "Looking for a New Approach toTeach/Learn a First Computer-Programming Course". InternationalConference on Engineering and Computer Education (ICECE), Madrid, España, Noviembre 2005.
J. Villalobos, R. Casallas, K. Marcos. “El Reto de Diseñar un Primer Curso de Programación de Computadores". XIII Congreso Iberoamericano de Educación Superior en Computación, Cali, Colombia, Octubre 2005.
J. Villalobos, D. Pérez, J. Castro, C. Jiménez. “Construcción de un Laboratorio Flexible de Estructuras de Datos". XIII Congreso Iberoamericano de Educación Superior en Computación, Cali, Colombia, Octubre 2005.
Agenda
Contexto del proyectoAPO1APO2DATOSConclusionesPreguntas
APO1
35 secciones (27 profesores de cátedra)Más de 50 monitoresTarde, pero por fin con libro!Diseño detallado de los niveles
Problemas pequeños =>análisis == diseñoarquitectura simple predefinidaHabilidades básicas de análisis, modelado y programación
APO1 – Nivel 1Problemas, soluciones y programas
Habilidades elementales de análisisClases, objetos, métodos, atributosArquitectura básica de un programaAlgunos tipos simplesOperadores y expresiones simplesAsignaciónInvocación de métodosIntroducción a Java y EclipseUML: diagrama de clases
APO1 – Nivel 2Definición de situaciones y manejo de casos
Expresiones lógicas, operadores relacionales, operadores lógicosInstrucciones condicionalesUso de constantesHabilidades básicas de modelado y asignación de responsabilidadesConstructores, modificadores, analizadoresConcepto de variableSe refuerza el concepto de paso de parámetros
APO1 – Nivel 2Definición de situaciones y manejo de casos
Entrenadores
APO1 – Nivel 3Manejo de grupos de atributos
Contenedoras de tamaño fijo: arreglosContenedoras de tamaño variable: vectores (clase ArrayList)Instrucciones repetitivas (for, while)Patrones de algoritmo para ciclosRepresentación de grupos en UMLLectura y uso de documentación Javadoc
APO1 – Nivel 3Manejo de grupos de atributos
Entrenadores
APO1 – Nivel 3Manejo de grupos de atributos
Entrenadores
APO1 – Nivel 4Definición y cumplimiento de responsabilidades
Contrato, precondición y postcondiciónExcepcionesTécnicas de asignación de responsabilidades (patrón experto)Uso de Javadoc para especificar un contratoInstrucciones try-catch, throwDividir y conquistar aplicado a requerimientos funcionales
APO1 – Nivel 5Construcción de la interfaz gráfica
Arquitectura de la interfaz de usuarioVentanas, paneles, etiquetas, zonas de texto, eventos, botones, distribuidores gráficosAsignación de responsabilidades a cada elemento de la interfazFramework swing de JavaEl método main() en Java
APO1 – Nivel 6Estructuras de dos dimensiones y persistencia
Contenedoras de dos dimensiones: matricesPersistencia básica para iniciar el estado del modelo del mundo (Properties)Construcción de un programa completo
APO1 – Nivel 6Estructuras de dos dimensiones y persistencia
Entrenadores
Agenda
Contexto del proyecto APO1APO2DATOSConclusionesPreguntas
APO2
2do piloto del curso4 secciones (RuC, MH, MS, CA)Borrador de diseño de los nivelesEjemplos completos para todos los nivelesEntrenadores
Problemas pequeños =>análisis != diseñodiseño dado en cada ejercicioarquitectura simple predefinidaprimeros requerimientos no funcionales
APO2 – Nivel 7Búsqueda, ordenamiento y pruebas automáticas
Búsqueda secuencial y binariaAlgoritmos no recursivos de ordenamientoConstrucción de pruebas automáticas en JUnit y su uso en el proceso de desarrolloInvariante de clase y su documentación en JavadocInstrucción assert en JavaComponentes swing para visualización de grupos
APO2 – Nivel 7Búsqueda, ordenamiento y pruebas automáticas
Entrenadores
APO2 – Nivel 8Archivos y excepciones
Archivos secuenciales de texto, para hacer persistir el estado del modelo del mundoManejo y declaración de tipos de excepcionesUso del depurador en Eclipse
APO2 – Nivel 9Estructuras lineales encadenadas
Listas sencillamente y doblemente encadenadasOtros distribuidores gráficos: FlowLayout, GridBagLayoutOtros componentes gráficos de swing
APO2 – Nivel 9Estructuras lineales encadenadas
Entrenadores
APO2 – Nivel 10Herencia e interfaces
Herencia, clases abstractas, redefinición de métodos, alcance dinámico, polimorfismoInterfaces como mecanismo de desacoplamientoDibujo básico en interfaces gráficasManejo de eventos del ratón y de menús
APO2 – Nivel 10Herencia e interfaces
Entrenadores
APO2 – Nivel 11Estructuras y algoritmos recursivos
Árboles binarios, árboles binarios ordenados, árboles n-ariosDesarrollo de métodos recursivosUso de árboles para representar información ordenada y estructuras de decisión
APO2 – Nivel 12Persistencia y distribución básicas
BD
servidor
socket
JDBC
socket
APO2 – Nivel 12Persistencia y distribución básicas
Entrenadores
Agenda
Contexto del proyecto APO1APO2DATOSConclusionesPreguntas
DATOS
Piloto del curso (JV, PB)Borrador de diseño de los niveles
Problemas medianos =>análisis != diseñotodo gira alrededor del diseño (medir, proponer, justificar)arquitectura simple diseñada por el estudiantealgorítmica de estructuras de datos no trivialesnuevos requerimientos no funcionalesproyectos construidos por componentes
LED & Cupi2Collections
DATOS – Nivel 13Complejidad y técnicas básicas de diseño
Complejidad de algoritmosDel análisis al diseñoDiseño bajo restriccionesLo representado vs. la representaciónTaxonomía y algorítmica de estructuras linealesUso de un IDE para la construcción de la interfazFramework Collections de JavaTécnicas básicas de simulación
DATOS – Nivel 14Estructuras de acceso directo
Diseño bajo restriccionesLo representado vs. la representaciónTablas de hashing, diccionarios, conjuntos y mapasClases genéricas y su implementación en JavaManejo de appletsManejo y empaquetamiento de jarsUso de ant
DATOS – Nivel 14Estructuras de acceso directo
Entrenadores
DATOS – Nivel 15Estructuras recursivas
Árboles AVLÁrboles de sintaxisAlgoritmo de HuffmanArquitectura MVC y el patrón observadorDiseño bajo restriccionesAlgorítmica no trivial de estructuras arborescentesHeapsImplementación de árboles binariosUso de “librerías”
almacenamientomemoriaprincipal
ÍndicesAVL
DATOS – Nivel 15Estructuras recursivas
Entrenadores
DATOS – Nivel 15Estructuras recursivas
Entrenadores
DATOS – Nivel 16Estructuras recursivas
Árboles B y 2-3XML y DOMDesarrollo incrementalDiseño bajo restriccionesComponentes gráficos de visualización de jerarquías (JTree)
almacenamientomemoriaprincipal
ÍndicesAVL
Índices2-3
XML
Huffman + Xerces
DATOS – Nivel 17Estructuras no lineales
Grafos dirigidosDiseño de estructuras de datos para implementar un algoritmo no trivialAlgorítmica de búsqueda de caminos y óptimos (ciclos, Hamilton, Euler, etc.)Algorítmica de manejo de grafosDijkstra y árboles de recubrimiento
DATOS – Nivel 18Diseño de software
Arquitecturas simples de múltiples capasComponentes WEB (servlets)Construcción de aplicaciones por composición de componentesPatrones básicos de diseño
servidor
miniDBC
WEB
servlets
driver
Cupi2Collections
Oráculo
Agenda
Contexto del proyecto APO1APO2DATOSConclusionesPreguntas
Conclusiones
Todos los indicadores son muy positivosHay todavía aspectos por mejorar en los tres cursosEn el ciclo básico de programación se logra llegar mucho más adelante que antesLos estudiantes terminan con una visión más amplia de la problemática de desarrollo con habilidades a distintos niveles de profundidad
Es una oportunidad para replantear los cursos que siguen: ISoft, ArqSw, etc.
Conclusiones
Cómo mantener estos cursos en el estado estable?
Agenda
Contexto del proyecto APO1APO2DATOSConclusionesPreguntas