PROGRAMACIÓN E INGENIERÍA DE SOFTWARE
A. Algorítmica
I. Representación y manipulación de datos
- Taxonomía de las estructuras de datos
- Apuntadores (R, E, RP)
- Vectores, matrices, cubos, hipercubos (R, E, RP)
- Listas: simples, ligadas, doblemente ligadas, colas, pilas (stacks), colas de prioridades (R, E, RP)
- Árboles: binarios, n-arios (R, E, RP)
- Montículos (heaps), balanceados, árboles-AVL (R, E)
- Gráficas: no dirigidas, dirigidas, multigráficas, pesadas (R, E)
Sugerencias bibliográficas: [CORL90], [KNUD73], [KNUD73a], [MAGM90], [SEDR95], [WEIM95], [WIRN87]
II. Archivos
- Archivos de almacenamiento
- Dispositivos de almacenamiento (R)
- Parámetros de almacenamiento: número de cilindros, pistas, tiempo de acceso, posicionamiento, densidad de grabación (R, E, RP)
- Formas de almacenaje: modo texto y modo binario (R, E)
Sugerencias bibliográficas: [CORL90], [MAGM90], [SEDR95]
- Acceso secuencial (R, E, RP)
- Acceso directo y cálculo de posición (R, E, RP)
- Acceso por índices: índice secuencial ordenado (R, E)
- Acceso por índices: tablas de dispersión (R, E)
- Acceso por índices: árboles B y B+ (R, E)
Sugerencias bibliográficas: [CORL90], [MAGM90], [SEDR95]
III. Fundamentos de algorítmica
- Interpretación de algoritmos
- Resultado de algoritmos que involucren ejecución secuencial (asignación, condición e iteración) (R, E)
- Resultado de algoritmos que involucren ejecución recursiva (R, E)
- Resultado de algoritmos que involucren ejecución concurrente (R, E)
Sugerencias bibliográficas: [CORL90], [KNUD73], [MAGM90], [SEDR95], [WEIM95]
- Aplicación y reconocimiento de algoritmos de búsqueda y ordenamiento interno
- Burbuja, de inserción y selección: rangos de n para los cuales son recomendados, estructuras que requieren del lenguaje de implementación, con qué tipos de llaves son convenientes (R, E, RP)
- Rápido (quicksort), mezcla (mergesort), ordenamiento de Shell (shellsort), montículo (heapsort): rangos de n para los cuales son recomendados, estructuras que requieren del lenguaje de implementación, con qué tipos de llaves son convenientes (R, E, RP)
- Búsqueda: secuencial y binaria (R, E, RP)
- Búsqueda por interpolación (R, E, RP)
Sugerencias bibliográficas: [CORL90], [KNUD73a], [MAGM90], [SEDR95], [WEIM95], [WIRN87]
- Aplicación y reconocimiento de algoritmos de ordenamiento externo
- Polifase (R)
- Intercalación de archivos (R, E, RP)
- Cascada (R)
-
Mergesort (R, E, RP)
Sugerencias bibliográficas: [CORL90], [KNUD73a], [MAGM90], [SEDR95], [WEIM95], [WIRN87]
- "Ordenar" las distintas complejidades en algoritmos y las relaciones que existen entre distintas clases de complejidad (R)
- Dadas las funciones de complejidad, calcular el tiempo y espacio requeridos para problemas concretos que utilicen estructuras de datos con representaciones distintas (R, E, RP)
- Problemas tratables e intratables: P, NP y NP-completos (R)
Sugerencias bibliográficas: [CORL90], [HARD92], [MAGM90], [SEDR95], [WEIM95]
B. Paradigmas de programación y lenguajes
I. Fundamentos de los lenguajes de programación
- Elementos de modularización
- Subprogramas: diferencia entre procedimientos (subprogramas), funciones y macros (R, E, RP)
- Unidades, clases, bibliotecas, paquetes, módulos (R, E, RP)
Sugerencias bibliográficas: [GHEJ98], [PRAZ97], [SETR92]
- Mecanismos de modularización y su rango de aplicación
- Vinculación estática y dinámica (R, E)
- Paso de parámetros: momentos de evaluación de los parámetros, tipos de parámetros, de entrada (input, por valor), de salida (output, por referencia) (R, E, RP)
- Valores que regresan las funciones: simples o estructurados, ubicación en el ambiente de ejecución (R, E, RP)
- Acceso y ocultamiento de la información: datos locales, globales, privados, públicos, distintos niveles de localidad, estructura de bloques, anidamiento lexicográfico, anidamiento dinámico (de ejecución), áreas comunes y registros con campos variantes (R, E, RP)
- Programación por eventos o interrupciones: diferencias entre interrupciones y excepciones, facilidades para atrapar interrupciones o excepciones (E)
- Coordinación de procesos concurrentes y paralelos: secciones de exclusión mutua, semáforos, mensajes (E)
Sugerencias bibliográficas: [GHEJ98], [PRAZ97], [SETR92]
- Paradigmas de programación
- Programación estructurada (C) (R, E, RP)
- Programación orientada a objetos (C++ y Java) (R, E, RP)
- Programación funcional (Lisp) (R)
- Programación lógica (Prolog) (R)
- Conceptos de programación visual (R)
Sugerencias bibliográficas: [ARNK97], [BRAI90], [BURH90], [KERR91], [PRAZ97], [SETR92], [STRB93], [TOUD90], [WINB89]
C. Sistemas e industria del software
I. Ciclo de vida de sistemas
- Las fases del desarrollo de software
- Análisis preliminar (enunciado general del problema, propósito del sistema, requerimientos, principales entradas y salidas, diagrama de bloques del sistema, estimación de costos y beneficios y plan preliminar de desarrollo) (R, E)
- Análisis detallado (técnicas de recolección de información, determinación de los requerimientos detallados, formalización de los requerimientos, especificación de alcances y limitaciones del sistema) (R, E)
- Diseño preliminar (definición de restricciones, diseño de la arquitectura del sistema, definición de interfaces entre módulos) (R, E)
- Diseño detallado (descomposición de los módulos en componentes elementales, especificación de los componentes elementales, diseño detallado de entradas y salidas, diseño detallado de la base de datos) (R, E)
- Construcción (programación estructurada u orientada a objetos, pruebas de componentes) (R, E)
- Pruebas (elaboración del plan de pruebas, preparación de casos, establecimiento de criterios de revisión, elaboración de las pruebas, evaluación de resultados) (R, E)
- Instalación (manual de usuario, ayudas interactivas, capacitación, corridas de prueba) (R, E)
- Mantenimiento (correctivo, adaptativo, perfectivo, pruebas de regresión, técnicas de mantenimiento) (R, E)
Sugerencias bibliográficas: [PRER92], [PRER92a], [SOMI96]
- Ciclos de vida de desarrollo de sistemas
- En cascada (R, E)
- Espiral (R, E)
Sugerencias bibliográficas: [PRER92], [PRER92a], [SOMI96]
II. Metodologías para el desarrollo de sistemas
- Enfoque funcional (Yourdon)
- Análisis estructurado (diagrama de flujo de datos, diccionario de datos, miniespecificaciones, diagramas de transición de estado) (R, E)
- Diseño estructurado (diagramas de estructura, acoplamiento, cohesión, análisis de transformaciones, análisis de transacciones) (R, E)
Sugerencias bibliográficas: [PRER92], [PRER92a], [SOMI96], [YOUE93]
- Modelo entidad-relación (R, E)
- Jackson System Development (R, E)
- Metodología Warnier-Orr (R, E)
Sugerencias bibliográficas: [PRER92], [PRER92a], [SOMI96]
- Enfoque orientado a objetos
- Conceptos generales (características y conceptos del modelo de objetos, clases y objetos, relaciones entre objetos, relaciones entre clases) (R, E)
- Análisis orientado a objetos (el modelo de objetos, el modelo dinámico, el modelo funcional) (R, E)
- Diseño orientado a objetos (definición de la arquitectura del sistema, diseño del componente del dominio: de la interfase humana, del problema, de la administración de tareas y de la administración de datos, refinamiento de clases y objetos) (R, E)
Sugerencias bibliográficas: [BOOG96], [CODY90], [CODY90a], [FORJ91], [JACC96], [MARO94], [MARO97], [MARO97a], [MARR95], [RUMB96]
- Tipos (uppercase, lowercase) (R)
- Componentes (R)
Sugerencias bibliográficas: [GANC90], [MCCC89]
III. Administración del desarrollo y la calidad del sistema
- Administración de proyectos
- Estimación de tiempo y costo de cada actividad (R, E)
- Planificación temporal de proyectos (gráficas de GANTT y ruta crítica) (R, E)
Sugerencias bibliográficas: [COHD96], [MCCC89]
- Aseguramiento de la calidad
- Concepto de calidad (R)
- Estándares (R, E)
- Especificaciones (R, E)
- Factores de calidad (corrección, confiabilidad, eficiencia, facilidad de uso, de prueba y de mantenimiento, adaptabilidad y flexibilidad, portabilidad, reuso, completud, facilidad de auditoría) (R, E)
- Métricas de calidad (diferencias entre el sistema y las especificaciones y estándares) (R, E)
- Revisiones técnicas (R, E)
Sugerencias bibliográficas: [SANC94], [YOUE92]
IV. Industria del software
- Pruebas betas (R, E)
- Control de versiones (R, E)
- Soporte técnico (R, E)
Sugerencias bibliográficas: [COHD96], [CONS95], [ELLE98]
|