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.

Bibliografía Actualizada

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++.