MITx: 6.00.1x Introduction to Computer Science and Programming Using Python
Es un MOOC de la plataforma edX en inglés dentro del programa Computational Thinking using Python ofrecido por el MIT. El contenido del MOOC es el mismo que el curso presencial impartido en el MIT.
Lo primero que debo indicar es que el nombre del curso puede dar lugar a engaño, pues eso de introducción a la programación puede dar a entender que es un curso de iniciación. Si bien el curso empieza desde cero, y puede ser válido para quien quiera iniciarse en el tema, yo no lo definiría como un curso para principiantes. Por otra parte, aunque en el título se indique que se usa Python, tampoco es un curso sobre Python, es un curso sobre pensamiento computacional.
Por los contenidos del curso, habiendo multitud de tutoriales y videos con contenidos similares, se puede dudar si será demasiado light o el tiempo dedicado estará bien invertido. Nada más lejos de la realidad, casi desde las primeras lecciones queda claro el nivel exigido. Aunque el temario trata temas básicos de programación, sacar este curso no será un paseo. En la plataforma edX se indica que es necesaria una dedicación de entre 10 y 15 horas semanales y no andan muy desencaminados.
El programa
En esta edición el curso se concentra en 9 semanas con el siguiente temario:
S1 Python Basics
- Introduction to Python
- Core Elements of Programs
S2 Simple Programs
- Simple Algorithms
- Functions
S3 Structured Programs
- Tuples and Lists
- Dictionaries
S5 Midterm
S5 Good Programming Practices
- Testings and Debugging
- Exceptions and Assertions
S6 Object Oriented Programming
- Classes and Inheritance
- An Extended Example
S7 Algorithmic Complexity
- Computational Complexity
- Searching and Sorting Algorithms
S8 Plotting
- Plotting
S9 Final Exam
Objetivo del curso
Este índice se parece al de muchos otros cursos, pero va más allá de la sintaxis del lenguaje de programación. Realmente el curso se centra en asuntos como
- la representación de estructuras de datos,
- la iteración y la recursión,
- la abstracción de procedimientos y tipos de datos,
- la organización y modulación de sistemas usando clases de objetos y métodos,
- las diferentes clases de algoritmos y
- la complejidad de los algoritmos.
También se pretende que los participantes sean capaces de pensar y actuar como auténticos programadores
- aprendiendo modos computacionales de pensamiento,
- dominando el arte de la resolución de problemas computacionales y
- haciendo que los ordenadores hagan lo que queramos que hagan.
Para ello se desarrolla un proceso de pensamiento computacional donde
- se identifican o inventan abstracciones útiles, se suprimen detalles y se formulan interfaces,
- se formula una solución a un problema como un experimento computacional utilizando abstracciones,
- se diseña y construye una implementación suficientemente eficiente del experimento,
- se valida la configuración experimental (es decir, se depura),
- se ejecuta el experimento,
- se evalúan los resultados del experimento y
- se repite si es necesario.
El proceso está basado en las tres Aes del pensamiento computacional:
- Abstracción
- elegir las abstracciones correctas
- operar en múltiples niveles de abstracción simultáneamente
- definir las relaciones entre los niveles de abstracción
- Automatización
- pensar en términos de mecanizar nuestras abstracciones
- la mecanización es posible, porque tenemos notaciones y modelos precisos y exigentes y porque hay alguna “máquina” que puede interpretar nuestras notaciones
- Algoritmos
- lenguaje para describir procesos automatizados
- también permite la abstracción de detalles
- lenguaje para comunicar ideas y procesos
Desarrollo del curso
Cada tema del curso contiene una serie de lecciones en formato de video de una duración total de unos 60 minutos por tema. Las presentaciones se pueden descargar y ocasionalmente existen pequeños tutoriales de refuerzo para temas específicos. El foro es bastante activo y, dado la complejidad de algunos conceptos y ejercicios, es una buena fuente de consulta e inspiración. Personal del MIT y profesores asistentes participar activamente.
Después de cada lección hay una serie de ejercicios relacionados con el tema. Suelen ser ejercicios más o menos sencillos y están orientados a la comprensión de los temas. Cada semana hay un conjunto de ejercicios más complejos que ponen en práctica el tema tratado. Suelen consistir en pequeños programas de código, no suelen ser muy largos, por lo general unas 20 líneas de código. En cada ejercicio se indica el tiempo estimado necesario para resolver el problema, pero el nivel de exigencia es tal que el tiempo real en resolverlos puede llevar de unos pocos minutos a varios días de trabajo. A diferencia de los ejercicios normales, existe un plazo límite para realizar estos ejercicios.
Los ejercicios pasan por un evaluador automático de la plataforma edX que realiza diferentes pruebas y califica el ejercicio. El evaluador comprueba el código para diferentes casos y emite una evaluación según el resultado de las diferentes pruebas. Se pueden realizar hasta 30 intentos, tomando la puntuación del último intento.
Tanto los ejercicios de las lecciones como el conjunto de ejercicios semanales puntúan para la nota final del curso.
A mitad del curso está el Midterm, que es un examen de las lecciones tratadas hasta ese momento. Se tiene que realizar dentro del plazo de los 5 días indicados en el calendario del curso y una vez comenzado el examen hay que completarlo en el plazo de 8 horas. Los organizadores del curso indican que se puede hacer en 3 horas. Mi consejo es que según el tiempo dedicado al conjunto de ejercicios semanales estimemos si esa previsión de 3 horas es realista en nuestro caso, o hará falta alguna hora más.
El examen consta de preguntas teóricas con solamente un intento y de ejercicios prácticos con 10 intentos.
Al final del curso está el Final Exam, con las mismas condiciones que el Midterm, pero incluyendo todo el temario.
El curso se supera con una calificación mínima del 65 %, puntuando los ejercicios un máximo del 10 %, el conjunto de ejercicios un máximo del 40 % y puntuando ambos exámenes un máximo del 25 % respectivamente.
Si se superan las pruebas con una puntuación mínima del 65 % se puede recibir un certificado del MIT que indica la ejecución con éxito y la aprobación del curso. En el certificado no se indica puntuación alguna.
Conclusión
El curso busca en la informática respuesta a cuán difícil es un problema y cómo puede ser resuelto de la mejor manera. A la vez, enseña a pensar recursivamente para reformular un problema aparentemente difícil en uno nuevo de fácil resolución usando reducciones, inclusiones, transformaciones y simulaciones.
Este es un curso exigente, que requiere dedicación, en principio para alumnos con cualquier nivel previo de programación, aunque por la complejidad de análisis en los ejercicios es recomendable tener conocimientos previos, pero también es un curso que da satisfacciones cuando se logran los objetivos y que puede suponer un punto de inflexión en nuestra forma de programar.
Comentar