Rodrigo A. Castro Campos‎ > ‎

1151060 - Temas Selectos de Lenguajes de Programación

Instructor: Rodrigo Alexander Castro Campos.
Trimestre: 2022-O.

Grupo: CSI01.
Horario: Martes y jueves de 9:15 a 11:30.
Salón: G206.

Contenido oficial del curso:
  • El lenguaje C++ y sus estándares.
  • Programación basada en objetos.
  • Programación orientada a objetos.
  • Programación genérica.
  • Retrollamadas y generadores.
  • Algoritmos concurrentes, operaciones atómicas e instrucciones ordenadas en memoria.
  • Mecanismos de manejo de errores.
  • Niveles de seguridad ante excepciones.
Calificación:

Habrán seis tareas y un examen diagnóstico. El curso se impartirá en el lenguaje C++ usando el compilador GCC. Las evaluaciones consistirán en la implementación de bibliotecas o programas que compilen con GCC y que cumplan con los requerimientos especificados en cada evaluación individual. Cada evaluación estará disponible con al menos una semana de anticipación con respecto a la fecha de entrega. Los códigos fuente de las evaluaciones deberán enviarse mediante el formulario habilitado para cada una. No se calificarán programas de ninguna otra forma. No habrá evaluación terminal.

Cada tarea recibirá una calificación en la escala entera de 0 a 100, mientras que el examen diagnóstico puede aprobarse o reprobarse. Para aprobar el curso, es requisito aprobar el examen diagnóstico. Si se cumple con el requisito anterior, la calificación final se obtiene de promediar las calificaciones obtenidas en las tareas. La escala de calificación en acta es:
  • Al menos 60 puntos para acreditar con S.
  • Al menos 73 puntos para acreditar con B.
  • Al menos 87 puntos para acreditar con MB.

De acuerdo al Reglamento de Alumnos de la UAM, es falta de los alumnos en contra de la institución el suplantar o permitir ser suplantado en la realización de actividades académicas y se impondrá desde amonestación escrita hasta suspensión por dos trimestres. Los alumnos que incurran en esta falta no tendrán derecho a aprobar el curso.

¡¡¡ Participa en el XVII Concurso de Programación de la UAM "Luis Erick González Moreno" !!!

Pueden consultar esta lista de problemas de "Programación Estructurada" para que practiquen.

Calendario: El siguiente calendario es tentativo y podrá cambiar a lo largo del curso.

  • 18/10: Presentación del curso. Introducción a C++. Función principal e inclusión de la biblioteca. Examen diagnóstico para el 25/10. Página de prueba y formulario de entrega. Resultados.
  • 20/10: Tipos fundamentales y sus propiedades. Literales y aritmética.
  • 25/10: Conversiones y moldeados. Inspección y deducción de tipos. Calificadores de tipo.
  • 27/10: Expresiones constantes. Inicialización de variables. Bloques y control de flujo.
  • 01/11: Día de descanso obligatorio.
  • 03/11: Tiempos de vida y referencias. Sobrecarga de funciones y paquetes de parámetros.
  • 08/11: Paso de parámetros. Enumeradores, estructuras y uniones.
  • 10/11: Arreglos y matrices. Declaraciones y definiciones, enlace y compilación separada. Tarea 1 para el 28/11. Sugerencias para la tarea. Página de prueba. Calificaciones.
  • 15/11: Macros y compilación condicional. Programación basada en objetos y semántica por valor.
  • 17/11: Constructores, destructores, copia y asignación. Apuntadores, memoria dinámica e idioma RAII.
  • 22/11: Sobrecarga de operadores y funciones miembro. Niveles de acceso. Semántica de movimiento.
  • 24/11: Elevación de excepciones como mecanismo de reporte de errores. Niveles de seguridad ante excepciones. Tarea 2 para el 12/12. Página de prueba. Calificaciones.
  • 29/11: Plantillas de tipo y especialización de plantillas de tipo. Aserciones en tiempo de compilación.
  • 01/12: Deducción de parámetros de plantilla, variables y alias parametrizados. Tipos de parámetros de plantilla.
  • 06/12: Implementación de rasgos de tipo. Uso de tipos dependientes.
  • 08/12: Plantillas de función. Plantillas con parámetros variables. Redireccionamiento perfecto de argumentos.
  • 13/12: Programación genérica: polimorfismo en tiempo de compilación con plantillas, rasgos de tipo y conceptos. Tarea 3 para el 23/12. Página de prueba. Calificaciones.
  • 15/12: Programación orientada a objetos: herencia, funciones virtuales y polimorfismo en tiempo de ejecución.
  • 20/12: Interfaces y herencia múltiple. Navegación de jerarquía e identificación de tipos en tiempo de ejecución. Tarea 4 para el 16/01. Página de prueba. Calificaciones.
  • 22/12: Funciones anónimas y funciones de orden superior. Retrollamadas y generadores. Tarea 5 para el 16/01. Página de prueba. Calificaciones.
  • 10/01: Uso de hilos, promesas y futuros. Variables locales a hilos. Condiciones de carrera.
  • 12/01: Operaciones atómicas y primitiva CAS. Algoritmos concurrentes de la biblioteca. Tarea 6 para el 19/01. Calificaciones.
  • Calificaciones finales.
Entornos de programación y compiladores que pueden usar localmente:
Entornos de programación que pueden usar en línea:
Bibliografía:
  • Castro Campos. Notas de curso (se irán actualizando conforme avance el trimestre).
  • “ISO/IEC 14882:2020 Programming languages — C++”, ISO, 2020.
  • Köppe T., “Working Draft, Standard for Programming Language C++”, ISO/IEC JTC1/SC22/WG21, 2022.
  • Meyers S., "Effective Modern C++", O'Reilly, 2014.
  • Stroustrup B., “The C++ Programming Language”, Addison-Wesley, 2013.
  • Williams A., "C++ Concurrency in Action", Manning, 2019.
Enlaces de interés: