Cupi2 2006 1 Reunion Depto

Post on 17-Feb-2017

1.284 views 0 download

Transcript of Cupi2 2006 1 Reunion Depto

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 ! APO1! APO2! DATOS! Conclusiones! Preguntas

Contexto del proyecto! Buscando nuevas maneras de enseñar a programar

! http://cupi2.uniandes.edu.co/

! Etapas:" 2003-2004: Levantamiento de información" 2004-2: Diagnóstico" 2004-2: Marco conceptual" 2004-2: Diseño APO1" 2005-1: Piloto APO1" 2005-2: 2do piloto APO1, piloto APO2" 2006-1: Masificación APO1, 2do piloto APO2, piloto APO1" 2006-2: Estable APO1, masificación APO2, 2do piloto DATOS" 2007-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 ejemplos" Entrenadores" Hojas de trabajo" Talleres" Tutoriales" Libros

! Seminarios de inducción de profesores y monitores

La comunidad Cupi2: profesores

La comunidad Cupi2: profesores

La comunidad Cupi2: estudiantes

Publicaciones! J. 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 proyecto! APO1! APO2! DATOS! Conclusiones! Preguntas

APO1

! 35 secciones (27 profesores de cátedra)! Más de 50 monitores! Tarde, pero por fin con libro!! Diseño detallado de los niveles

! Problemas pequeños =>" análisis == diseño" arquitectura simple predefinida" Habilidades básicas de análisis, modelado y programación

APO1 – Nivel 1Problemas, soluciones y programas

! Habilidades elementales de análisis

! Clases, objetos, métodos, atributos

! Arquitectura básica de un programa

! Algunos tipos simples! Operadores y expresiones

simples! Asignación! Invocación de métodos! Introducción a Java y Eclipse! UML: diagrama de clases

APO1 – Nivel 2Definición de situaciones y manejo de casos

! Expresiones lógicas, operadores relacionales, operadores lógicos

! Instrucciones condicionales! Uso de constantes! Habilidades básicas de

modelado y asignación de responsabilidades

! Constructores, modificadores, analizadores

! Concepto de variable! Se 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: arreglos

! Contenedoras de tamaño variable: vectores (clase ArrayList)

! Instrucciones repetitivas (for, while)

! Patrones de algoritmo para ciclos

! Representación de grupos en UML

! Lectura 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ón

! Excepciones! Técnicas de asignación de

responsabilidades (patrón experto)

! Uso de Javadoc para especificar un contrato

! Instrucciones try-catch, throw! Dividir y conquistar aplicado a

requerimientos funcionales

APO1 – Nivel 5Construcción de la interfaz gráfica

! Arquitectura de la interfaz de usuario

! Ventanas, paneles, etiquetas, zonas de texto, eventos, botones, distribuidores gráficos

! Asignación de responsabilidades a cada elemento de la interfaz

! Framework swing de Java! El método main() en Java

APO1 – Nivel 6Estructuras de dos dimensiones y persistencia

! Contenedoras de dos dimensiones: matrices

! Persistencia 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 ! APO1! APO2! DATOS! Conclusiones! Preguntas

APO2

! 2do piloto del curso! 4 secciones (RuC, MH, MS, CA)! Borrador de diseño de los niveles! Ejemplos completos para todos los niveles! Entrenadores

! Problemas pequeños =>" análisis != diseño" diseño dado en cada ejercicio" arquitectura simple predefinida" primeros requerimientos no funcionales

APO2 – Nivel 7Búsqueda, ordenamiento y pruebas automáticas

! Búsqueda secuencial y binaria! Algoritmos no recursivos de

ordenamiento! Construcción de pruebas

automáticas en JUnit y su uso en el proceso de desarrollo

! Invariante de clase y su documentación en Javadoc

! Instrucción assert en Java! Componentes 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 mundo

! Manejo y declaración de tipos de excepciones

! Uso del depurador en Eclipse

APO2 – Nivel 9Estructuras lineales encadenadas

! Listas sencillamente y doblemente encadenadas! Otros distribuidores gráficos: FlowLayout, GridBagLayout! Otros 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, polimorfismo

! Interfaces como mecanismo de desacoplamiento

! Dibujo básico en interfaces gráficas

! Manejo 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-arios

! Desarrollo de métodos recursivos

! Uso 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 ! APO1! APO2! DATOS! Conclusiones! Preguntas

DATOS

! Piloto del curso (JV, PB)! Borrador de diseño de los niveles

! Problemas medianos =>" análisis != diseño" todo gira alrededor del diseño (medir, proponer, justificar)" arquitectura simple diseñada por el estudiante" algorítmica de estructuras de datos no triviales" nuevos requerimientos no funcionales" proyectos construidos por componentes

! LED & Cupi2Collections

DATOS – Nivel 13Complejidad y técnicas básicas de diseño

! Complejidad de algoritmos! Del análisis al diseño! Diseño bajo restricciones! Lo representado vs. la

representación! Taxonomía y algorítmica de

estructuras lineales! Uso de un IDE para la

construcción de la interfaz! Framework Collections de

Java! Técnicas básicas de

simulación

DATOS – Nivel 14Estructuras de acceso directo

! Diseño bajo restricciones

! Lo representado vs. la representación

! Tablas de hashing, diccionarios, conjuntos y mapas

! Clases genéricas y su implementación en Java

! Manejo de applets! Manejo y

empaquetamiento de jars! Uso de ant

DATOS – Nivel 14Estructuras de acceso directo

Entrenadores

DATOS – Nivel 15Estructuras recursivas

! Árboles AVL! Árboles de sintaxis! Algoritmo de Huffman! Arquitectura MVC y el

patrón observador! Diseño bajo restricciones! Algorítmica no trivial de

estructuras arborescentes! Heaps! Implementación de

árboles binarios! Uso de “librerías”

almacenamientomemoriaprincipal

ÍndicesAVL

DATOS – Nivel 15Estructuras recursivas

Entrenadores

DATOS – Nivel 15Estructuras recursivas

Entrenadores

DATOS – Nivel 16Estructuras recursivas

! Árboles B y 2-3! XML y DOM! Desarrollo incremental! Diseño bajo restricciones! Componentes gráficos de

visualización de jerarquías (JTree)

almacenamientomemoriaprincipal

ÍndicesAVL

Índices2-3

XML

Huffman + Xerces

DATOS – Nivel 17Estructuras no lineales

! Grafos dirigidos! Diseño de estructuras de

datos para implementar un algoritmo no trivial

! Algorítmica de búsqueda de caminos y óptimos (ciclos, Hamilton, Euler, etc.)

! Algorítmica de manejo de grafos

! Dijkstra y árboles de recubrimiento

DATOS – Nivel 18Diseño de software

! Arquitecturas simples de múltiples capas! Componentes WEB (servlets)! Construcción de aplicaciones por

composición de componentes! Patrones básicos de diseño

servidor

miniDBC

WEB

servlets

driver

Cupi2Collections

Oráculo

Agenda

! Contexto del proyecto ! APO1! APO2! DATOS! Conclusiones! Preguntas

Conclusiones

! Todos los indicadores son muy positivos! Hay todavía aspectos por mejorar en los tres

cursos! En el ciclo básico de programación se logra

llegar mucho más adelante que antes! Los 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 ! APO1! APO2! DATOS! Conclusiones! Preguntas