¿Computer Science? ¿Panamá?


Si eres panameño, tienes un título en Ciencia de Computadoras o carrera similar, y estás pensando en continuar con una Maestría o PhD ...

Empieza aquí »

Introducción

Esta página está dirigida a estudiantes Panameños interesados en computación. El contenido explica lo que significa estudiar una Maestría o un PhD en Computer Science en Los Estados Unidos de América.

El título del website usa el nombre de la disciplina en Inglés, en lugar de Español, para evitar confusiones. Panamá y otros países latinoamericanos traducen el nombre a Ciencias Computacionales, y no a la traducción apropiada—Ciencia de Computadoras. Además, Ciencias Computacionales es el nombre de otra disciplina—Computational Science—la cual es una mezcla de Computer Science, Física, Matemáticas e Ingeniería.

Sobre el Autor

Mi nombre es Ramsés Morales. Obtuve el grado de PhD en Computer Science en el 2009, en la Universidad de Illinois en Urbana-Champaign. Mi investigación doctoral fue realizada junto al Prof. Indranil Gupta, en el Distributed Protocols Research Group (Grupo de Investigación de Protocolos Distribuídos). Previamente, en el 2005, obtuve el grado de Master of Science in Computer Science en la misma universidad. Mis estudios de maestría fueron apoyados por el Programa Fulbright.

Espero que este website ayude a responder preguntas, aclarar dudas, y corregir conceptos erróneos. Al escribirlo tengo en mente la siguiente pregunta, "¿Qué tipo de website me habría sido de ayuda al final de mis estudios, antes de iniciar mi travesía como estudiante graduado?"

Para cualquier comentario, sugerencia, crítica, o pregunta, por favor no duden en escribir al grupo de discusión, o si prefieren pueden escribirme un email.

¿Qué es una Maestría?

La maestría denota que te especializas en un área de la disciplina. El término "especializar" es algo nebuloso, porque muchas personas cursan materias en temas disjuntos sin enfocarse en una de las áreas de la disciplina; por ejemplo, el curso "Aprendizaje de Máquina" es muy distinto a "Temas Avanzados en Seguridad." Al final de los estudios la universidad te otorga el título MCS, Master in Computer Science.

Por lo general las universidades requieren un número específico de créditos, en materias del departamento de Ciencia de Computadoras. Los créditos se dividen en (1) materias fundamentales, (2) materias especializadas, y (3) materias de investigación. Las materias fundamentales son nombradas por la universidad, mientras que las otras materias son elegidas por el estudiante. Los estudios de maestría duran comúnmente de tres a cuatro semestres.

Una maestría es útil para personas con interés en ocupar puestos de mayor responsabilidad en una empresa de alta tecnología. Es común que personas con maestría lideren equipos de desarrollo de tecnología, cuando dicha tecnología es un producto que se va a ofrecer inmediatamente en el mercado. El salario de una persona con maestría es superior al de una persona sin maestría.

Si te interésa trabajar en la industria, o iniciar tu propia empresa, estudiar una maestría es importante.

¿Qué es una Maestría en Ciencias?

Lo dicho en la sección anterior aplica a una maestría en ciencias. Adicionalmente, una maestría en ciencias requiere realizar un trabajo de investigación original. Dicha investigación siempre culmina en una tésis de maestría, y comúnmente lleva a la publicación de un paper (ensayo/artículo de investigación) en una conferencia o en un journal (revista científica). El trabajo de investigación toma de uno a tres semestres y, dependiendo del adviser (profesor consejero), puede incluír uno o más proyectos. La investigación, además de ser una contribución original, también debe ser una contribución de importancia en el área de especialización. El título otorgado por la universidad es MSCS, Master of Science in Computer Science.

En términos prácticos, lo que se requiere para la tésis varía dependiendo de la especialidad. Un estudiante en la área de teoría podría demostrar uno o dos nuevos teoremas de interés. Para usar de ejemplo mi experiencia, como mi área es Sistemas Distribuídos, yo diseñé un sistema, analizé formalmente su comportamiento, lo estudié con simulaciones, y lo implementé para evaluar su comportamiento en el mundo real.

Una maestría en ciencias ofrece ventajas al buscar trabajo en comparación a una maestría, principalmente porque muestra capacidad creativa. Se puede ocupar puestos de investigación en la industria con una maestría, aunque se espera que los resultados de la investigación lleve al desarrollo de productos de manera inmediata. La maestría en ciencias da una mejor perspectiva sobre los problemas que existen en el área de especialización y como darles una respuesta innovativa; en otras palabras, es un buen activo si te interesa iniciar una empresa.

¿Qué es un PhD?

El Philosophiae Doctor, o Doctorado, se le otorga a personas que han demostrado habilidad para contribuír al avance de su área de especialización. El doctorado, más que estudio, es un entrenamiento en el que el candidato se prepara para distinguir problemas interesantes, investigarlos, y presentar nuevos modelos y teorías sustentados con resultados experimentales y analíticos. Por lo tanto, estudiar, en este contexto, significa crear conocimiento nuevo. Aunque parezca extraño, esa es la manera más pura de aprender.

Para hacer contribuciones nuevas, el candidato al doctorado debe estar íntimamente relacionado con su área de especialización, con los resultados teóricos más importantes, y además debe contar con buenas herramientas de análisis. También debe entender temas relacionados a su área de investigación e incluso temas completamente distintos, y tener la capacidad de hacer conexiones entre problemas que parecen no tener aspectos en común (por ejemplo, existen protocolos de enrutamiento de paquetes diseñados a partir de modelos matemáticos de colonias de hormigas y sus feromonas). Debido a esto, es normal que las universidades requieran cierta cantidad de créditos en materias avanzadas pertenecientes a temas nucleares, materias avanzadas en el área de especialización, y materias avanzadas en otras áreas.

Los estudios de doctorado duran por lo menos cinco años, y generalmente los estudiantes se dedican 100% a su investigación a partir del tercer año (no más materias). No se requiere hacer una maestría antes del doctorado, pero algunas personas iniciamos como estudiantes de maestría.

La tésis doctoral es un compendio del trabajo de investigación realizado. El proceso de investigación debe haber llevado a múltiples publicaciones en conferencias y journals con revisión de pares (los trabajos publicados son aquellos que sobreviven el escrutinio de un comité de expertos en el tema de la conferencia/journal). A diferencia de la tésis de maestría, la tesis doctoral debe ser defendida ante un comité de profesores, los cuales definirán si la contribución presentada en la tesis amerita el grado de doctor.

El estudiante de doctorado trabaja para su profesor consejero, discutiendo problemas interesantes, proponiendo maneras de abordarlos, y llevando acabo el trabajo de analizar y evaluar los algoritmos o teoremas. Además, implementar las ideas para luego evaluarlas en el mundo real es común en varias áreas (Sistemas Operativos, Gráficas por Computadoras, Compiladores...).

Normalmente las personas que estudian un doctorado tienen interés en (1) dedicar su vida a la investigación científica/tecnológica y (2) enseñar. El primer interés es obligatorio, y el segundo es opcional, aunque lo normal es que personas con interés en investigar también estén atraídas a la enseñanza. Noten que alguien interesado en un doctorado solo por el título no sobrevive el primer año.

Las personas con doctorado obtienen puestos como profesores universitarios*, científicos investigadores en un instituto de investigación privado o gubernamental, o científico investigador en la industria (en Microsoft Research, IBM research, y otros). El salario inicial es mayor que el de alguien con maestría. También es frecuente que compañías nuevas de alta tecnología sean la idea de un doctor recientemente graduado. Si el interés de una persona es trabajar en la industria, no necesariamente haciendo investigación, un doctorado no es conveniente.

*El grado de doctor es obligatorio si se quiere ocupar una posición como profesor. En Panamá no es así, y es algo que debe cambiar, ya que una universidad no es una colección de salones de clases. Una universidad es un lugar en donde se produce conocimiento nuevo y se comparte dicho conocimiento.

Prerequisitos

Esta sección habla de las materias esenciales que se deben haber aprendido antes de iniciar una maestría o doctorado. Obviamente, cosas como Cálculo Avanzado, Álgebra Lineal, Electromagnetismo son esenciales; pero no serán abordadas aquí ya que son de importancia en toda disciplina de ingeniería o ciencias. Los temas de esta sección pertenecen a Ciencia de Computadoras. Aquellos temas incluídos en esta sección que son más generales, como Teoría de la Probabilidad, los incluyo ya que son una herramienta utilizada a diario en todas las ramas de Ciencia de Computadoras.

Matemáticas Discretas

Matemáticas Discretas es probablemente la materia de mayor importancia que se debe dominar antes de iniciar los estudios graduados. La habilidad más importante obtenida en un curso de Matemáticas Discretas es el demostrar teoremas matemáticos de manera formal. Desde lógica básica como modus ponens, pasando por inducción matemática y pruebas estructurales, hasta pruebas en las que la creatividad matemática pura se suma a técnicas formales—todo esto te prepara para demostrar teoremas de manera formal.

Entre los temas esenciales están combinatorialidad, teorema binomial, teoría de números, funciones, lógica matemática, teoría de grafos y árboles, recurrencias, álgebra de Boole, teoría de conjuntos, teoría de grupos, probabilidad discreta.

Para subrayar su importancia, yo, que no me especializo en teoría, he tenido que estudiar Teoría de Grafos Aleatorios, para apoyar mi trabajo de investigación; obviamente no entendería dicho tema tan avanzado si no fuera por lo que aprendí de Teoría de Grafos al estudiar Matemáticas Discretas. Un curso específico en Teoría de Grafos, después de Matemáticas Discretas, me habría venido muy bien, aunque no es crucial. Probabilidad Discreta es otra herramienta que uso a diario para analizar mis algoritmos y protocolos.

Antes de empezar los estudios graduados, hay que desenpolvar el libro de Matemáticas Discretas, y resolver problemas de todos los capítulos. Discrete Mathematics and Its Applications, de Kenneth H Rosen (el libro de soluciones está a la venta), es una buena opción.

Estructura de Datos

La materia fundamental de programación, en donde se aprende estructuras de datos y algoritmos importantes como quicksort, listas enlazadas, árboles binarios, tablas hash, árboles-B. El curso normalmente se dicta en C o C++, ya que es importante aprender el manejo de la memoria al manipular las estructuras de datos. Un componente importante del curso es el análisis de características de las estructuras tales como, complejidad asimptótica del espacio requerido, y complejidad asimptótica del tiempo de computación requerido en las operaciones que manipulan las estructuras.

Análisis y Diseño de Algoritmos

Se puede decir que Ciencia de Computadoras es diseñar algoritmos eficientes y analizar su complejidad. En un buen curso de algoritmos, el estudiante se dedica a demostrar teoremas sobre propiedades del comportamiento de un algoritmo, y teoremas sobre la complejidad espacial y computacional del algoritmo. Se estudian algoritmos de ordenamiento, algoritmos de búsqueda,  estructuras de datos como árboles binarios, hash tables, y otros. Además, se estudia como probar que un algoritmo es NP-completo—que pertenece a problemas cuya solución no tiene un algoritmo eficiente—y como diseñar algoritmos de aproximación.

Para obtener una maestría o doctorado, toda universidad requiere que el estudiante apruebe un curso avanzado de algoritmos. Si aprobaste tu curso de algoritmos con una A, no vas a tener problemas para aprobar un curso avanzado, pero va a requerir bastante trabajo.

El mejor libro para estudiar el tema es Introduction to Algorithms, de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, y Clifford Stein. 

Teoría de Autómatas, Lenguajes y Computabilidad

Esta materia enseña los límites teóricos de las computadoras en cuanto a qué problemas pueden resolver, qué problemas no pueden responder (una computadora no puede responder, por ejemplo, si un programa va a terminar o no), y la (in-)eficiencia con la que pueden resolver un problema. Se aprende sobre autómatas finitos deterministas y no deterministas, hasta llegar a las Máquinas de Turing deterministas y no deterministas. En cada etapa se estudia que lenguajes (problemas) puede procesar cada tipo de autómata y por qué.

La referencia canónica es el libro Introduction to Automata Theory, Languages, and Computation de John E. Hopcroft, Rajeev Motwani, y Jeffrey D. Ullman.

Teoría de Probabilidad

Aunque esta materia no pertenece a la disciplina, los conocimientos obtenidos se utilizan a diario en cualquier especialización de Ciencia de Computadoras. Es importante entender en detalle las distribuciones discretas, distribuciones contínuas, múltiples variables aleatorias, cadenas de Markov, el Teorema del Límite Central, los conceptos básicos de procesos estocásticos y como simular. Un buen curso de teoría de la probabilidad se preocupa por demostrar los teoremas que conforman la teoría, dándole poca importancia a aplicaciones o "problemas de calculadora."

Áreas de Especialización

Para resumir lo dicho en secciones anteriores, estudiar una maestría significa aprender en mayor detalle sobre una o más áreas de la disciplina, y estudiar un PhD es hacer investigación en un área de la disciplina (lo cual implica conocer en profundidad esa área). A continuación presento una lista de las distintas áreas de especialización o investigación que existen en Computer Science. Notarán que algunas de las áreas nombradas no están representadas en universidades panameñas, en forma de cursos introductorios. Tomen en cuenta que la lista no es exhaustiva, ya que cada área tiene varias subdivisiones, y estas subdivisiones cambian con el tiempo.

  • Arquitectura
  • Análisis Numérico / Ciencias Computacionales
  • Bases de Datos
  • Bioinformática / Biología Computacional
  • Compiladores
  • Gráficas por Computadoras
  • Inteligencia Artificial
    • Visión de Máquina
    • Lenguaje Natural
    • Robótica
  • Interface Humano-Máquina
  • Lenguajes
    • Métodos Formales
    • Verificación Automática
  • Sistemas
    • Redes de Computadoras
    • Seguridad
    • Sistemas Distribuídos
    • Sistemas Operativos / Máquinas Virtuales
    • Sistemas de Tiempo Real
  • Teoría
    • Análisis de Algoritmos
    • Complejidad
    • Geometría Computacional
    • Teoría de Grafos y Combinatorialeidad

Notaran que todas las áreas de especialización son muy distintas entre sí. Las diferencias entre áreas hacen que, por ejemplo, un experto en Visión de Máquina sea un principiante en Sistemas de Tiempo Real, y vice-versa. Las materias que uno estudia en la licenciatura, o en los dos primeros años del PhD, van a ser influenciadas por el área de investigación a seguir. Por ejemplo, aprender Geometría Computacional es importante para hacer investigación en Robótica, pero en Interface Humano-Máquina no tiene utilidad (hasta donde estoy informado).

No solo los conocimientos cambian con el área, también las habilidades de la persona cambian con el área. Para hacer investigación en Sistemas Operativos se necesita experiencia modificando núcleos de sistemas operativos, y desarrollando sistemas de bajo nivel como un sistema de archivos. En Teoría dichas habilidades no son útiles, en su lugar es necesario tener una mente matemáticamente-creativa, capaz de aplicar con facilidad técnicas matemáticas, como respuesta a esa creatividad, para demostrar teoremas.

Financiamiento

Los Panameños normalmente obtenemos un fellowship o una beca. Estas opciones son útiles, pero no son necesarias en el caso de PhD o de una maestría con tesis

El IFARHU ofrece información sobre distintas becas y fellowships para estudiar maestrías y doctorados en USA. Una opción prestigiosa es Fulbright, manejada por la embajada de USA, la cual paga por estudios de maestria y PhD.

En el caso de estudios de doctorado, no es necesario tener una beca, ya que todos los estudiantes de doctorado trabajan como Teaching Assistant (asistentes de clase) o Research Assistant (asistente de investigación), recibiendo un estipendio comúnmente equivalente a trabajo de medio tiempo. Además, un *-Assistant tiene el beneficio de no pagar matrícula.

Consiguiendo un Adviser (prof. consejero)

Tu advisor es el profesor para el cual trabajas, y con quien llevas acabo tu trabajo de investigacion. Si eres su asistente de investigacion, el dinero que paga tu salario sale de alguno de los fondos de investigación (grants) de tu advisor. El papel del advisor es entrenarte para que te conviertas en un investigador de calidad: te ayuda a moldear ideas de investigación, si tu idea no funciona él te explica por qué, te dice si alguien ya resolvió el problema que creías nuevo, a punta de pluma roja te enseña a escribir ensayos científicos, te entrena para hacer una buena presentación en conferencias científicas, escribe la carta de recomendación más fuerte cuando te toque buscar trabajo.

El advisor en potencia se busca dependiendo de la investigación que uno quiere hacer. Para eso es necesario estar relacionado con las publicaciones científicas de los posibles profesores. Si uno esta interesado en Seguridad de Datos, hay que leer las publicaciones de los profesores que hagan investigación en Seguridad, para aprender cual es más interesante para uno.

La mejor manera de introducirse a un profesor, para convencerlo de que sea tu advisor, es tomar un curso avanzado (de investigación) con dicho profesor. Si la investigación resultante lleva a una publicación, en una buena conferencia científica, es casi seguro que te tome como su estudiante de PhD.

Algunas personas tienen un advisor antes de iniciar sus estudios. Por lo general, esto ocurre cuando uno tiene una publicación en una buena conferencia científica, al terminar los estudios de licenciatura, y dicha publicación es de interés para el profesor con el cuál quieres hacer tu PhD.

Preguntas Más Frecuentes (FAQ)

Es necesario ser un genio para aplicar a un programa doctoral u obtener un PhD?

Respuesta corta: No.

Respuesta larga:

El cociente intelectual promedio de las personas que se gradúan con un PhD, de universidades de USA, es 124. Este número no llega a las dos desviaciones estándard a la derecha de la curva—130 con el promedio definido como 100. En otras palabras, la persona promedio con un PhD de una universidad de USA es razonablemente inteligente :-). Para comparación, la persona promedio con un bachelor (lo que llamamos licenciatura en Panamá) tiene un cociente intelectual de 114.

Adicionalmente, aunque el cociente intelectual se puede extrapolar confiablemente a partir del puntaje en el GRE, es importante recordar que el comité evaluador que estudia tu aplicación al programa de PhD está más interesado en otros aspectos—la capacidad cognocitiva cruda no es la métrica principal. El comité evaluador tiene como una de sus prioridades, el determinar si el candidato es capaz de contribuír nuevas ideas, las cuales eventualmente concluyan en una publicación en un journal o conferencia. Por lo tanto, si tu aplicación a un programa doctoral lista una publicación en una buena conferencia, el comité evaluador te tendrá en consideración alta—un resultado parecido se puede lograr listando proyectos interesantes, como software publicado bajo una licencia de Software Libre.

Finalmente, en mi opinión, otras cualidades pueden ser más valiosas para sobrevivir un programa de PhD. Por ejemplo, ser fuerte emocionalmente y saber organizarse.