Unidad GA2 - Elementos avanzados de programación

Países diferentes se encontrarán en distintas fases de desarrollo: Fase de Automatización (págs. 7, 17, 19).

 

Objetivo

Los estudiantes deberían ser capaces de diseñar, programar y evaluar sistemas relativamente complejos, basados en computadora, que son modelos de problemas orientados a procesos en muchos temas y áreas de aplicación.

Subobjetivos

Los estudiantes deberían ser capaces de:

  1. analizar metódicamente y modelar problemas relativamente complejos orientados a procesos, en una variedad de áreas de aplicación;
  2. aplicar análisis formales medianamente avanzados, diseños y técnicas de abstracción de datos para diseñar algoritmos efectivos, tipos de datos abstractos y estructuras de datos relativamente sofisticadas;
  3. codificar y realizar programas y subprogramas (Módulos) usando un entorno de programación de propósito general.;
  4. evaluar y explorar diseños alternativos para los programas.

Contexto

Los estudiantes deberían desarrollar habilidades para resolver problemas más complejos y sofisticados en muchas áreas de aplicación. Debe enfatizarse el modelado a través de la abstracción de datos (una técnica importante para mejorar la confianza y el uso continuado). Una atención específica debe darse a los algoritmos y estrategias para la simulación lineal avanzada, para las estructuras de datos no lineales, y para la implantación de las tipos abstractos de datos.

Contenido

Esta unidad se extiende y se construye sobre la unidad GA1: Fundamentos de Programación y Desarrollo de Software. Los estudiantes resolverán problemas de complejidad creciente desde áreas de aplicación reales.

Análisis de problemas

Los estudiantes desarrollarán modelos para sistemas relativamente complejos orientados a procesos, usando estrategias de diseño, como la modelado a través de los tipos abstractos de datos. Analizarán sistemas para determinar los tipos de datos básicos y las funciones asociadas, las cuales son usadas por estos objetos en el sistema.

Diseño

Los estudiantes desarrollarán tipos abstractos de datos para objetos identificados, los cuales deben ser reutilizados en otros diseños que incluyen a los mismos objetos. Los estudiantes diseñarán una solución para el problema expresado en términos modulares, que manipule objetos de las tipos abstractos de datos solo a través de funciones identificadas. Asimismo, diseñarán una interfaz de usuario efectivo y conveniente.

Programación

Los estudiantes construirán estructuras de datos sofisticadas en forma lineal y de árbol para representar los tipos abstractos de datos, construyendo también las funciones necesarias para acceder a dichos datos en un lenguaje de programación de propósito general que soporte la ocultación y el encapsulamiento de la información, directamente o mediante la simulación de abstracciones de datos. Los estudiantes codificarán su diseño en el lenguaje de programación.

Realización

Los programas codificados serán realizados y ejecutados en el entorno de programación. Los estudiantes primero realizarán, comprobarán y verificarán la realización de los tipos abstractos de datos y, sólo entonces, introducirán el programa.

Evaluación

Los estudiantes determinarán el orden de los indicadores de magnitud para comparar los algoritmos y practicarán algunos métodos formales básicos de verificación de programas.

Enfoques alternativos

Siempre que se disponga de las TIempo, se diseñarán estrategias usando otros paradigmas de desarrollo, tales como la metodología orientada a objetos o la programación lógica, que puede explorarse si los recursos lo hacen posible.

Temas

Ingeniería del software.

Análisis

Diseño

Algoritmos

Evaluación

Elementos de los lenguajes de programación

Optativo

Recursos

Recursos mínimos necesarios:

Recursos optativos

Conexiones

Fundamentos de programación y desarrollo de software (GA1)

Metodología

El énfasis hay que ponerlo más bien sobre los conceptos, teorías y prácticas de la disciplina que sobre la sintaxis del lenguaje. Es aconsejable usar, si es posible, el mismo lenguaje de programación estructurado para ambas unidades. La unidad tiene un contenido tradicional establecido que se describe en muchos libros de texto avanzados sobre estructura de datos. Los profesores y los diseñadores del currículo deberían considerar utilizar la estructura de estos textos como base para sus subunidades y desarrollo del currículo.


Anejo 3 Sumario Menú principal