MITx: 6.00.2x Introduction to Computational Thinking and Data Science
Es el segundo curso de la plataforma edX en inglés dentro del programa Computational Thinking using Python ofrecido por el MIT. El contenido del MOOC, al igual que en el primer curso, es el mismo que el curso presencial impartido en el MIT.
Así como el primer curso se centra en la sintaxis del lenguaje de programación, la creación de abstracciones para resolver diferentes problemas, su automatización y la creación de algoritmos para su aplicación, este segundo curso se centra en la optimización de soluciones y el análisis de datos para encontrar patrones y funciones que los definan.
La probabilidad ocupa una buena parte del temario como base del pensamiento estocástico y de la introducción al Machine Learning que se trata en el curso. Esto puede hacerse un poco pesado y no entusiasma a todos los estudiantes. Parece lógico, si uno se matricula en un curso de pensamiento computacional espera ver mucho código, pero al ser éste un curso de nivel universitario y preludio de otros cursos de ML, me parece correcto que se pretenda sentar las bases matemáticas de la probabilidad de la que parte el ML.
El nivel de exigencia del curso no es menor que en el curso anterior, llegar al examen final requiere cierto esfuerzo. La dedicación recomendada es de 10 a 15 horas semanales.
El programa
El curso se concentra en 9 semanas con el siguiente temario:
S1 Optimization, Graphs
- Optimization and Knapsack Problem
- Decision Trees and Dynamic Programming
- Graph Problems
S3 Stochastic Thinking
- Plotting
- Stochastic Thinking
- Random Walks
S5 Statistics and Monte Carlo Simulations
- Inferential Statistics
- Monte Carlo Simulations
- Sampling and Standard Error
S6 Midterm
S7 Understanding Experimental Data
- Experimental Data
- Experimental Data
S8 Machine Learning
- Machine Learning
- Statistical Fallacies
S9 Final Exam
Objetivo del curso
El curso comienza estudiando los problemas de optimización que pueden presentarse en multitud de casos reales. Se estudian las fórmulas para la optimización con funciones objetivas o conjuntos de restricciones.
También se introduce en el curso los algoritmos voraces (algoritmos greedy) para encontrar una soluciones aproximadas y suficientemente óptimas.
Por otro lado, la complejidad de la mayoría de los problemas de optimización es exponencial, es en este momento cuando la programación dinámica proporciona un enfoque práctico para resolverlos de una forma realmente rápida.
Otra área conceptual del curso es el pensamiento estocástico, esto es, no determinista. El pensamiento estocástico juega un papel cada vez más importante en todo tipo de aplicaciones de la informática, desde las finanzas, la medicina, o la predicción del tiempo. Incluso problemas de cálculo integral que no involucran la aleatoriedad se pueden resolver de forma estocástica.
Desarrollo del curso
El desarrollo del curso es muy similar al 6.00.1x Introduction to Computer Science and Programming Using Python.
Los temas del curso contienen una serie de lecciones en formato de video de una duración total de unos 60 minutos. En la edición en la que participé, el foro no fue tan activo como en el primer curso, tampoco vi participar a nadie del MIT y los profesores asistentes se redujeron a una sola persona.
Tengo que hacer hincapié en algo que no todos saben. Los profesores asistentes no son miembros del MIT o de edX, son estudiantes del curso que se presentan voluntariamente para la tarea y, supongo que tras una evaluación y validación por parte de los organizadores del curso, dan un apoyo especial a otros estudiantes en el foro. No sé si tendrán un soporte especial para resolver las dudas, por el tipo de respuestas creo que no, o por lo menos no en todos los casos. Lo que es seguro es que son estudiantes que pagan su matrícula y pasan los ejercicios y los exámenes como cualquier otro. A parte de esto, no sé si tendrán algún otro tipo de reconocimiento. Desde aquí muestro todos mis respetos y admiración a estos voluntarios.
Después de cada lección hay una serie de ejercicios relacionados con la lección y cada tema tiene un conjunto de ejercicios más complejos. 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.
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 Quiz o 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.
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 10 %, el conjunto de ejercicios un 40 % y ambos exámenes un 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.
Conclusión
Los dos pilares en los que se asienta el curso son, primero, la construcción de modelos computacionales que arrojen luz a diferentes fenómenos, y segundo, la comprensión de lo que nos indican estos modelos.
El curso es si cabe aún más complejo que el curso primero, no por el código empleado, que es básicamente el introducido en el primer curso, sino por las técnicas de búsqueda de soluciones óptimas a problemas reales, con la capacidad de abstracción que ello implica.
Si tuviera que quedarme con algo del curso sería haber tenido la oportunidad de trabajar en aplicaciones donde las clases se utilizan de una forma realmente inteligente. Ver como la definición y organización de las diferentes clases pueden aumentar el potencial de una aplicación, ya no solo en el momento de la creación de la aplicación, sino también en futuras revisiones o ampliaciones del código. Puedo decir que ha habido un antes y un después en mi forma de escribir código tras haber participado en este programa de introducción al pensamiento computacional.
Comentar