_______________________________________________________________________________
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
- 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.
- Aprender a desarrollar programas
mezclando el uso de memoria dinámica y estática.
- Aplicar los conceptos de herencia
y polimorfismo en la solución de problemas bajo el contexto orientado
a objetos.
- Ampliar el concepto de programación,
resolviendo problemas en que la solución procedural sea la más
conveniente.
- Ampliar el concepto de programación,
resolviendo problemas en que la solución recursiva sea la más
conveniente.
Temario
- Java y C++ : Similitudes y diferencias.
(5 horas)
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.
- Aplicaciones con arreglos en
JAVA y C++ (8 horas).
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.
- Manejo de excepciones en JAVA
y C++. (4 horas)
- Archivos (6 horas)
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.
- Herramientas para el acceso directo
a memoria en C++ (6 horas)
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.
- Programación procedural
y recursiva en C++. (4 horas)
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.
- Listas encadenadas. (5 horas)
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.
- Herramientas de polimorfismo
y herencia en C++ y JAVA. (5 horas)
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:
- C++ for Java programmers. T.
Budd. Addsion Wesley 2000.
- Java, Java, Java. Object-Oriented
problem solving. R. Morelli. Prentice Hall 2000
- Cómo programar en C/C++.
Deitel y Deitel. Prentice Hall 1999.
- Cómo programar en JAVA.
Deitel y Deitel. Prentice Hall 1999.
- Problem solving with C++. Savitch.
Addison Wesley. 1998.
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++