Aclaraciones adicionales

  • Dado el impacto que tiene en el contenido de la asignatura, es importante volver a resaltar que este curso NO se trata de aprender a manejar uno u otro “software estadístico”, es decir NO se trata de aprender a utilizar una serie de comandos, instrucciones, funciones, módulos o paquetes. Esta asignatura se trata acerca de aprender a programar, es decir que se trata acerca de estar en capacidad de diseñar e implementar programas (funciones, objetos, etc.) propios. Naturalmente, si se adquiere la capacidad de desarrollar un programa propio de principio a fin, por supuesto que también se adquiere la capacidad de entender y modificar uno desarrollado por otras personas.

  • En cuanto a los lenguajes de programación para el curso:

    Quien realmente sabe programar (bajo un cierto paradigma de programación), solamente necesita un manual de referencia a la mano (es decir, solamente necesita conocer la sintaxis correspondiente) para poder programar en cualquier lenguaje de programación (siempre y cuando el lenguaje permita trabajar bajo el paradigma de programación respectivo).

    Debido a lo anterior, no debería tener gran relevancia cuál o cuáles serán los lenguajes de programación que utilizaremos en el curso.

  • Para los estadísticos es particularmente importante el producir reportes, presentaciones, informes, trabajos o similares. Estos documentos generalmente suelen contener tanto texto y fórmulas matemáticas, como tablas y gráficos resultado de algún análisis, usualmente las salidas que arroja algún “software estadístico”. Razón por la cual se considera importante que en este curso se cubra, al menos en parte, el manejo de algunos cuadernos computacionales (notebooks) que permitan ejecutar e integrar, con el resto del documento, el código que genera las tablas, gráficos y otros (Jupyter Notebook https://jupyter.org/ y R Markdown https://rmarkdown.rstudio.com/). Así mismo, es necesario aprender un poco acerca de ciertos lenguajes de marcado que permiten incluir adecuadamente fórmulas matemáticas, además de controlar el formato del contenido del documento o notebook (Latex https://www.latex-project.org// y Markdown https://daringfireball.net/projects/markdown/).

  • El curso está dirigido y diseñado para estudiantes de tercer semestre de la carrera de estadística.

  • Obligatorio como mínimo estar viendo en simultáneo el curso de probabilidad (o en teoría podrían cubrir a profundidad y por cuenta propia los contenidos de ese curso, antes de que se requieran en nuestra clase, aunque no recomiendo para nada esta opción).

  • Debo asumir que ninguno de los estudiantes ha visto el curso de inferencia estadística, lo que implica que no han visto el curso de regresión lineal, ni el de análisis multivariado, ni el de estadística descriptiva multivariada y muchos otros cursos de la carrera. Por lo tanto, en nuestro curso no hablaremos de algoritmos, instrucciones, funciones o similares que directamente requieran conocer y entender el contenido de esos cursos.

  • El procesamiento, transformación y análisis de datos, así como el manejo de bases de datos, el ajuste de modelos, la producción de gráficos y el desarrollo de aplicaciones o módulos web tienen (o deberían tener) sus propios cursos y por ende sus correspondientes contenidos no hacen parte de este curso.

  • Este curso es para personas que no saben programar y que quieren aprender a hacerlo bajo el paradigma de programación imperativo procedimental estructurado con una pequeña introducción a las bases de la programación orientada a objetos y de la programación funcional (si no saben programar es normal que no sepan acerca de los diferentes paradigmas de programación, pero de pronto los han escuchado mencionar).

  • A los estudiantes que ya saben programar o que creen que ya saben programar NO les sirve este curso y la siguiente historia/fábula ayuda a explicar el porqué:

    Cuenta la leyenda que un viejo maestro zen estaba bebiendo té tranquilamente cuando un guerrero llamó a su puerta. Azorado por haber subido corriendo los muchos escalones que llevaban a la puerta del anciano, el guerrero se sentó frente a su anfitrión tan pronto pudo. Devoró con ansia las bolas de arroz que el maestro le ofrecía como cortesía y, con la boca aún llena, comenzó a explicar todos los títulos y trofeos que había acumulado con los años.

    El guerrero era joven, pero se había dedicado con mucha pasión a sus tareas, por lo que atesoraba suficientes relatos y galardones como para mantener al anciano escuchando mientras el sol caía y se fundía con el lomo de las montañas. Ya era noche cerrada cuando el joven guerrero terminó de contar sus hazañas.

    “Maestro” -dijo entonces- “He venido a que me enseñe los secretos del conocimiento zen”.

    El anciano venerable le miró por encima de sus lentes de media luna y calló. En silencio, ofreció al guerrero una taza de té y comenzó a verter el líquido de una tetera pequeña y reluciente. Con aire distraído, como sin darle mayor importancia, sirvió el té hasta que la infusión rebosó la taza, derramándose por el costado del recipiente y manchando el mantel, la mesa y el suelo.

    “¡Maestro! ¡La taza ya está llena, no puede seguir sirviendo té!”, advirtió alarmado y sorprendido el impulsivo guerrero.

    “Exacto” -respondió el anciano maestro- “Usted ha venido a mi casa para estudiar mis artes, pero ya trae la taza llena, ¿cómo creyó que podría aprender algo?”

    Ante el silencio confundido y avergonzado del guerrero, el maestro prosiguió con tranquilidad:

    “A menos que su taza esté vacía, no podrá aprender nada”.

    Si al igual que la taza, sus mentes están llenas de preconceptos, opiniones y especulaciones, de nada sirve que vengan dizque a aprender. Hasta que no sean capaces de abrir su mente a todo lo que les pueda llegar a decir, dejando lo demás al menos por el tiempo que estén conmigo a un lado, ni yo ni nadie les podrá ayudar en su proceso de aprendizaje. Yo vengo con humildad y sin soberbia a transmitirles todo lo que más pueda y ustedes se supone que vienen con humildad y sin soberbia a aprender todo lo que más puedan.

  • Bajo la premisa de que los estudiantes quieren aprender a programar se espera que estén dispuestos a:

    • Estudiar y trabajar en los temas del curso por su cuenta (el curso es de 4 horas con el profesor y mínimo 8 horas por cuenta propia).
    • Ponerse en el rol de quien programa un computador para hacerle la vida más fácil a un potencial usuario, NO a sí mismos (el curso se centra en ponerse al servicio del computador y de un potencial usuario, NO al revés). Es decir que durante la duración del curso, deberán verse a sí mismos primero como quienes programan una solución algorítmica a un problema, muy por encima de como quienes van a utilizar la solución algorítmica para satisfacer una necesidad.
    • Escribir la cantidad de código que sea necesaria para “reducir la carga al computador lo más que se pueda”, para hacer las cosas bien hechas de forma y sobretodo de fondo, sin pereza, evitando malas prácticas de programación y sin andar todo el tiempo buscando atajos para tratar de evadir hacer todo lo anterior.
    • Aceptar que el que un resultado de un programa coincida con la solución del problema que el programa pretende resolver no quiere decir que el programa esté bien hecho (que el resultado no coincida implica que el programa no está bien, pero que el resultado coincida no quiere decir que el programa esté bien). La forma en que esté hecho el programa es lo más importante y si la respuesta no coincide entonces es obvio que la forma en que está hecho está mal.

¿qué es programar y qué no lo es?

Reflexionemos y discutamos con respecto a la respuesta que debería tener esa pregunta…