Octubre 2015

Ahora estoy haciendo el curso de algoritmos de Tim Roughgarden
en Coursera. Me parece que estos cursos (especialmente) los
assignments son la mejor manera de mejorar como programador.

Por ahora voy viendo las clases. El material es relativamente
conocido, asi que en la primera semana voy ok. El primer assignment lo
hice en el avión desde Seoul. Se trata de contar la cantidad de inversiones
(pares de valores fuera de orden) en una lista.

Empecé en Ruby usando Rspec y no funcionó. Después me pasé a Python y
lo hice con 4 funciones en top level. Así que el diseño podría ser mejor,
pero me parece que no es el foco de los ejercicios.De todas formas me parece que puede ser interesante aplicar los paradigmas
OOP y funcional para resolver este tipo de problemas.

El algoritmo pasa todos los tests de Coursera, así que estoy conforme. Una
tarea que puede ser interesante, además de mejorar el diseño del código
es implementar todos los algoritmos que enseña. Empecé por implementar
Merge-Sort, que es la base del algoritmo para contar inversiones del
ejercicio. Por ahora me van faltando el algo para multiplicar matrice de
Strassen y para multiplica ints de Karatsuba.

Igual ya empezó la semana 2 así que vengo medio atrasado. Tampoco entregué
el problem set sobre Oh-notation.

[Final]

Quedé completamente atrasado para este curso. Lo único que logré hacer fue ver todos los videos varias veces (hasta entenderlos). El único tema que me quedó flojo es Universal Hashing. El resto de las demostraciones las podría hacer. Tendría que hacer un cuaderno e irme preparando para la parte 2 que creo que es más complicada.

Lo que faltaría sería implementar los algoritmos que vemos en el curso (y capaz que hacer algún experimento para validar la performance).

Anuncios