_______________________________________________________________________________
 
SISTEMA ITESM
 
_______________________________________________________________________________
 
Cb00824. COMPUTACION PARA INGENIERIA II
 
_______________________________________________________________________________

 
DATOS GENERALES
Cb00824 Computación para ingeniería II
Requisito: Haber aprobado Cb00821.

Requisito para planes de transición: Haber aprobado Cb95821.
Generaciones a las que se imparte:
Alumnos de ISC, ISI, LSCA, ISE, IEC, IFI que ya cursaron Computación para Ingeniería del plan 95, y que se han cambiado al plan 99 o al plan 2000.
Este curso se impartirá temporalmente, los semestres AD2000, EM2001 y AD2001.
 
Características generales del curso
:

Este curso deberá complementar la formación de los alumnos que han cursado Computación para Ingeniería del plan 95, en donde se utilizó como medio de aprendizaje el lenguaje C++. Además de fortalecer las habilidades de programación en el mismo lenguaje, el curso servirá para introducir a los alumnos en el desarrollo de aplicaciones para Internet a través del lenguaje JAVA.
En el curso se fortalecerán habilidades de programación a través del conocimiento de herramientas avanzadas en donde se mezclen diferentes niveles de abstracción. En el curso se hará una transición del lenguaje C++ al lenguaje JAVA, como medio de aplicación de los conceptos. Incluso es conveniente que los alumnos desarrollen aplicaciones bajo un contexto procedural o imperativo, descubriendo que no solo la programación orientada a objetos es la mejor opción para todos los problemas.

En la medida de que los temas se presten, el alumno deberá comparar las ventajas y desventajas entre las herramientas que provee el lenguaje JAVA y el lenguaje C++.

El curso, deberá introducir el concepto de Tipo de Dato Abstracto ya que le permite al alumno crear una visión mas estructurada en cuanto a la programación, además de que permite darle congruencia a la introducción de temas como sobrecarga de operadores, herencia, streams, y facilita la asimilación del concepto de apuntadores a un objeto. Se sugiere como texto de esta sección "Classical Data Structures en C++" de Timothy Budd. Se pueden trabajar como ejemplos de TDA, el Tipo de Dato Abstracto Número Racional, Complejos, Enteros Largos, etc...
Se sugiere manejar librerías para interfaz gráfica (para este nivel se sugiere utilizar una librería sencilla como la definida por Timothy Budd llamada PCLAF).
 

Objetivo General
Acrecentar la habilidad de resolver problemas por medio de la programación, a través de nuevas herramientas de programación y el conocimiento comparativo entre el lenguaje JAVA y el lenguaje C++.
 
Objetivos Particulares

  1. Fortalecer el pensamiento abstracto a través del uso de estructuras de datos lineales como archivos, arreglos y listas encadenadas para resolver problemas que manejan grandes cantidades de datos.
  2. Aprender a desarrollar programas mezclando el uso de memoria dinámica y estática.
  3. Aplicar los conceptos de herencia y polimorfismo en la solución de problemas bajo el contexto orientado a objetos.
  4. Ampliar el concepto de programación, resolviendo problemas en que la solución procedural sea la más conveniente.
  5. Ampliar el concepto de programación, resolviendo problemas en que la solución recursiva sea la más conveniente.

 
Temario
  1. Java y C++ : Similitudes y diferencias. (5 horas)

  2. 1.1 Comparación respecto a Tipos de datos, operadores y expresiones.
    1.2 Comparación respecto a estructuras de control.
    1.3 Comparación respecto a operaciones de Entrada y salida
    1.4 Comparación respecto a la definición, creación y uso de clases y objetos.
    1.5 Comparación respecto a la definición y uso de métodos y parametrización.
    1.6 Concepto de programación procedural o imperativa en C++.
    1.7 Concepto de tipo de dato abstracto.
     
  3. Aplicaciones con arreglos en JAVA y C++ (8 horas).

  4. 2.1 Definición de arreglos unidimensionales en C++. Comparación con JAVA.
    2.2 Métodos básicos de ordenamiento en un arreglo: Burbuja, Inserción, Selección.
    2.3 Strings en C++. Comparación con JAVA.
    2.4 Arreglos bidimensionales. Aplicaciones con matrices en ambos lenguajes.
     
  5. Manejo de excepciones en JAVA y C++. (4 horas)

  6.  
  7. Archivos (6 horas)

  8. 4.1 Tipos de archivo: texto, binarios con tipo, binarios sin tipo.
    4.2 Streams en JAVA y en C++.
    4.3 Aplicaciones con archivos de texto en ambos lenguajes.
    4.4 Aplicaciones con archivos binarios en ambos lenguajes.
     
  9. Herramientas para el acceso directo a memoria en C++ (6 horas)

  10. 5.1 Apuntadores en C++.
    5.2 Relación entre arreglos y apuntadores en C++.
    5.3 Aritmética de apuntadores en C++.
    5.4 Memoria estática y dinámica
    5.5 Creación y uso de arreglos y objetos dinámicos en C++. Comparación con JAVA.
     
  11. Programación procedural y recursiva en C++. (4 horas)

  12. 6.1 Implementación de funciones libres.
    6.2 Uso del typedef y el struct en C++.
    6.3 Recursividad como herramienta para el control de ciclos.
     
  13. Listas encadenadas. (5 horas)

  14. 7.1 Concepto de nodo y encadenamiento.
    7.2 Operaciones de inserción, desplegado y eliminación de nodos de una lista.
    7.3 Aplicación integradora de conceptos del curso.
     
  15. Herramientas de polimorfismo y herencia en C++ y JAVA. (5 horas)

  16. 8.1 Sobrecarga de operadores en C++.
    8.2 Uso de plantillas (templates) en C++.
    8.3 Manejo congruente de parámetros con objetos dinámicos y atributos dinámicos.
    8.4 Herencia en C++: Definición, clases abstractas y métodos virtuales.
     
     

Libros de consulta:

 
Descripción de recursos necesarios

Software de desarrollo de aplicaciones en C++ y Java.
 

Perfil del Profesor

Persona con preparación académica en el área de computación y con experiencia en la programación orientada a objetos utilizando Java y C++