Este documento es una revisión de los resultados que arrojó el curso “Introducción al Manejo del Software Estadístico R”, edición 2012. Adopta un estilo progresivo y didáctico en el que se muestran los pasos realizados para ordenar y analizar los datos obtenidos, a fin de que se puedan reproducir libremente.
El software estadístico R es una de las plataformas para análisis estadísticos de mayor crecimiento en los últimos años y es considerado como la lingua franca de facto de la estadística por profesionales en todo el mundo. Al ser un software de interfaz programada, resulta muy poco accesible para usuarios sin contacto previo con este tipo de herramientas. Para facilitar el acceso a esta herramienta se ha creado el curso IMSER (Introducción al Manejo del Software Estadístico R). Se puede considerar este como un curso de introducción a la programación, orientado a cualquier persona, con o sin formación relacionada. Se trata de un curso completamente a distancia y sin obligaciones de horarios, accesible a cualquier persona vinculada a la UdelaR, quienes por diferentes motivos no pueden participar de instancias presenciales. La propuesta se inspiró fuertemente en la experiencia innovadora de los MOOC (Massive Open Online Courses), tomando los elementos clave de los mismos: lecciones en video online, ejercicios con corrección automática y foros de intercambio. La propuesta metodológica hace fuerte énfasis en la autogestión, dando la posibilidad de aprender del ensayo y error a través un número ilimitado de intentos y un sistema propio de corrección automática de ejercicios. Los resultados obtenidos han sido muy alentadores, con evaluaciones de satisfacción y aprendizaje ampliamente positivas. Esperamos continuar con esta experiencia en años subsiguientes y además poder transmitir lo aprendido a otras propuestas educativas de la Universidad.
El curso IMSER en su edición 2012 tuvo grandes cambios respecto a su versión anterior. Estos cambios fueron motivados por la experiencia innovadora de los llamados MOOCs (Massive Open Online Courses). Estos son cursos abiertos que se desarrollan por completo en línea, estructurados de tal forma que pueden ser seguidos por miles de estudiantes desde cualquier parte del mundo. Esto ha sido posible y muy exitoso gracias a ciertas claves: lecciones, ejercicios con corrección automática y foros de intercambio. Vale la pena profundizar en las características de estos tres elementos.
Las lecciones en video a diferencia de lo que puede ofrecer un libro, resultan sumamente fáciles de seguir para los estudiantes, ya que en ellas pueden ver al profesor expresándose de forma espontánea, tal como puede ocurrir en un salon de clases. Es cierto que en relación a un salón de verdad está en desventaja, ya que no es interactivo (sin embargo esta falta es compensada en buena parte a través de los foros de intercambio; ver más abajo). Sin embargo tiene una ventaja que no es nada menor: se puede pausar y volver a repetir cualquier parte del video, de forma que el estudiante puede ir a su propio ritmo y sin dejar de lado contenido alguno. Muchos han destacado esta virtud como muy importante en esta modalidad de cursos online.
Estos incluyen cuestionarios online de (típicamente de múltiple opción) y también ejercicios más elaborados (que frecuentemente incluyen tareas de programación). En algunos casos la corrección automática no es posible, por lo que se recurre a un sistema llamado “peer review” en el que los estudiantes corrigen las tareas de sus compañeros (esto es posible gracias a la cualidad “masiva” de estos cursos). La necesidad de un sistema de corrección automática surge del hecho de que son miles de estudiantes los que participan, por lo que es imposible para los profesores hacer una corrección personalizada de las tareas. Este sistema por otro lado, aporta la ventaja muy importante de que cada estudiante puede experimentar, probar y tener una retroalimentación inmediata respecto a su trabajo, de forma que puede perfeccionarse en el momento y en la medida que desee.
Los MOOC son cursos masivos de miles de estudiantes y el uso de buenos foros de intercambio es una forma inteligente de utilizar estos números en pos del aprendizaje. Frente a cualquier pregunta que surja de ejercicios o lecciones y volcada en los foros, es altamente probable que otro estudiante la lea y la responda, por el simple hecho de que en cualquier momento cientos o miles de estudiantes estarán conectados y leyendo los foros. Por esta razón se hace un gran énfasis en el uso activo de los foros en estos cursos. Esto implica que el software (y los servidores) que respaldan este sistema deben ser eficientes y muy bien diseñados. En el sitio coursera.org se utiliza un sistema de foros inspirado en reddit.com o stackoverflow.com, sitios de probado éxito, logrando una experiencia sumamente alentadora.
En el sitio web de la plataforma coursera se da una explicación más elaborada de estos elementos así como la postura pedagógica adoptada por este emprendimiento.
No nos hemos planteado crear un verdadero MOOC, pero sí aplicar estos conceptos en la medida de lo posible para la realidad de la UdelaR. En primer lugar, se crearon lecciones en video, las cuales están disponibles de forma abierta a través del sitio YouTube. Por otro lado, se aprovecharon las características de la plataforma EVA para crear cuestionarios rápidos, los que se realizan al terminar cada lección. Adicionalmente, se crearon ejercicios de programación a través de repartidos. Estos están fuertemente inspirados en el curso Machine Learning. Para estos se desarrolló un sistema de corrección automática propio (en lenguaje R), con el cual los estudiantes pueden evaluar de forma inmediata su trabajo y saber de antemano que nota obtendrán antes de entregar los resultados. Finalmente se agregó un servicio externo gratis para los foros de intercambio, escogido debido a que presenta características deseables, similares a las encontradas en la plataforma coursera (valoración de preguntas y respuestas, ordenamiento por fecha o valoración, etiquetado de preguntas y reconocimiento de sintaxis markdown).
A nuestro entender, esta es la primer iniciativa a nivel de país con estas características que tiene como público objetivo cualquier actor vinculado a la UdelaR.
Lograr que los participantes adquieran los conocimientos básicos suficientes para que puedan continuar usando y aprendiendo R de forma autónoma y efectiva.
Puede considerarse como un curso de introducción a la programación para personas con escasa o nula formación en esta materia.
Los análisis numéricos se hicieron con el software R. El archivo de código fuente de este texto se puede bajar de aquí. La versión de R utilizada fue la siguiente:
R.version[c(1, 13)]
## _
## platform x86_64-pc-linux-gnu
## version.string R version 2.15.2 (2012-10-26)
Se separa el análisis en dos partes: las notas de todas las tareas realizadas (cuestionarios rápidos, repartidos y parciales) y la evaluación de los estudiantes.
El archivo notas.rda
contiene los datos de las notas de todas las tareas asignadas durante el curso (de forma anónima), el cual se puede bajar de este link (incluye además las funcioncillas auxiliares f
y g
).
Una vez bajado el archivo se puede cargar con el siguiente comando (debe modificarse la ruta absoluta o relativa para que R lo encuentre por supuesto):
options(encoding = "utf8") # Esto es por las dudas solamente
load("~/Dropbox/IMSER/analisis/notas.rda")
Alternativamente, se puede utilizar el archivo de código fuente analisis-aux.R
(disponible aquí) el cual toma los datos originales y los reordena para obtener la data.frame
“notas” que utilizamos aquí, además de las funciones f
y g
.
Empezamos por contar la cantidad de estudiantes que terminaron el curso (cuya nota final es mayor a 0):
sum(notas$finales > 0)
## [1] 35
Hay unos 35 estudiantes que completaron el curso (de 114 que figuran en la plataforma EVA); esto es un bajo porcentaje del total (un 30%). Sin embargo este es un valor alto si comparamos con el típico “MOOC”, en los que este curso se ha inspirado, los que tienen unas tasas de completitud menores a 20% y típicamente cercanas al 10%.
Por lo tanto, consideramos que hemos logrado una alta tasa de completitud del curso. Más adelante mostraremos en qué medida estos estudiantes consideran que han aprendido con el curso, lo que es más relevante aún que la completitud.
Veamos ahora la cantidad de estudiantes agrupados según los distintos resultados posibles del curso (perder, ganar, ganar con bonus para el examen o exonerar):
# table(notas$result)
barplot(table(notas$result), col = 1:4)
La gran mayoría de los que han ganado el curso de hecho exoneraron el examen (28 de 35); en el mejor de los casos indica que alcanzaron un gran nivel de aprendizaje, en el peor, que el curso es muy poco exigente. Del total unos 79 perdieron, 2 ganaron con derecho a bonus en el examen y 5 ganaron sin esta distinción.
Las notas finales en escala UdelaR confirman que a quienes han terminado el curso les ha ido bien. Las notas son altas, con un promedio y mediana de 10; incluso la nota menor es alta, un 8:
summary(notas$finales[notas$finales > 0])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 8.0 9.5 10.0 10.1 11.0 12.0
(la obtención de este valor se muestra en el archivo analisis-aux.R
mencionado anteriormente)
Veamos ahora cómo se distribuye este valor. Para esto un histograma puede servir, pero en este caso particular resulta más útil una curva de proporción acumulada (una suerte de función de distribución acumulada).
El siguiente código realiza una curva de este tipo con 31 puntos (i.e.: 31 valores de PTC consecutivos):
n <- 31
y <- numeric(n)
v <- seq(0, 100, len = n)
for (i in 1:n) y[i] <- sum(notas$ptc <= v[i])/length(notas$ptc)
plot(y ~ v, type = "o", lwd = 2, xlab = "Porcentaje de Tareas Completadas (PTC)",
ylab = "Proporción acumulada de estudiantes", ylim = 0:1)
# Para visualizar la separación de los 3 tramos en la gráfica:
abline(v = c(20, 90), col = "gray", lty = 3)
Debe tenerse en mente que en los valores más comunes de PTC se espera encontrar la máxima pendiente (los puntos en los que la curva crece más “rápidamente” o “saltos”).
Se ven dos saltos notorios: los valores de PCC más importantes (las dos modas de la distribución). Una ocurre para los valores de PTC un poco más bajos que el 20% y la otra es cercana al 100%. Las tendencias son, o bien hacer muy pocas tareas (abandono rápido del curso, ver abajo) o de hacer prácticamente todo. También hay una gran cantidad de casos intermedios que sin registrar saltos grandes en esta gráfica tienen un peso importante en el total:
c(primer.tramo = sum(notas$ptc < 20), segundo.tramo = sum(notas$ptc > 20 & notas$ptc <
90), tercer.tramo = sum(notas$ptc > 90))
## primer.tramo segundo.tramo tercer.tramo
## 60 22 32
De todas formas, si contamos despúes del primer gran abandono, siguen siendo más los que llegaron a más del 90% que los que abandonaron.
Para ver el abandono a través del tiempo, podemos ver cuántos estudiantes completaron los cuestionarios a medida que iban avanzando las lecciones. Para eso sumo la cantidad de entradas con valores mayores a cero para cada variable “cuest_” de la data.frame
notas:
ccomp <- sapply(notas[, cuestOrd], function(x) sum(x > 0))
# Suma la cantidad de estudiantes que completaron cada cuestionario
names(ccomp) <- gsub("cuest_", "", names(ccomp))
barplot(ccomp)
Se nota un descenso importante, relativamente constante a través del tiempo (i.e.: los cuestionarios), excepto por el pasaje abrutpo entre las unidades 1 y 2, en el que parece que ocurre un abandono masivo de estudiantes. Este es el primer gran abandono que se mencionaba un poco más arriba. Notese que la figura no registra un abandono incluso anterior: entre casi 130 estudiantes, sólo poco más de 80 completaron el cuestionario 1.1. (es decir, aproximadamente 50 estudiantes abandonaron antes de empezar).
Posiblemente el abandono entre las unidades 1 y 2 explique la gran cantidad de estudiantes con PTCs bajos (el primero de los dos grandes saltos de la figura anterior). Ya se ha mencionado anteriormente que si se consideran sólo a los estudiantes que han completado la primer tarea, el nivel de descerción medido es mucho más bajo que el 90%.
Si consideramos al repartido I como la “primer tarea”, podemos ver que esto también es cierto para este curso:
# Quiénes pasaron el repartido I:
pasan <- which(notas$rep_I > 0)
ccomp2 <- sapply(notas[pasan, cuestOrd], function(x) sum(x > 0))
names(ccomp2) <- gsub("cuest_", "", names(ccomp2))
barplot(ccomp2)
Podemos ver ahora que estos estudiantes más aplicados al curso hay abandonado menos y más gradualmente en comparación con el total. Si contamos cuantos de ellos/as terminaron el último cuestionario (el 6.3), vemos que alcanza un saludable 64%:
100 * sum(notas$cuest_6.3[pasan] > 0)/length(pasan)
## [1] 64.29
Un vistazo a la distribución de los PTC entre estos estudiantes nos muestra que abundan los valores altos:
hist(notas$ptc[pasan], breaks = 25)
summary(notas$ptc[pasan])
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 16.1 51.6 93.5 77.8 100.0 100.0
Aquí la mediana nos da una buena idea de los valores de PTC representativos de este grupo (el promedio está muy sesgado por valores extremos hacia la izquierda). Es bueno ver que la mediana está en un altísimo 93.5% de tareas completadas.
En el archivo analisis-aux.R
se incluye también la función g
, la cual sirve para visualizar en un sólo gráfico las distribuciones de las notas. Por ejemplo, si nos quedamos sólo con los que pasaron el repartido I:
g(notas[pasan, ])
En todos los casos las notas se expresan en porcentaje. Der./Medio: eje x es Cuestionarios y Repartidos; eje y es Parciales
Volviendo a utilizar la función f
(la que descarta los ceros para luego hacer el promedio) podemos ver el promedio de nota alcanzado para cada tarea:
promedios <- sapply(notas[sapply(notas, is.numeric)], f)
# names(promedios)
dotchart(promedios[-(1:6)], pch = 19, cex = 1.3)
Se puede ver que hay algunas tendencias más o menos evidentes:
En los tres tipos de tareas se evidencia que los temas más complicados terminaron siendo los últimos, tal como era esperable desde el principio (funciones, estructuras de control). Más abajo veremos que esto coincide con las opiniones vertidas en el formulario de evaluación final del curso.
Nota: en caso de incluir todos los elementos de promedios se está usando la función f
, por lo que se descartan las entradas con ceros, pero en las filas “prom_” esto no es así, ya que son promedios de promedios, éstos últimos hechos con todas las notas, incluyendo los ceros. Por esto las filas “prom_” parecen tan bajas en relación al resto de las notas en la dotchart.
Los datos de la evaluación final del curso se pueden ver o bajar de la web. En el primero de estos dos links se pueden ver las preguntas con las distintas opciones (en caso de ser multiple opción), así como algunos gráficos de google; en el segundo se puede descargar un archivo csv con las preguntas codificadas en números y es el que se usó para este documento.
El formulario fue respondido por unas 27 personas y en general presentaron un alto valor de PTC (porcentaje de tareas completadas).
Lo primero es la importación de datos, naturalmente:
encuesta <- read.csv2("~/Dropbox/IMSER/analisis/encuesta-final-2012.csv")
# Las columnas se corresponden con las preguntas del formulario:
summary(encuesta$ptc) # Altos valores de PTC ...
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 52.0 85.0 96.0 90.9 100.0 100.0
Como se puede ver además, la gran mayoría ha tenido una alta participación en el curso (sólo dos presentan PTCs cercanos al 50%).
Vemos cómo han percibido las distintas unidades del curso los estudiantes:
par(mfrow = c(2, 1))
barplot(table(encuesta$unidad.facil), main = "¿Qué unidad le resultó la más fácil?",
col = 1:6)
barplot(table(encuesta$unidad.dificil), main = "¿Qué unidad le resultó la más difícil?",
col = 1:6)
Como ya se evidenciaba, las unidades fueron aumentando en dificultad en general, si bien hay varios casos que salen de la norma en ambas preguntas del formulario.
A continuación, simplemente un vistazo al tiempo dedicado a los distintos tipos de tarea:
par(mfrow = c(3, 1))
hist(encuesta$min.cuest, main = "Minutos por cuestionario")
hist(encuesta$hrs.reps, main = "Horas por Repartido")
hist(encuesta$hrs.parcial[encuesta$hrs.parcial > 0], main = "Horas por Parcial")
Ya que hay muchos valores excepcionalmente altos, se optó por poner límites máximos. Se eligió 60 minutos para los cuestionarios y 25 horas para repartidos y parciales, como valores máximos de tiempo para las tres categorías. Las nuevas distribuciones se ven así:
par(mfrow = c(3, 1))
hist(encuesta$min.cuest[encuesta$min.cuest < 60], main = "Minutos por cuestionario")
hist(encuesta$hrs.reps[encuesta$hrs.reps < 25], main = "Horas por Repartido")
hist(encuesta$hrs.parcial[encuesta$hrs.parcial > 0 & encuesta$hrs.parcial <
25], main = "Horas por Parcial")
Ahora sí podemos ver con más resolución la distribución del tiempo dedicado a las distintas tareas. Respecto al recorte que hecho a los datos, es importante saber cuántos son los outliers excluidos de cada distribución. El siguiente código nos muestra estos valores (en porcentaje):
100 * c(Cuestionarios = sum(encuesta$min.cuest > 60)/27, Repartidos = sum(encuesta$hrs.reps >
25)/27, Parciales = sum(encuesta$hrs.parcial > 25)/27)
## Cuestionarios Repartidos Parciales
## 7.407 11.111 11.111
Excluidos: 2 personas para los cuestionarios (7%), 3 personas para los repartidos y parciales (11%). Veamos el summary de estas tres columnas:
summary(encuesta[, 3:5])
## min.cuest hrs.reps hrs.parcial
## Min. : 5.0 Min. : 2.0 Min. : 0.0
## 1st Qu.: 10.0 1st Qu.: 3.0 1st Qu.: 4.0
## Median : 20.0 Median : 7.0 Median : 8.0
## Mean : 34.1 Mean : 13.8 Mean : 14.8
## 3rd Qu.: 35.0 3rd Qu.: 13.0 3rd Qu.: 18.0
## Max. :240.0 Max. :100.0 Max. :100.0
Dado que las 3 distribuciones están fuertemente sesgadas hacia la izquierda, parece más prudente tomar las medianas como valores representativos de las tres respuestas. Para los cuestionarios, 20 minutos parece ser el valor más representativo; para repartidos son 7 horas y 8.5 horas para los parciales.
Concluimos que los tiempos dedicados a todas las tareas han sido bastante altos. Por otro lado también consideramos que el tiempo otorgado para realizarlas ha sido bastante (2 semanas para repartidos en general, 1 semana para parciales y un tiempo variable pero más que suficiente para los cuestionarios).
De todas formas, las tres distribuciones de tiempos están fuertemente sesgadas a la izquierda, por lo que hay un importante porcentaje de estudiantes que dedicaron mucho menos tiempo que estos valores a las distintas tareas del curso.
Haciendo un cálculo general, podemos estimar un valor de tiempo representativo dedicado al curso por estudiante (para 25 cuestionarios, 4 repartidos y 2 parciales, además del tiempo dedicado a ver los videos, suponiendo que cada estudiante vió todos los videos 1 vez):
# Tiempo en horas:
(1 / 3) * 25 + # Cuestionarios
7 * 4 + # Repartidos
8.5 * 2 + # Parciales
8 + (2 / 3) # Videos
## [1] 62
El valor estimado, 62, es sorprendentemente cercano al valor de horas estimado a priori para este curso (60).
A priori puede pensarse que quienes dedicaron más tiempo a los repartidos también lo hicieron con los cuestionarios. Es decir, se podría esperar una correlación entre las distintas medidas de tiempo. Veamos si esto es así:
(se utiliza aquí la función corrgram
del paquete homónimo)
require(corrgram)
cor(encuesta[, 3:5])
## min.cuest hrs.reps hrs.parcial
## min.cuest 1.0000 0.1525 0.1201
## hrs.reps 0.1525 1.0000 0.9404
## hrs.parcial 0.1201 0.9404 1.0000
corrgram(encuesta[, 3:5], lower.panel = panel.pts, upper.panel = panel.conf)
Se puede ver que hay una muy alta correlación entre los tiempos dedicados a parciales y repartidos, aunque hay un punto muy despegado que puede estar aportando desproporcionalmente a estos valores de correlación. Es preferible detectar este valor para luego lo eliminarlo del análisis:
which(encuesta$hrs.parcial > 50)
## [1] 9
# Un vistazo nos muestra que esta fila tiene varios outliers:
encuesta[9, ]
## aprendizaje satisfaccion min.cuest hrs.reps hrs.parcial orden.cuest
## 9 5 6 25 100 100 1
## unidad.facil unidad.dificil ptc
## 9 2 3 96
Ahora sí podemos ver las correlaciones excluyendo la fila 9, la cual estaba distorsionando los valores percibidos:
cor(encuesta[-9, 3:5])
## min.cuest hrs.reps hrs.parcial
## min.cuest 1.0000 0.3448 0.2842
## hrs.reps 0.3448 1.0000 0.7949
## hrs.parcial 0.2842 0.7949 1.0000
corrgram(encuesta[-9, 3:5], lower.panel = panel.pts, upper.panel = panel.conf)
Como se puede ver en la gráfica, sólo el tiempo dedicados a parciales y repartidos parecen estar correlacionados, mientras que la relación con los minutos dedicados a cuestionarios parece débil.
Se ofrecieron 6 valores para el nivel de satisfacción del curso, siendo el 4to. valor el que mínimo para el cual el balance es “positivo”, y todos los anteriores negativos. La distribución de respuestas es la siguiente:
barplot(table(encuesta$satisfaccion), col = 1:6)
El grado de satisfacción es bastante alto. Nótese que las categorías 5 y 6 corresponden a “satisfecho” y “muy satisfecho” respectivamente. Debe notarse además que el único “Muy insatisfecho” observado corresponde a un caso de abandono del curso por la mitad (aprox.), el cual en los comentarios indicó que piensa repetirlo “pues me resulta muy interesante y útil”.
Se ofrecieron cinco valores posibles (ver el resumen de respuestas), siendo esta la distribución de respuestas:
barplot(table(encuesta$aprendizaje), col = 1:5)
La mayoría eligió el valor mediano de la escala:
“Puedo usar R para hacer la mayoría de los análisis que normalmente hago con otros programas (o me animo a intentarlo).”
lo cual consideramos como un resultado exitoso en función de los objetivos que nos planteamos. Se ve también en el gráfico que las respuestas están bastante sesgadas hacia los valores altos, es decir, niveles de aprendizaje superiores. Incluso unos 5 estudiantes (18% de los que respondieron el formulario) dicen haber logrado el máximo valor:
“Me siento con confianza para usar R todo el tiempo que trabajo en aplicaciones relevantes (i.e.: estadística, simulaciones, etc.).”
Una mirada al summary, permite ver con presición estas tendencias:
summary(encuesta$aprendizaje)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 1.00 3.00 3.00 3.48 4.00 5.00
La mediana de los valores es 3, mientras que el promedio es ligeramente mayor (3.5 aprox.), lo que habla una vez más del sesgo hacia la derecha de la distribución de las respuestas.
Debe notarse que en el único caso en que se eligió 1, se trata de otro estudiante que tuvo que abandonar el curso por la mitad aproximadamente. En caso de excluir este valor, se obtendría una mediana de 3.5 y un promedio de 3.6.
Concluimos entonces que el nivel de aprendizaje se corresponde muy bien con las notas obtenidas en el curso (media y promeido 10) por quienes lo terminaron. Concluimos además que para el conjunto de estudiantes que completaron el curso, se ha alcanzado con creces los objetivos de aprendizaje propuestos al inicio.
Se trata claramente de un punto menor, pero que nos pareció interesante para entender mejor el flujo de trabajo adoptado por los estudiantes.
La enorme mayoría hizo los cuestionarios posteriormente a ver/leer las lecciones correspondientes, tal como se esperaría a priori (1 se corresponde con esta opción, 0 con la alternativa):
barplot(table(encuesta$orden.cuest), col = 0:1)
# (Hay sólo dos personas que dijeron utilizar el método opuesto)
La pregunta en el formulario de evaluación es:
“¿Qué aspecto(s) del curso le pareció el más fuerte?”
Aquí si bien es difícil contabilizar las respuestas, se puede decir que casi todos han destacado uno, varios o todos los elementos clave mencionados al inicio de este documento (lecciones en video online, ejercicios con corrección automática y foros de intercambio). También y a pesar de que no consideramos que se destacaría, muchos estudiantes señalaron la calidd y utilidad de las lecciones escritas, que se subieron como complemento de las lecciones en video.
La pregunta es similar a la anterior:
“¿Qué aspecto(s) del curso le pareció el más débil?”
Aquí todos o casi todos señalaron los problemas que tuvimos de comunicación en una parte del curso. Concretamente, tuvimos unos días de pausa que se extendieron más de lo que hubiera sido conveniente, por dificultades personales de los docentes.
También se destacan errores en cuestionarios y en repartidos, incluyendo algunos “bugs” en el sistema de evaluación automático, los cuales se fueron arreglando sobre la marcha. En varios casos también se señala que hay que mejorar la relación entre la dificultad de los videos y las preguntas de cuestionarios y repartidos.
Consideramos que globalmente el curso ha sido muy exitoso, superando incluso nuestras propias expectativas. La incorporación de los tres elementos clave de los MOOC han demostrado ser fundamentales para lograr una dinámica apropiada y buenos resultados.
El curso deja además mucha experiencia y aprendizajes a ser aplicados en futuras ediciones. Las evaluaciones estudiantiles han sido de mucha ayuda y hemos encontrado una comunicación muy fluida con el cuerpo de estudiantes del curso. Es claro además que este tipo de experiencias se puede extender a otras materias e incluso a un público más amplio por fuera de la UdelaR, como puede ser a nivel regional latinoamericano.