Nerding about stuff I've found interesting

Desde que comencé a estudiar Ciencias de la Computación en la Facultad de Ciencias de la UNAM el año pasado no he dejado de aprender sobre matemáticas y ciencias de la computación y, junto con todo lo que eso implica, mi deseo de crear contenido educativo no ha desaparecido, de hecho todo lo contrario.

Aquellos que han visitado pablotrinidad.me anteriormente seguramente les ha tocado ver alguno de los múltiples intentos de “ahora sí voy a ponerme a escribir”, bueno, pues ésta nueva serie es otro de ellos y en esta ocasión quiero escribir sobre Estructuras de Datos.

Creo que mis intentos de crear contenido han sido fallidos debido a que suelo comenzar pensando en una idea relativamente sencilla y termino queriendo hacer algo extremadamente complejo y en tiempos libres inexistentes, que, además, no sé ni por dónde comenzar. En esta ocasión estaré cambiando la dinámica un poco.

Este semestre (Enero-Junio 2019) estaré llevando un curso de Estructuras de Datos con un profesor que parece bastante prometedor, su nombre es Canek Peláez, y mi objetivo es escribir acerca de los temas que estemos viendo en clase, al ritmo que los estemos viendo, de forma que escribir en el blog se convierta en una especie de extensión del curso. Tengo fé en esta dinámica y estoy seguro que una vez que le “agarre ritmo” se volverá un hábito que me permitirá escribir sobre otros temas a futuro.

Acerca de la serie

Durante mis 4+ años como ingeniero de software en la industria mexicana nunca le presté mucha atención a los algoritmos y las estructuras de datos más allá de resolver alguno que otro problema en HackerRank para desestresarme. Ahora, como estudiante de ciencias de la computación, tratando de involucrarme en la programación competitiva y habiendo aplicado a múltiples internships en compañías como Google y Facebook, no dejo de pensar en lo importante que son para la carrera profesional de cualquier programador (ingeniero o computólogo). En general, no importa si la rama a la que te dedicas es el desarrollo web, de aplicaciones móviles, administración de servidores o seguridad, tener conocimientos básicos sobre computación (Ciencias de la Computación) será un factor que no sólo de diferenciará del resto si no que hará tu trabajo mil veces más sencillo. Es por esto que quiero escribir acerca del tema.

Además, quiero mencionar que, aunque trataré de que los posts sean lo más completos posibles, el tiempo sigue siendo un factor importante para mi. Mi objetivo es escribir acerca de los temas en un lenguaje más coloquial y amigable (informal, si quieres llamarlo así) de la forma en la que a mi me hubiera gustado que me los enseñaran y que también me permita continuar con mis otras actividades.

La estructura de esta serie será muy similar a la del curso impartido por Canek aunque puede divergir en algunos puntos. Si eres del tipo de programador@ que necesita leer algo más completo y tienes curiosidad acerca de mi curso con Canek (y no te molesta Java) te recomiendo muchísimo su libro ya que es precisamente la guía que sigue su curso. Aquí puedes conseguir la versión física y aquí la versión digital (it’s cheaper 😉).

Las fuentes principales para esta serie serán el curso de Canek y el CLRS el cual te recomiendo MUCHÍSIMO leer ya que maneja un lenguaje matemático más formal y suele contener análisis detallado de las complejidades de los algoritmos y las estructuras.

Al final de cada post trataré de dejar links y referencias para que puedas continuar leyendo sobre los temas y si le dedico suficiente tiempo tal vez también incluya links a problemas de programación que hagan uso de los visto.

Al lector

Espero que el contenido por venir pueda serenar tu inquietud por conocer más sobre el tema, pero sobre todo, espero que éste genere todavía más preguntas.

Ésto es lo que haré por el momento pero espero algún día poder tener el tiempo para generar otro tipo de contenido como animaciones o video, todas las sugerencias son bienvenidas.

Como Canek menciona en su libro: “la lengua universal de la computación es el inglés”, y si bien en la discusión sobre generar contenido en español siempre me inclino por el lado de no hacerlo, admito que me encantaría ver más contenido de calidad en nuestro idioma. Comparte conocimiento.

So the difference in one word is imagination … but how do we  use the power of imagination? It’s for sharing. Helping each other.  Collaborating with each other. I understand the chimpanzee mind, so that now I understand the unique feature of human mind, and that is sharing.
— Matsuzawa, Tetsuro. “The Cognitive Tradeoff Hypothesis”. YouTube. Subido por Vsauce.

¡Nos leemos pronto!


  • Libro de Canek: Peláez, Canek: Estructuras de Datos con Java Moderno: Comportamiento +  Objetos = Programas. Las Prensas de Ciencias, Facultad de Ciencias,  UNAM, México, 2018, ISBN 9786073009669.
  • CLRS: Cormen, Thomas H., Charles Eric Leiserson, Ronald Linn Rivest y Clifford  Stein: Introduction to Algorithms, Third Edition. MIT press Cambridge,  2009.
  • Jueces en línea (programación competitiva): HackerRank, UVa, URI, Kattis, omegaUp.