Seguidores

jueves, 17 de mayo de 2018

El primer Lenguaje de Programación

En CS-UCSP/CS-UNSA y CS-UTEC se hace Python (1er sem) y C++ (11/14/17) (2do Sem) ademas para los de CS se hace C++ (11/14/17) avanzado en 3er semestre.

Sin embargo, desde la primera clase se les explica qu el objetivo no es que aprendas Python. 
El objetivo es que aprendas a pensar de forma computacional.

El componente #1 de la ecuacion es el cerebro del ser humano (aporta inteligtencia)
El componente #2 es el computador (que aporta velocidad)

Si enfocamos la carrera solo en controlar el aparato rapido pero no desarrollas tu cerebro es igual a darle una metralleta (algo muy potente) a un mono

Algunas lecciones para aprender de este video ...
  1. Cualquier mono sabe usar la herramienta de cualquier forma y pensara que es poderoso
  2. Siempre hay algun tontin que dice que le puedes das algo poderoso a alguien mal preparado.
  3. El mono luego de haber disparado a todos (sentir el poder) levanta las manos en señal de victoria ...
Me parece algo que hemos visto y sentido varias veces en nuestro pais :)

¿Por qué empezamos con Python?
  • Porque tiene sintaxis ligera
  • Porque podría aprenderlo alguien de cualquier carrera
  • Porque es simple de entender
  • Porque te enfocas en resolver el problema ... no en la sintaxis ...
  • La curva de aprendizaje para un nivel inicial es mas rapida.
¿Por qué no es recomendable arrancar en C/C++/Java?
  • Porque tiene muchos mas elementos e sintaxis que distraen al alumno del objetivo principal: pensar de forma computacional !!!
  • La curva de aprendizaje para un nivel inicial es mas lenta.
¿Por qué si hay que enseñar un lenguaje como C++?
  • Porque permite entender mas detalles de bajo nivel
  • Porque permite luego saltar a casi cualquier lenguaje con una curva de aprendizaje mas rapida.
  • Porque realmente los programas son mas eficientes
Luego de entender esto los chicos programan en cualquier lenguaje que ya no necesitas enseñarles ...

Si una universidad se enfoca en decir: "Nosotros enseñamos .NET/Java ..." es porque aun estan en proceso de entender que lo importante no es sintaxis.

Nosotros enseñamos a pensar de forma computacional y en el camino está claro que aprenderás a programar un computador (y por eso estudias sintaxis) pero no es el objetivo #1

Saludos
Ernesto

jueves, 10 de mayo de 2018

Mapa de carreras en el Perú

Aqui va el mapa de nuestro pais con nombres de instituciones ...

Contexto:
En diciembre de 2017 el Ministerio de Educación del Perú convoca a una reunión de aproximadamente 140 directores de carrera de Computación/Informatica/Software y Sistemas.
En el proceso se levanta información referente a la forma en la cual estas carreras han sido creadas y en que se basan actualmente.

Estos son os resultados.

1.- Gráfico del origen de las carreras en el Perú.  
2.- Gráfico de las mallas curriculares en la actualidad. ¿En qué se basan las mismas carreras actualmente?

Algunas explicaciones previas:
  • A->B significa que B fue creada mirando como referencia
  • Los Rectángulos Amarillos son las propuestas internacionales de IEEE-CS/ACM. Miren que tan cercanos decimos estar de las propuestas internacionales (solo confiando en la palabra de los directores)
  • Los rectangulos rojos son de instituciones que tienen ams de una carrera de esta linea.
  • Los rectangulos verdes representan un pais.
Ademas es importante observar lo siguiente:
  • ¿cuántas salen de facultades de Educación?
  • ¿cuántas salen de la demanda del mercado laboral?
  • Miren cuantas no se basan en ninguna referencia?! (las que andan super sueltas)
  • Varias carreras super tradicionales que no son referenciadas (lo cual indica que no son referencias)
  • Carreras azules que siguen a otra carreras azules que no siguen ningun estándar internacional ... 
Estar al centro podria significar algo bueno si me apoyo en estandares internacionales. De otra forma puedo ser el centro del problema.

Saludos
Ernesto Cuadros-Vargas

martes, 3 de abril de 2018

El secreto de CS-UTEC

El secreto de CS-UTEC

En Marzo de 2017 de da inicio a la carrera de CS-UTEC pero esta carrera no tiene una historia "normal". En la gran mayoría de carreras y universidades de todo el Perú uno tiene que pasarse un buen tiempo explicando que Computación no es Ingeniería, qeu no esta por encima pero tampoco esta por debajo y tampoco esta dentro de ingeniería. Aqui no porque antes de que yo llegue ya lo tenían recontra claro. Querian Computer Science.

Arrancamos en Marzo de 2017, sin mucha propaganda, en una universidad denominada Universidade de Ingeniería y Tecnología y de un momento a otro se nos viene una tremenda avalancha de casi 720 alumnos en Marzo de 2017. Una de mis preguntas por varios años siempre fue: ¿Por qué Lima sigue durmiendo y no despierta frente a lo que pasa en el mundo?

Tratando de entender de donde salió esta avalancha percibimos que habían varios factores combinados:

  1. Antes de que yo comience a participar de CS-UTEC y también de UTEC las autoridades y la promotoría ya la tenían clara. Querían una carrera internacional ... no lo que todos aquí siempre han dicho.
  2. Resulta mas especial que siendo una Universidade de Ingeniería las autoridades la tuviesen clara antes de crear la carrera. Eso me ahorró muchísimo tiempo en "convencerlos" pues ya no había necesidad de cambiar lo pre existente. Debo decir que eso es Peru es raro y me llamó la atención. Si ya es difícil encontrar personas de esta línea que la tengan clara imagínense la rareza de encontrar autoridades (que son de otras carreras) que la tenían tan clara. Para mi fue una excelente señal. 
  3. Esta carrera de CS-UTEC es el resultado de una combinación de experiencias previas:
    • La experiencia ya ganada en la construcción de la malla curricular propuesta por la Sociedad Peruana de Computación (SPC) que evolucionó varias veces:
    • Derivada de la malla de la SPC fue naciendo en parelelo la malla de la Universidad Católica San Pablo (UCSP) en Arequipa cuyo secreto de formación y de éxito tambien puede ser leido aquí.
      De nuevo puedo afirmar que no hay "secretos" ... solo hay que hacer cosas de sentido común. Las mallas de San Pablo tambien fueron:
      • CS-UCSP 2006 (derivada de CS-SPC 2006)
      • CS-UCSP 2010 (derivada de CS-SPC 2010)
      • CS-UCSP 2016 (derivada de CS-SPC 2015)
    • También en paralelo, pero desde 2008 se inicia la construcción de la carrera de CS-UNSA en Arequipa
      • CS-UNSA 2010 (derivada de CS-SPC 2010+CS-UCSP 2010)
      • CS-UNSA 2016 (?) (derivada de CS-SPC 2015+CS-UCSP 2016)
    • También antes de 2010 se utilizó parte de este material para apoyar la creacion de CS-UNI a través del entonce director y fundador Dr. Javier Solano pero la carrera pasó por varios ajustes internos debido a las restricciones exigidas por la Facultad de Ciencias. Por esta razón, el resultado observado en CS-UNI no fue creado de la misma forma que las anteriores.
    • Una gran influencia para todo este proceso es nuestra participación en el equipo mundial que hizo las actualizaciones para Computer Science por parte de ACM/CS-IEEE
    • Ahora también estamos en el equipo de Computing Curricula 2020 y ya sabemos lo qeu se viene varios años antes.
  4. Luego de iniciar el proceso de creación de CS-UTEC aparecieron más factores:
    • Un dia conversando con el Director Ejecutivo (~Rector) Carlos Heeren me dice que debíamos formar el Comité Consultivo de la carrera en el Silicon Valley. En este momento tenemos a TODOS los consultores que ayudan a guiar la carrera desde el Silicon Valley y tenemos reuniones periódicas también en Silicon Valley. Esto es algo que cualquier carrera sueña pero también debo decir qeu no fue idea mia. Ya la tenían clara antes de mi llegada.
    • A pesar de ser medio común que hoy en dia cualquier carrera estudie algo de ofimática. También es común observar que carreras de números suelan llevar algunos cursos básicos de programación (básicamente sintaxis sin prestarle mucha atención a otros temas. Sin embargo, en UTEC ya la tenían clara que TODOS deberían estudiar las bases de Computer Science en vez de aprender solo sintaxis de algún lenguaje de programación. Este "pequeño" cambio me fue algo muy difícil de implementar en Arequipa pues no conseguí que se llegue a entender.
      Ahora, paremos a pensar, si ya es difícil hacer que un alumno de una carrera de computación entienda conceptos de programación ...
      Mas difícil es hacer que alguien de Ing Mecánica lo entienda y
      Mas difícil  es qeu lo entienda alguien de Administración (Harvard, Stanford).
      Aquí ya la tenían clarísima !
      Ahí nace el siguiente problema.
    • Una cosa es dictar clases para 30 alumnos y otra cosa es dictar para 300. Resulta que en Harvard dictan para 500 y son un espectáculo de clase con todos prestando MUCHA atención todo el tiempo. Por razones obvias, la siguiente parada fue Harvard, MIT y Stanford y confirmas lo siguiente:
      • Son gente súper súper inteligente
      • Cualquier jefe de prácticas podría tener un doctorado
      • Todos tienen maestrías/doctorados con estudios realizados a tiempo completo
      • La formación en investigación es fundamental para poder adaptarte al cambio
      • Cualquiera tiene 3-4 post doctorados
        pero la diferencia más fuerte recién viene
      • Todos saben enseñar de forma espectacular!
  5. Para saber enseñar necesitas varios factores combinados y por eso resulta difícil ser profesor universitario
    • Debes conocer los temas que dictas a profundidad
    • Debes tener una visión internacional de lo que hablas
    • Debes ser capaz de comunicarte de forma efectiva en varios idiomas
    • Debes ser capaz de comunicarte a través de tu cara
    • Debes ser capaz de comunicarte a través de tus gestos
    • Debes ser capaz de comunicarte a través de tu voz
    • Debes ser capaz de comunicarte a través de tu postura 
    • Debes ser capaz de comunicarte a través de tus ojos ...
      Todo tu cuerpo habla !
    • Debes aprender a hacer el ridículo en público
    • Debes aprender a burlarte de tus propios defectos (auto confianza)
    • Debes saber decir: "no se" cuando no sepas algo realmente y podría ser frente a un auditorio de 700 alumnos
    • Debes perder el miedo a equivocarte
    • Debes ser capaz de mirar a los alumnos de abajo hacia arriba ("quiero aprender de ti") y no de arriba hacia abajo ("pídeme permiso para hablar")
    • Debes ser capaz de poner un cero y también de poner un 20. Me parece ridículo ver universidades donde la máxima nota es 13 porque "tú eres alumno y no me puedes alcanzar". Quien hace eso debe visitar a un psicólogo para superar esos complejos.
  6. Me olvidaba de algo súper importante ... ¿Por qué prefiero que enseñe alguien con doctorado en vez de alguien con 20 años de experiencia en problemas "reales"?
    • Porque casi siempre es solo una disculpa para justificar la falta de un buen grado académico
    • Porque estás en un ambiente académico y ... en un ambiente académico, el grado académico es relevante
    • Ojo aquí que no basta decir: "yo tengo maestria (de final de semana)". El cartón no es lo mas relevante ciertamente pero si una persona ha estudiado 10 horas/semana vs otro que andaba metido como ratón de laboratorio 14-16 horas/dia. es casi casi seguro que el segundo sabe más.
      y probablemente la razón más importante es que:
    • La gran mayoría de veces que un candidato a profesor dice que lo qeu más pesa es su experiencia profesional no se refiere a cosas modernas ni de punta.
      la gran mayoría de veces han venido haciendo lo mismo de forma antigua por los últimos 20 años. Ese tipo de profesor que no sale con frecuencia a otras partes del mundo enseñará cosas obsoletas que van a generar un alumno atrasado dentro de 5 años !
Nuevamente confirmamos que no hay ningún "secreto". Basta aplicar lo que el sentido común indica.
Ciertamente esta historia recién está comenzando en Perú.