Este curso es una versión en dos partes del primer curso de computación en MIT. Usan Python. El curso lo toman todos los estudiantes de carreras técnicas de MIT, por lo que no está enfocado como los típicos CS 101, sino como un panorama de como resolver problemas con computadoras en varias áreas.
Introduction to Computer Science and Programming Using Python
Como los deadlines son bastante estrictos y ya conozco bastante los temas no me lo tomé muy en serio, hice algunos de los ejercicios para trabajar con Emacs.
De todas formas me topé con algunas complicaciones y aprendí algunas cosas nuevas.
Introduction to Computational Thinking and Data Science
Cuando me di cuenta que este curso tenía problem sets interesantes era un poco tarde, pero lo más probable es que en la próxima iteración haga alguno más y actualice este post. En esta iteración pude hacer solo es 5.
Pset 5 – Finding Shortest paths
Este fue bastante complicado. El problema consiste en procesar un graph con la información de una mapa del campus de MIT. Hay que encontrar el camino más corto entre un lugar y otro, con la particularidad que hay caminos techados y caminos al aire libre, y hay una restricción de cuanto puedo recorrer al aire libre.
Esto hace que el algoritmo estándar no funcione. La solución es un algoritmo recursivo que explora el grafo y recuerda cual es mejor solución de las que ya recorrió. El bug más difícil que tuve fue por manejar mal la memoria en el stack, porque había que tener en la memoria y accesible para todo el stack cual era el camino más corto, y para cada stack tenía que tener la memoria del camino que había seguido hasta llegar ahí. Una vez que llegaba a un dead end, tenía que backtrack hasta un nodo válido, y recuperar ahí el camino. Esto fue un poco complicado. [Referencia a Sudoku Solver].