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ú.

miércoles, 31 de diciembre de 2014

Computacion como profesion

​​
Estimados, 

les adjunto un articulo super interesante que acaba de ser publicado en ACM y que tiene que ver directamente con nuestra profesion: Computacion.

Computing: an emerging profession?

Author:Stephen SeidmanTexas State University, San Marcos, Texas
Published in:
Cover Image
· Magazine
ACM Inroads archive
Volume 5 Issue 4, December 2014
Pages 6-11 

Aqui algunas frases que destaco pero vale la pena leerlo por completo.
  • To use a software engineering metaphor, program accreditation can be seen as “validation and verification” of an academic program. It answers the following two questions:
    • Does the name of a program correspond to its nature?
    • Does the program have sufficient quality?
  • When computing emerged as a recognized academic discipline in the 1960s, it came in multiple flavors: computer engineering arose from electrical engineering (circuits, processors, instruction sets), computer science had roots in mathematics (algorithms, theory of computation, numerical analysis),and information systems supported business applications
  • Aqui recuerdo que hace poco tiempo, en una universidad, un docente dijo que Sistemas de Infromacion no se trataba de hacer software (porque lo que buscaban era justificar Ing de SW) y yo dije que Sistemas de Informacion se trataba de hacer software para organizaciones. El resultado es que me acusaron de difamacion tomando como base esa afirmacion mia.Aqui hay otra persona a quien podrian acusar por publicar esto en un articulo de alcance mundial. El dice:This is emphatically not the case in the US and Canada, where computing is not included under the engineering umbrella.
  • Peru tambien es mencionado en el articulo pues el autor ya estuvo aqui algunas veces y se llego inclusive a tener reuniones con el CIP (Juan Fernan Munoz) tratando de entender esta idea confusa que propone el CIP con relacion a meter computacion dentro sin saber justificar esta propuesta mas alla de que hay una palabra en comun....
  • Luego viene una seccion completa que titula: Software Engineering: Forerunner or Cautionary Tale (Ingenieria de Sotware: Corredor delantero o cuento aleccionador).
    Vale la pena ver la definici'on que dio origen al termino Ing de Software: establishment and use of sound engineering principles to obtain economically software that is reliable and works on real machines efficiently.”
  • Luego dice: "It clearly has roots and affiliations in computer science, but its name and associations suggest an affiliation with engineering".
    Mas claro que el agua. Esto es como cardiologia y medicina.
  • En el proceso de acreditacion de ABET existe la comision de acreditacion de Ingenieria (EAC) y la de Computacion (CAC). En el articulo menciona que: "The program evaluators visiting a software engineering program are appointed by CSAB, but the team chair is a member of the EAC".
    Esta claro qeu quienes evaluan un programa de SWE son gente de Computacion y no ingenieros.
  • Engineers Canada has trademarked (registrado) the words “engineer” and “engineering” [3]. When Memorial University of Newfoundland attempted to offer an undergraduate degree in software engineering, the university was sued (demandada) by Engineers Canada.
    Esta es una buena idea para el CIP cosa que nadie mas que los miembros del club podrian utilizar dicha palabra (solo los que estan al dia claro y si no pagan les aplican la ley y asi protegen a los puntuales).
  • Fijense tambien qeu indica que un aprox de 40 estados en EEUU actualmente han creado examenes para licenciar (noten que esta es la razon de la palabra licenciado-> alguien que tiene licencia) a profesionales en Ingenieria de Software.
    Tambien menciona el numero exacto de personas que hay tomado este examen: 16 (dieciseis exactamente) y luego tambien menciona que son 1000 con el estandar internacional. Cuantos seran peruanos?
    Indudablemente no se trata de ningun tipo de tendencia a nivel mundial.
    Tambien indica queeste numero se debe a que este examen involucra conocimientos comunes a todo ingeniero: mecanica de fluidos, resistencia de materiales, electricidad, magnetismo y termodinamica.
    Que opinan los defensores de esta tendencia (nula) a nivel mundial? 
  • Aqui hay otra frase super interesante: The resulting Certified Software Development Professional (CSDP) examination was first offered in 2002. Note the deliberate avoidance (evasion) of the words “engineer” and “engineering.”
    Me pregunto si esto es lo que harian en Peru?
  • Aqui una frase muy fuerte pero muy real:
    Finally, there has not yet been any pressure from industry to hire software engineers with formal academic background in software engineering.
    En el Peru tampoco existe esa presion  de parte de la industria pero el CIP trato de crearla a traves de la ley. Como no es real pues la gente la ignora simplemente.
Indudablemente estamos frente a algo de velocidad incomparable con otras disciplinas ... crecio muy rapido y afecto todo lo que el ser humano hace en la actualidad.

La velocidad de esta disciplina es requiere que cada uno de nosotros le dediquemos un tiempo para entender la naturaleza de la misma y requiere tambien que estemos dispuestos a reaprender los conceptos que ya teniamos acunados en nuestras mentes.

Saludos
er

martes, 30 de diciembre de 2014

BBVA (Tratamiento de excepciones)

Holas,

Sobre este asunto de excepciones no atrapadas del BBVA que envie hace algunos dias ... (ver excepcion al final de este email) me gustaria hacer un comentario en voz alta que suelo hacer a mis alumnos ...

Todo programa debe tener un catch en el nivel mas alto de codigo que este bajo nuestro control y de esa forma evitar que la excepcion siga subiendo hasta el Sistema operativo y termine en algo asi. de feo en la pantalla del usuario.

Tambien es necesario siempre prestar atencion a la documentacion de las librerias que se utiliza pues si ahi dice que puede lanzar una excepcion hat que ponerle su try/catch siempre.

Sin embargo, con respecto al tratamiento de la excepcion hay varios niveles que me gustaria comentarlos de manera informal.

Nivel 1.- La excepcion es lanzada y el codigo nuestro no la atrapa entonces sigue subiendo hasta el nivel del Sistema Operativo y termina apareciendo en la pantalla del cliente y el desarrollador jamas se entera del problema sucedido.
Esta es la peor situacion.

Nivel 2.- El codigo tiene un catch y muestra un mensaje de error amigable al usuario pero los detalles internos (como el stack) no se muestran.
Esto esta mejor que el anterior pero los desarrolladores no se enteran del problema.

Nivel 3.- Se atrapa la excepcion, se muestra un mensaje amigable pero se guarda la misma en una tabla de la BD donde despues podamos analizar las causas y talvez reproducir el error. Ademas del stack tambien deberiamos guardar el usuario que la provoco, la hora, el IP, el navegador, etc. Con todo eso es mas facil que los desarrolladores puedan corregir el problema facilmente.
El problema aqui es que en un banco podriamos tener decenas de modulos y se formaria un cuello de botella en distribuir los errores a cada equipo.
Esta solucion no es escalable a grandes volumenes de esta ocurrencia.
Piensen por ejemplo en gmail con 400 millones de usuarios.

Nivel 4.- Se hace todo lo del nivel 3 pero ademas se procesa el stack de forma asincrona (sin interruimpir la hebra principal de ejecucion) se identifica (a partir del stack) que modulo es el que causo el problema y se graba toda la informacion en la BD pero ademas se direcciona el error al equipo de desarrollo responsable de la misma.
Esto es mejor que el anterior pero de nuevo no escala si el jefe del equipo tiene que procesar miles o millones de problemas por dia.

Nivel 5.- Capturamos la excepcion, grabamos toda la informacion relacionada a las condiciones en que aparecio la misma. Por otro lado en otro servidor y en otra hebra de menor prioridad nos podriamos conectar al controlador de versiones y detectar en que modulo sucedio y quien fue el que la programó ... asi podriamos direccionar el problema a quien mejor conoce lo que hizo.
De nuevo el problema es que si tuviesemos millares de casos asi seria una tarea no escalable.

Nivel 6.- Hacemos todo lo anterior pero ademas intentamos clasificar la excepcion y acumulamos todas las ocurrencias que sean del mismo caso para presentarlas en forma grafica al responsable.
Ademas podriamos crear un modulo de analisis de ocurrencias como estas de tal forma que al llegar a su trabajo el responsable podria analizar la ocurrencia de estas excepciones por rango de horas en un dia, por origen geografico, por browser, por idioma, etc.
Esta solucion si escala a millones de ocurrencias y permite que el desarrollador pueda corregir lo sucedido.

Nivel Complementario.- Siempre que uno hace un click que carga una nueva funcionalidad lo comun es que se cargue la misma.
Un profesional en computación sabe que el click es algo muy rico y que antes de cargar la nueva funcionalidad debo guardar esa ocurrencia del click junto con el usuario, IP, idioma, browser, hora, dipo de dispositivo, sistema operativo, funcionalidad anterior y posterior. Todo eso se hace de forma asíncrona en una hebra e¡con menor prioridad de tal forma que el usuario no se sienta perjudicado en el tiempo de respuesta de la aplicación.

Solo con esa informacion podria generarse un grafo de transicion de estados en una aplicacion y así podriamos, mas adelante, saber cuales son los caminos por los que se mueve la masa de usuarios. Podríamos detectar que funcionalidades son las mas frecuentes y las menos frecuentes.
Podríamos detectar las condiciones mas frecuentes en las cuales el usuario requiere una funcionalidad, etc.

Esta informacion sumada al Nivel 6 que mencioné anteriormente me da muchos elementos para corregir el software sin tener que preguntarle nada al usuario.

A mi me parece que esto es lo que haría alguien de ciencia de la computación. Es algo de sentido común y no lo he sacado de ningún libro y no estoy aplicando ninguna metodología ... solo sentido común y algo de abstracción.

Saludos
er

Error bean datos not found within scopeHa ocurrido un error procesando: https://150.250.252.104:16640/bdnt_pe_web/error_apl.jspMensaje: bean datos not found within scopeTraza: java.lang.InstantiationException: bean datos not found within scope 
at com.ibm._jsp._error_5F_apl._jspService(_error_5F_apl.java:86) at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1796) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:887) at com.ibm.wsspi.webcontainer.servlet.GenericServletWrapper.handleRequest(GenericServletWrapper.java:121) at com.ibm.ws.jsp.webcontainerext.JSPExtensionServletWrapper.handleRequest(JSPExtensionServletWrapper.java:222) at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:348) at com.grupobbva.ii.sf.servlets.OperacionCBTFServlet.formatErrorResponse(OperacionCBTFServlet.java:1532) at com.grupobbva.ii.sf.servlets.OperacionCBTFServlet.processPost(OperacionCBTFServlet.java:2897) at com.ibm.dse.clientserver.servlet.CSReqProtocolServlet.doPost(CSReqProtocolServlet.java) at com.ibm.dse.clientserver.servlet.CSReqProtocolServlet.service(CSReqProtocolServlet.java) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1796) at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:887) at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:90) at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1937) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:130) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:434) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:373) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:101) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java:566) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java:619) at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java:952) at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java:1039) at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1498)

sábado, 15 de noviembre de 2014

El "secreto" de CS-UCSP

Holas de nuevo,

En varias ocasiones me han preguntado que hemos hecho de diferente en la la carrera de CS-UCSP y la verdad es que no habia un plan previo hace 20 años pero terminó siendo consecuencia de algunas decisiones que se tomaron en 1995 cuando UCSP aun no fue creada, no había SPC.

Voy a dividir las cosas que se hicieron en dos grupos:

Decisiones indispensables (si te falla una de estas no tienes una buena carrera y todo podría fallar)
  1. Salimos a estudiar fuera y no en Peru (esto fue iniciativa individual no institucional ... no hubo ayuda del gobierno). Ver articulo de el postgrado y también la graduación del pregrado.
  2. Las maestrias/doctorados que hicimos fueron de tiempo completo y no de final de semana
  3. Abrimos las puertas a los chicos que vienen con grados academicos de ese tipo (en muchos lugares veo que los espantan y les ponen problemas).
  4. A la hora de repartir los cursos se hace por grado academico y no por antigüedad. Se prioriza el grado académico. Si llega alguien con doctorado pues se le asigna curso inmediatamente.
  5. Hemos ordenado el contenido mirando como referencia las propuestas internacionales y no las de Peru (incluyendo Lima).
  6. Hemos cambiado el nombre porque eso te da un norte claro y no pierdes el tiempo en poner cursos que no son prioritarios.
  7. TODOS los docentes tienen claro que somos y no perdemos el tiempo en discusiones se ser Ingenieria o no. Nadie habla de eso acá porque está claro.
  8. Todos nuestros alumnos reciben la explicación de lo que somos y de lo que no somos antes de postular y adentro el mensaje es único y es coherente de todas las fuentes con las que tiene contacto: profesores, alumnos mayores, direccion de carrera, autoridades, etc.
  9. No buscamos ganarle a otra univ de Lima ni de Arequipa. Nos interesa compararnos con Stanford, USP Brasil, UNAM y eso provoca que el ritmo cambie en la gente.
  10. Un Arequipeño ayuda a otro arequipeño. Fue así que se pudo llevar centenas de personas a estudiar fuera. Yo he tenido amigos meses durmiendo en el sofá de departamento en Brasil y gracias a eso pudieron seguir estudiando.
    Algo común en Peru es ir a estudiar fuera y no jalar a nadie. Luego vuelven y son islas y por eso no florece el asunto en la ciudad de origen.
  11. El ambiente institucional es muy favorable. en UCSP se pueden hacer las cosas sin preocuparse de la política.
  12. Los alumnos pueden tratar a sus profesores por su nombre. Esto es simple pero ayuda mucho porque tu no eres en titulo. Aquí sonaría gracioso que alguien exija ser llamado de Ingeniero habiendo mas de 15 magisters y 8 doctores. Si alguien pide ser llamado de Ingeniero probablemente significa que esta desactualizado.
  13. Las tesis se hacen en base a publicaciones de IEEE y de ACM y todos estan familiarizados con textos en inglés.
  14. Incluimos la tesis dentro de los 10 semestres y no tenemos cursos de titulacion ni cosas extrañas. La Ley universitaria ahora pide eso y no nos afecta nada.
  15. Los docentes a tiempo completo son del tipo que no hay que corretear ni estar chequeando. Esto es fundamental porque son gente que trabaja con piloto automático. Si un día no encuentras a alguno no significa que faltó sin avisar. Sabemos que la persona solita va a recuperar esas horas porque es alguien responsable.
Otras decisiones no indispensables pero de gran ayuda
  1. Pusimos cursos en ingles en el pregrado
  2. Comenzamos a hacer la sustentación de la tesis en ingles y luego tambien en portugues.
Ese es el "secreto" pero personalmente creo que no se ha hecho nada extraordinario ... solo hicimos lo que el sentido común dice que hay que hacer buscando el bien común ... el problema es que en muchos casos: "el sentido común es el menos común de los sentidos"

Cualquier profesional que busque la excelencia academica podría y debería haber hecho lo mismo.
El problema es que en muchos casos ponen por delante los intereses personales y no los del grupo.