UANL

Lenguajes de programación

Otoño 2011

Este es el sitio web de la unidad de aprendizaje Lenguajes de programación impartida por la Dra. Elisa Schaeffer en la FIME de la UANL en el semestre agosto-diciembre del 2011 los sábados en el horario V1-3 (12:00-14:30) en el salón 4204.

Presentación

Esta unidad de aprendizaje profundiza las competencias de desarrollo de software por ampliar la visión del estudiante con respeto a la programación. En particular aporta a seleccionar el lenguaje de programación a la par con la tarea y aprovechar el poder de diferentes mecanismos algorítmicos. El alumno desarrolla sus conocimientos del campo de sistemas computacionales y su capacidad de aplicarlos. El conocer una gama amplia de lenguajes de programación también prepara el estudiante para el aprendizaje autónomo de tecnologías futuras. El aprendizaje avanza de manera estructurada que profundiza una familia particular de lenguajes a la vez, descubriendo nuevos conceptos formales de la computación en casa paso, conectando este nuevo aprendizaje con los fundamentos que llevan desde el semestre anterior de estudios.

Propósito

En el desarrollo de esta unidad de aprendizaje se contribuye a la formación de egresados con valores. Asimismo contribuye a que el estudiante desarrolle conocimientos avanzados, generales o especializados, así la como capacidad para aplicarlos a situaciones concretas. Provee habilidades y herramientas para el aprendizaje autónomo y pone en práctica una dinámica de superación constante. Practica los valores y atributos que la Universidad promueve. Es positivo ante la vida y el estudio; competitivo a nivel internacional por sus conocimientos, destrezas, actitudes y aptitudes. Además posee competencias sociales y capacidades de comunicación y persuasión que le permiten desenvolverse en un contexto internacional. Es emprendedor y ejerce liderazgo, con capacidad para dirigir y coordinar y es capaz de trabajar en equipo y desarrollar proyectos conjuntos.

Los conceptos de flujo de control y subrutinas, incluyendo selección, iteración y recursión, fueron fundamentados en el segundo semestre en las unidades de programación y algoritmos computacionales o estructuras de datos. También los conceptos de autómatas y lenguajes formales originan de allá y se profundizan en la unidad de matemáticas discretas.

En esta unidad de aprendizaje el énfasis está en las diferencias de los lenguajes de programación que permiten seleccionar para cada aplicación particular aquel que mayores fortalezas tiene para su solución adecuada. El estudiante aprende, combinando estas nuevas competencias con las de unidades anteriores, analizar la situación que enfrenta, modelar el problema particular, evaluar opciones para su solución, elegir las herramientas adecuadas, implementar la solución y evaluar su factibilidad, calidad e impacto. Le ayuda a profundizar su conocimiento abstracto de la esencia de la programación a través de dominar sus distintas paradigmas.

Compentencias

Unidades temáticas

Son 10 sesiones semanales, las sesiones 5 (el 10 de septiembre) y 10 (el 15 de octubre) siendo los examenes (medio curso y ordinario). Desde la segunda semana hay entrega de tarea. Todas las tareas se incorporan al blog del estudiante que fungirá como su portafolio de evidencia. Los enlaces en los temas apuntan a las diapositivas resumidas en .pdf.

  1. Elementos fundamentales de lenguajes de programación - sintaxis y semántica
    • Competencia particular
      • Identificar los elementos de sintaxis y semántica de los lenguajes de programación para comprender su propósito y funcionamiento
    • Productos de actividades
      • Mapa conceptual de lenguajes de programación (semana 2)
      • Reporte de estudio de caso (semana 3)
  2. Compilación e interpretación - lenguajes de scripting
    • Competencias particulares
      • Entender la estructura y función de lenguajes script para aprovecharlos en el desarrollo de software
      • Identificar las diferencias en modo de operación y eficiencia de los compiladores y los intérpretes
    • Productos de actividades
      • Presentación sobre arquitectura de compiladores y/o intérpretes (semana 4)
      • Reporte de por lo menos tres programas script en distintos lenguajes (semana 5)
    • Ejemplos
  3. Flujo de control bajo subrutinas y recursión - lenguajes funcionales
    • Competencias particulares
      • Entender la estructura y función de lenguajes funcionales para aprovecharlos en el desarrollo de software
      • Conceptualizar el flujo de control de un programa para su representación gráfica, análisis y mejora
    • Productos de actividades
      • Presentación de flujo de control recursivo (semana 6)
      • Reporte de por lo menos dos programas en lenguajes funcionales distintos (semana 7)
    • Ejemplos
  4. Lógica computacional - lenguajes lógicos
    • Competencia particular
      • Entender la estructura y función de lenguajes lógicos para aprovecharlos en el desarrollo de software
    • Productos de actividades
      • Reporte de resolución de problemas (semana 9)
      • Reporte de por lo menos un programa en un lenguaje lógico (semana 10)
  5. Selección e iteración - lenguajes imperativos
    • Competencias particulares
      • Entender la estructura y función de lenguajes imperativos para aprovecharlos en el desarrollo de software
      • Identificar y solucionar problemas computacionales que permiten procesamiento eficiente via mecanismos iterativos
    • Productos de actividades
      • Presentación de flujo de control iterativo (semana 11)
      • Reporte de por lo menos cuatro programas en lenguajes imperativos distintos (semana 12)
  6. Tipos de datos - lenguajes orientados a objetos y multiparadigma
    • Competencias particulares
      • Entender la estructura y función de lenguajes orientados a objetos para aprovecharlos en el desarrollo de software
      • Identificar los mecanismos de definición y asignación de tipos que utilizan los lenguajes de programación para implementar programas eficientes y libres de errores
    • Productos de actividades
      • Presentación de tipos de datos - en línea (semana 13)
      • Reporte de por lo menos tres programas en lenguajes orientados a objetos distintos (semana 14)
      • Reporte de por lo menos un programa multiparadigma (semana 15)
    • Ejemplos

Evaluación

EvidenciaPonderación
Cuatro reportes (incl. programas) en los blogs30%
Tres ponencias (incl. blogpost)30%
Participación (en los blogs)20%
Dos exámenes: medio curso (preguntas 2011) y ordinario (preguntas 2011)20%

El examen extraordinario únicamente aplica para la recuperación de puntos del rubro exámenes. Para recuperar puntos de reportes, presentaciones y participación, el alumno debe realizar trabajos de puntos extra solicitados y otorgarlos al profesor antes del periodo de exámenes ordinarios del semestre en curso.

Producto integrador de aprendizaje

Un portafolio en el formato de blog con comentarios en línea, con ejercicios prácticos y teóricos sobre programación utilizando una variedad de lenguajes de programación que forman una "librería de plantillas" para los trabajos de programación que enfrenta el estudiante en su carrera profesional. Al finalizar la unidad de aprendizaje el estudiante entregará su portafolio para su evaluación, el cual contendrá todos los problemas propuestos del instructivo, resueltos correctamente, así como los reportes, presentaciones y registros de conclusiones e investigaciones generados en clase.

Resultados

Los nombres son ligas a los blogs de los participantes. NP significa que no hubo nada en el blog cuando esperaba ver la tarea ya hecha.

Participante Reportes Presentaciones Participación Exámenes Extra Total Oyente
César 4+NP+4+10 NP+16+14 1+1+1 2+5 12 70  
Chuy 1 5+7+7+NP/12 NP/2+NP/15+NP/10 1 4+8   71 X
Chuy 2 NP+7+8+15 NP+18+12 2+1 6+8   77  
Daniel 3+NP+NP+NP NP+NP+NP NP 3+NP Ninguno 6  
Gustavo NP/4+NP/5+NP+NP NP/10+20+8 1 3+9   60 X
Joziel 3+NP+NP+NP NP+NP+NP NP NP+NP Ninguno 3  
Lalo 4+7+10+10 NP+19+14 1+1+1+1 5+6   79  
Leo 4+13+NP+NP NP+28+NP 1 NP+NP Ninguno 46 X
Miguel 5+15+8+NP 15+21+15 1+1 4+6 Ponencias 91  
Mónica 4+8+15+NP/? NP+NP+12 1 2+7 Ninguno 49 X
Saúl 4+7+7+15 NP+20+10+NP/17   NP+NP Reportes
Ponencias
80 X

Materiales

Materiales generales sobre programación están disponibles en una página adicional.


Actualizada el 22 de octubre del 2011.
URL: http://elisa.dyndns-web.com/~elisa/teaching/prog/lenguajes/2011/