Cb00823
Computación II
Requisito: Haber aprobado Cb00822.
Generaciones a las que se imparte: Segundo semestre de ISC, ISI, LSCA, ISE.
Equivalencia:No tiene
Este programa ha sido
actualizado para entrar en vigor a partir de enero de 2002
Características generales del curso: En este curso es importante enfatizar habilidades de programación con
menor abstracción. 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 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 JAVA al lenguaje C++, como medio de aplicación
de los conceptos, aunque el énfasis principal estará en el lenguaje JAVA por
los contenidos del CTE. 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 pueden trabajar como ejemplos de TDA, el Tipo de Dato Abstracto Número Racional,
Complejos, Enteros Largos, etc...
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)
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.
2.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.
3.Manejo de excepciones en JAVA y C++. (4 horas)
4.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.
5.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.
6.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.
Recursividad en JAVA.
7.Listas encadenadas en JAVA y C++. (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.
8.Herramientas de polimorfismo y herencia en JAVA y C++. (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 texto:
Programming with Java. Barry Holmes.
Jones and Bartlett.
Libros
de consulta:
Metodología sugerida y actividades de aprendizaje
Seguir la estrategia del curso
SSD3 del CTE (ver temario del CTE), exponiendo en clase los conceptos relevantes,
después de la lectura previa del material por parte de los alumnos.
El profesor enfatiza en las
sesiones de clase, a través de ejemplos y ejercicios, los conceptos más relevantes
del curso. En los temas en donde haya opción, deberá introducir la comparación
de las herramientas de programación de JAVA con el lenguaje C++.
Los temas no cubiertos por el
material del CTE, deberán ser enseñados durante el curso con la estrategia que
el profesor decida.
Los ejercicios y quizes del
CTE pueden realizarse fuera del salón del clase, como tarea, y cuando el profesor
lo considere, puede permitir el trabajo en equipo para la solución de algunos
ejercicios.
Las sesiones de clase, también
pueden ser utilizadas por el profesor, para resolver dudas de los ejercicios,
o bien, para aplicar alguno de los quizes cortos del CTE.
Los exámenes de unidad del CTE
deberán ser aplicados fuera de la sesión de clase, en el Centro de evaluación
del propio campus, bajo las políticas definidas, en las fechas establecidas
por el profesor.
Políticas de evaluación sugeridas
Exámenes de unidad de CTE 55%
Actividades de aprendizaje del CTE 15%
Tareas adicionales propuestas por el profesor 15%
Examen final ITESM
15%
Puesto que los exámenes de unidad,
no necesariamente coinciden con los períodos de exámenes parciales del calendario
del ITESM, se sugiere reportar como calificación parcial, un promedio de las
calificaciones obtenidas hasta el momento del reporte.
Software de apoyo
Compilador de JAVA (se sugiere
JDK o RealJ) y de C++ .
Perfil del profesor
Profesor certificado por el
CTE en SSD3, con maestría y carrera en el área de computación, con experiencia
en desarrollo de software, de preferencia
en lenguaje JAVA y C++.