Temario y Políticas Generales

I. Objetivos Generales

Al finalizar el curso, el alumno:
  • Conocer y manejar con soltura el concepto de apuntadores
  • Utilizar técnicas de programación para la solución de problemas utilizando algoritmos complejos.
  • Relacionar los conceptos de programación orientada a eventos y máquinas de estados para el diseño de sistemas.
  • Crear interfases gráficas utilizando el concepto de la programación orientada a eventos.
  • Asignar y tomar responsabilidades en equipos de trabajo.

II. Bibliografía

  • Kernighan, Brian, Ritchie Dennis; The C Programming Language; 2nd Edition; 1988. Prentice Hall
  • Oualline Steve, Practical C Programming, O¥Reilly & Associates, Inc. 1997
  • Prata, Stephen. 2005. C Primer Plus. 5th Edition, SAMS Publishing.
  • Harbison III, Samuel P. & Steele Jr. , Guy L.; C A Reference Manual. Prentice Hall; 5th Edition. 2002
  • Kochan, Stephen G.; Programming in C; Developer's Library - Sam's Publishing, 3rd Edition. 2005
  • Reek, Kenneth A.; Pointers on C; Addison Wesley. 1998
  • Joyanes Aguilar, Luis & Zahonero Martínez, Ignacio; Algoritmos y estructuras de datos. Una perspectiva en C; McGraw Hill. 1∞ Edición. 2004
  • Joyanes Aguilar, Luis & Zahonero Martínez, Ignacio; Programación en C. Metodología, algoritmos y estructura de datos; McGraw Hill. 2∞. Edición, 2005.
  • Loudon Kyle Mastering Algorithms with C, O¥Reilly & Associates, Inc. 1999
  • Deitel, H.M, Deitel, P.J.; Como Programar en C/C++; Prentice Hall; Segunda Edición
  • Wright, Peter; Beginning GTK+/GNOME Programming; Wrox; 2000.
  • Krause, Andrew. 2007. Foundations of GTK+ Development. Apress.
  • Loukides Mike, Oram Andy; Programming with GNU Software; O¥Reilly & Associates, Inc. 1997

III. Metodología

La metodología del curso consistirá en la exposición por parte del profesor del tema a tratar, contando con la participación de los alumnos. El alumno realizará reportes de lecturas adicionales sobre temas afines al curso, así como también trabajo de laboratorio a través de prácticas. Así mismo elaborará una serie de ejercicios y prácticas referentes al material cubierto en clase.

IV. Evaluación

  • Para poder aprobar el curso, se deberá aprobar tanto la parte teórica como la parte práctica por separado, así como haber cumplido con un 80% de asistencia (6 faltas).
  • Para poder aprobar el curso, el proyecto final deberdeberá tener una calificación aprobatoria
  • La calificación del curso será obtenida promediando prácticas, reportes de las prácticas, tareas, lecturas, tres exámenes parciales y un proyecto final.
  • Las prácticas, tareas y lecturas serán obligatorias. Se deberá entregar un resumen no mayor a una cuartilla por cada lectura resaltando los puntos principales de éstas.
  • Se deberá entregar un reporte por cada práctica realizada en el laboratorio, el cual deberá contener un análisis y diseño del programa a desarrollar. Dicho reporte se deberá entregar una semana antes de entregar el código fuente y el programa funcionando.
  • No se realizarán exámenes fuera de las fechas u horas establecidas.
  • Si no se entregan las prácticas de laboratorio y las tareas antes de cada examen parcial, no se tendrá derecho al mismo.
  • Para que el proyecto final pueda ser calificado, éste deberá estar funcionando, además de cumplir completamente con las especificaciones del mismo.
  • Cualquier plagio, copia o intento de copia en cualquier examen, tarea, pr·ctica o trabajo del curso, ser· razÛn suficiente para reprobar autom·ticamente la materia. El dejarse copiar tendr· la misma sanciÛn.
La parte teórica vale un 60% de la calificación final y la parte práctica (laboratorio) el otro 40% restante:

Parte Teórica está dividida de la siguiente manera:
  • Primer Examen Parcial rápidos :................ 20 %
  • Segundo Examen Parcial: .............. 30 %
  • Tercer Examen Parcial: ................ 30 %
  • Documentación de los Programas: .... 10 %
  • Tareas ............................................ 10 %

La parte práctica está dividida de la siguiente manera:
  • Programas (código): ......................... 30 %
  • Proyecto Final: .................................. 50 %
  • Documentación Proyecto Final: ......... 20 %

Promedio final: Cualquier calificación menor a 6 es no aprobatoria. La calificación final se regirá según la siguiente tabla:
  • de 6.0 a 6.49 => 6
  • de 6.5 a 7.49 => 7
  • de 7.5 a 8.49 => 8
  • de 8.5 a 9.29 => 9
  • de 9.3 en adelante 10

V. Calendarización de Exámenes

La entrega de tareas y prácticas se indicarán a lo largo del curso. Las fechas de exámenes y entrega de proyecto final, son las siguientes:
  • Primer examen parcial: 23 de septiembre de 2022
  • Segundo examen parcial: 21 de octubre de 2022
  • Tercer examen parcial: 18 de noviembre de 2022
  • Entrega del Proyecto Final: 9 de diciembre de 2022

VI. Temario

  1. Repaso
    • Apuntadores
    • Archivos
    • Depuración de programas utilizando gdb
  2. Estructuras de Datos
    • Manejo dinámico de memoria
    • Listas
    • Árboles
    • Tablas de dispersión
    • Grafos
  3. Métodos de Búsqueda y Ordenamiento
    • Métodos utilizando listas dinámicas de memoria
    • Métodos utilizando árboles
    • Métodos utilizando archivos
  4. Máquinas de Estado (SDL)
  5. Programación Orientada a Eventos
    • Introducción a GTK+
    • Conceptos generales
    • Widgets básicos y avanzados