Magister en Computación...

40
PLAN DE ESTUDIOS Magister en Computación Científica Departamento de Cs. e Ing. de la Computación Universidad Nacional del Sur El siguiente es el programa de posgrado de la carrera Magister en Computación Científica en el Departamento de Ciencias e Ingeniería de la Computación de la Universidad Nacional del Sur. Objetivos La Computación Científica es un área de las Ciencias de la Computación orientada hacia la resolución de problemas mediante la construcción de modelos utilizando algoritmos numéricos implementados en computadoras. En Computación Científica se estudia cómo diseñar, analizar, implementar y aplicar adecuadamente métodos numéricos con el objeto de profundizar en el conocimiento y análisis de problemas reales para poder encontrar soluciones eficientes y confiables. Este programa resultará de interés para graduados de diversas disciplinas. En nuestros días, prácticamente todas las ramas de la investigación en las ciencias y del diseño en las ingenierías requieren diversos grados de conocimiento en computación científica. Motivaciones El rápido desarrollo del hardware y del software han incrementado considerablemente la importancia de la computación a gran escala en la comunidad científica. El empleo adecuado de estos recursos posibilita la resolución confiable de modelos de gran tamaño y complejidad, permitiendo abordar los problemas con mayor rigurosidad. En este marco, es importante que las universidades proporcionen programas de posgrado que permitan a los profesionales actualizarse para enfrentar con idoneidad los desafíos de esta transformación. Cabe destacar que un número cada vez mayor de universidades en Europa y Estados Unidos - por ejemplo las prestigiosas universidades de Stanford y Rice en EE.UU. y la de Oxford en Inglaterra - están ofreciendo estudios de posgrado fuertemente orientados hacia la computación científica. Por las razones antes mencionadas, la creación de este programa en nuestra universidad será beneficioso para numerosos profesionales en ciencia, ingeniería y tecnología que se vinculan con nuestro medio. Este programa permitirá a sus alumnos profundizar en sus conocimientos y adquirir experiencia y habilidad en el empleo de estrategias computacionales para resolver los problemas propios de su especialidad, impulsando de este modo el crecimiento científico tecnológico de nuestra región Requisitos La admisión de los aspirantes seguirá las siguientes pautas: 1. Deberán ser egresados de la Universidad Nacional del Sur que posean alguno de los siguientes títulos: Ingeniero Civil Ingeniero Industrial Ingeniero Químico Licenciado en Ciencias Geológicas Licenciado en Economía Licenciado en Matemática Licenciado en Química Licenciado en Ciencias Biológicas

Transcript of Magister en Computación...

PLAN DE ESTUDIOS

Magister en Computación Científica

Departamento de Cs. e Ing. de la Computación

Universidad Nacional del Sur

El siguiente es el programa de posgrado de la carrera Magister en Computación Científica en el Departamento de Ciencias e Ingeniería de la Computación de la Universidad Nacional del Sur. Objetivos La Computación Científica es un área de las Ciencias de la Computación orientada hacia la resolución de problemas mediante la construcción de modelos utilizando algoritmos numéricos implementados en computadoras. En Computación Científica se estudia cómo diseñar, analizar, implementar y aplicar adecuadamente métodos numéricos con el objeto de profundizar en el conocimiento y análisis de problemas reales para poder encontrar soluciones eficientes y confiables. Este programa resultará de interés para graduados de diversas disciplinas. En nuestros días, prácticamente todas las ramas de la investigación en las ciencias y del diseño en las ingenierías requieren diversos grados de conocimiento en computación científica. Motivaciones El rápido desarrollo del hardware y del software han incrementado considerablemente la importancia de la computación a gran escala en la comunidad científica. El empleo adecuado de estos recursos posibilita la resolución confiable de modelos de gran tamaño y complejidad, permitiendo abordar los problemas con mayor rigurosidad. En este marco, es importante que las universidades proporcionen programas de posgrado que permitan a los profesionales actualizarse para enfrentar con idoneidad los desafíos de esta transformación. Cabe destacar que un número cada vez mayor de universidades en Europa y Estados Unidos - por ejemplo las prestigiosas universidades de Stanford y Rice en EE.UU. y la de Oxford en Inglaterra - están ofreciendo estudios de posgrado fuertemente orientados hacia la computación científica. Por las razones antes mencionadas, la creación de este programa en nuestra universidad será beneficioso para numerosos profesionales en ciencia, ingeniería y tecnología que se vinculan con nuestro medio. Este programa permitirá a sus alumnos profundizar en sus conocimientos y adquirir experiencia y habilidad en el empleo de estrategias computacionales para resolver los problemas propios de su especialidad, impulsando de este modo el crecimiento científico tecnológico de nuestra región Requisitos La admisión de los aspirantes seguirá las siguientes pautas: 1. Deberán ser egresados de la Universidad Nacional del Sur que posean alguno de los siguientes títulos: Ingeniero Civil Ingeniero Industrial Ingeniero Químico Licenciado en Ciencias Geológicas Licenciado en Economía Licenciado en Matemática Licenciado en Química Licenciado en Ciencias Biológicas

Licenciado en Física Ingeniero Mecánico Bioquímico Ingeniero Electrónico Ingeniero Electricista 2. Deberán haber realizado estudios afines con la disciplina de la Computación Científica. En caso de no cumplir alguno de los requisitos anteriores la Comisión de Estudios de Posgrado del DCIC procederá a: 1. analizar los estudios de pregrado y posgrado realizados, tanto en la duración como en el contenido curricular, para establecer si cuenta con los antecedentes que acrediten conocimientos que lo vinculen a la temática de la carrera. 2. realizar una entrevista personal. De dicha evaluación surgirán los requerimientos, que a criterio de la Comisión de Estudios de Posgrado del DCIC, el solicitante deberá cumplir para alcanzar el nivel mínimo que habilite su ingreso al programa. Duración La carrera tendrá una duración mínima de dos años, incluyendo la presentación del trabajo de tesis conforme a lo establecido en el Reglamento del Departamento de Estudios de Posgrado. Estructura Este programa constará de un conjunto de materias obligatorias, una o más materias electivas y una tesis. Las materias obligatorias proporcionarán los conocimientos fundamentales requeridos en el campo de la computación científica. La materia electiva deberá tener como mínimo una carga de 60 horas y permitirá a cada estudiante profundizar en un tema de interés. Esta materia será seleccionada por el alumno en conformidad con su Director de Tesis. En caso que la materia electiva elegida no posea la carga mínima solicitada, podrá incluirse una segunda - también a elección del alumno de común acuerdo con su Director de Tesis - que permita cubrir la carga horaria requerida. Los cursos electivos deberán ser siempre aprobados por la Comisión de Estudios de Posgrado del Departamento de Ciencias e Ingeniería de la Computación, y estar reconocidos expresamente por el Departamento de Estudios de Posgrado. La tesis permitirá al estudiante iniciarse en la investigación científica adquiriendo experiencia directa en el planteo y resolución de problemas específicos en el campo de aplicación correspondiente a sus áreas de especialización Plan de Estudios Primer Año Primer Semestre Algoritmos y Estructuras de Datos (60 hs) Métodos Computacionales (60 hs) Segundo Semestre Visualización Científica (60 hs) Modelamiento Avanzado de Sistemas (60 hs) Sistemas Computacionales y Redes (60 hs) Segundo Año Primer Semestre Análisis de Algoritmos (60 hs) Tópicos Avanzados en Computación Científica (60 hs) Materia Electiva mínimo (60 hs) Segundo Semestre Elaboración de la Tesis Tesis En el momento de la inscripción, el estudiante y su Director deberán proponer a la Comisión de Estudios de Posgrado del Departamento de Ciencias e Ingeniería de la Computación el tema de tesis y el plan de trabajo correspondiente. Esta Comisión decidirá sobre su aprobación. La Tesis involucrará de un proyecto de investigación llevado a cabo por los estudiantes en forma

independiente bajo la supervisión de un profesor del Departamento de Ciencias de la Computación de la UNS, que cumpla con los requisitos académicos establecidos por el Departamento de Estudios de Posgrado para desempeñarse como Director de Tesis de Magíster. Cuando el tema de tesis requiera el aporte de un supervisor de otra especialidad, el Director podrá proponer a el Departamento de Estudios de Posgrado la designación de un Codirector, quien deberá cumplir con los mismos requisitos académicos que son exigidos para ser Director. En cuanto a los alcances y contenidos de la tesis, es aquí donde los estudiantes deben demostrar su habilidad para integrar conceptos y teorías matemáticas con el estado del arte en tecnología computacional, con el objeto de resolver un problema específico de interés y relevancia en ciencia o tecnología. El proyecto puede originarse a partir de un problema de la práctica profesional, o bien ser sugerido por los grupos de investigación del Departamento de Ciencias e Ingeniería de la Computación de la UNS o de especialidades afines a la formación del estudiante. Titulo Los egresados de este programa obtendrán el título de Magíster en Computación Científica. Plantel Docente El plantel docente de este programa de posgrado incluirá inicialmente a docentes e investigadores del Departamento de Ciencias e Ingeniería de la Computación de la UNS, los cuales participan actualmente en tareas de investigación y supervisión de estudiantes de posgrado. Administración El organismo responsable de este programa de posgrado será el Departamento de Ciencias e Ingeniería de la Computación de la UNS. Las actividades estarán supervisadas por una Comisión de Estudios de Posgrado designada por el mencionado Departamento.

Algoritmos y Estructuras de Datos

Descripción Se estudia la programación como un proceso que abarca diferentes actividades: especificación, análisis, diseño, implementación, verificación y documentación. Se resuelven problemas de simple y mediana complejidad, se presentan diferentes metodologías de programación complementarias y lenguajes de programación (imperativos) adecuados para soportar las metodologías propuestas. Dichas metodologías son aptas para la resolución de problemas de alta complejidad. La materia se divide en dos módulos, uno Introductorio y otro Avanzado. El primero comprende los conceptos y terminología básicos de computación, la resolución de problemas elementales (usando datos simples) y la construcción de algoritmos y su implementación en un lenguaje de programación. El diseño e implementación sigue los principios de la Programación Estructurada, el Refinamiento paso a paso y el Diseño Modular. El Módulo Avanzado apunta a la resolución de problemas de mayor complejidad. La recursividad surge como una herramienta natural para aquellos problemas cuya resolución puede plantearse a partir de instancias más simples del mismo problema. Se presentan recursos para definir y manipular datos estructurados y estructuras de datos. Se introducen conceptos para la programación en gran escala y se plantea una metodología de modularización basada en la abstracción y encapsulamiento de datos. Promoción Durante el cuatrimestre se realiza una evaluación de proceso. Semanalmente los alumnos entregan prácticos que son corregidos y devueltos, si están desaprobados lo deben entregar nuevamente. Los prácticos consisten en una lista de ejercicios, algunos incluyen la realización de programas. En todos los casos deben estudiar y entender los conceptos teóricos para poder resolver los problemas en forma correcta. Al finalizar el curso los alumnos deben realizar un proyecto integrador que incluye la realización de un programa. El problema es de mayor complejidad que los resueltos en los prácticos y abarca todos los tópicos fundamentales del curriculum. Se realiza una evaluación de resultados: del producto que presentan y de la defensa que realizan en forma presencial. Módulo introductorio Programa sintético Problemas, modelos y abstracciones Algoritmos Programas

Recursividad Programa analítico Problemas, modelos y abstracciones. Representación de Problemas. Gráficos, diagramas, modelos matemáticos, descripción verbal. Soluciones de problemas. Inferencia, analogía, similitud entre problemas, generalización y particularización. Problemas específicos y clases de problemas. Algoritmos. Conceptos básicos. Lenguaje de Diseño de Algoritmos. Datos y acciones. Estructuras de control. Algoritmos como primitivas. Resolución de Problemas usando un lenguaje de diseño. Diseño estructurado y modular. Refinamiento paso a paso. División de un problema en sub-problemas. Programas. Lenguajes de Programación. Conceptos básicos, sintaxis, semántica y pragmática. Lenguajes imperativos. Diagramas sintácticos y notación BNF. Conceptos básicos: constantes, variables, asignación. El concepto de tipo de dato. Tipos de datos simples. Estructuras de control: secuencia, condicional y repetición. Entrada y salida. Sub-programas. Pasaje de parámetros y entornos de referencia. Recursividad. Concepto. Definiciones y planteos recursivos. Implementación en un lenguaje de programación. Iteración vs. recursividad. Ejecución de algoritmos recursivos. Aplicaciones. Módulo avanzado Programa sintético Tipos de Datos Estructuras de Datos Ciclo de Vida del Software Encapsulamiento y abstracción Estructuras lineales Estructuras no lineales Aplicaciones Programa analítico Tipos de Datos. Conceptos básicos. Clasificación. Tipos de datos predefinidos y definidos por el programador. Tipos de datos simples y estructurados. Constructores provistos por el lenguaje: subrangos, enumerados, arreglos, registros, archivos secuenciales. Estructuras de Datos. Conceptos básicos. Clasificación. Estructuras estáticas y dinámicas. Estructuras enlazadas y estructuras no enlazadas. Implementación.

Ciclo de Vida del Software. Etapas. Metas: legibilidad, mantenimiento, eficiencia. Programación en gran escala. Metodologías de Desarrollo de Software. Dominios de Aplicación. Paradigmas y Lenguajes de Programación. Evolución. Integración de Paradigmas. Diseño de aplicaciones a gran escala. Confiabilidad, reusabilidad y extensibilidad. Encapsulamiento y Abstracción. El Rol de la abstracción. Librerías. Programación Modular. Oscurecimiento de información. Encapsulamiento de Datos. Tipos de Datos Abstractos. Definición e implementación. Estructuras lineales. Listas, Pilas y Colas. Aplicaciones. Definición e implementación de los correspondientes tipos de dato abstractos. Estructuras no lineales: Árboles, árboles ordenados, árboles binarios, árboles de búsqueda, árboles balanceados, tablas hash, grafos: conceptos básicos, clasificación, recorridos, aplicaciones e implementación (definición de estructuras de datos, implementación de algoritmos para la creación, búsqueda y actualización, análisis comparativo) Aplicaciones: Ordenamiento lineal. Búsqueda. Ordenamiento topológico Bibliografía −− Aho, A. V., Hopcroft, J. E. and Ullman, J. D. “Data Structures and Algorithms”. Addison Wesley, 1983.

−− Cairó y Guardati. “Estructuras de Datos. Mc Graw Hill”. 1993.

−− Dromey, R.: "How to solve it by Computer". Prentice Hall International. C.A.R. Hoare Series Editor. 1982.

−− Ghezzi, Carlo and Jazayeri, Mehdi. “Programming languaje Concepts”. John Wiley & Sons. 1998.

−− Ghezzi, C., Jazayeri, M. and Mandrioli, D. “Fundamentals of Software Engineerimg”. Prentice may. 1991.

−− Grogono, P. “Programación en Pascal” Addison Wesley. 1986.

−− Grogono,P.; Nelson,S. “Problem solving and computer programming”. Addison-Wesley, 1982.

−− Polya,G.: “Cómo plantear y resolver problemas” Ed. Trillas, México. 1970.

−− Schneider G.M., Bruel S.C., “Advanced Programming and Problem Solving with Pascal”. John Wiley & Sons, 1981.

−− Schneider, G. M. and Bruell. “Advanced Programming and Problem Solving With Pascal”. S. C. John Wiley Sons, 1981.

−− Schneider, M.; Perlman,D.; Weingart,S. “An introduction and problem solving with Pascal”, Wiley, 1978.

−− Standish, T. A. “Data Structures Techniques”. Addison Wesley, 1980.

−− Wirth N. “Algorithms + Data Structures = Programs”. Prentice Hall, 1976.

−− Wirth, N. “Programación en Modula-2”. El Ateneo, 1987.

Programa de Métodos Computacionales

Profesora: Dra. Nélida Beatriz Brignole Objetivos:

• Revisar conceptos fundamentales y explorar enfoques modernos que proveen técnicas computacionalmente adecuadas para resolver problemas realistas, grandes y o complejos

• Desarrollar en el estudiante el criterio para seleccionar, adaptar o diseñar adecuadamente métodos numéricos apropiados para problemas específicos

• Enfatizar las consideraciones que conducen a algoritmos eficientes y confiables

Evaluación: Trabajos Prácticos: realización de ejercicios y prácticas de laboratorio organizados por tópicos. Evaluación Final del curso: realización de un proyecto. El alumno debe presentar un reporte escrito y una presentación oral del mismo. Programa sintético:

1. Introducción 2. Solución Numérica de Sistemas Algebraicos 3. Aproximación Polinomial 4. Discretización

Programa Analítico:

1. Introducción a) Computación Científica b) Análisis de Errores c) Condicionamiento y Estabilidad

2. Solución Numérica de Sistemas Algebraicos a) Métodos Directos para sistemas Lineales b) Métodos Iterativos para Sistemas Lineales c) Ecuaciones No Lineales y Métodos tipo Newton

3. Aproximación Polinomial a) Técnicas de Interpolación b) Splines c) Cuadrados Mínimos

4. Discretización

a) Integración Numérica b) Derivación Numérica c) Resolución de Ecuaciones Diferenciales Ordinarias: Problemas a

Valor Inicial (IVP) d) Resolución de Ecuaciones Diferenciales Ordinarias: Problemas

con Condiciones de Contorno (BVP) e) Ecuaciones Diferenciales Parciales

Bibliografía Burden R.L. & Fairs J.D. Numerical Analysis, 6th Ed., PWS-Kent Publishing Co., 1997 Gander W. & Hrebicek J. Solving Problems in Scientific Computing Using Maple and Matlab, 2nd Ed., Springer, 1995 Kincaid D. & Cheney W. Numerical Analysis: Mathematics of Scientific Computing, Brooks / Cole Publishing Co., 1991 Stewart G.W. Afternotes on Numerical Analysis, SIAM, 1996

Visualización Científica Descripción El principal objetivo de la visualización científica es la representación gráfica adecuada tanto de los datos como de las tendencias y las relaciones clave que existen entre ellos. Diferentes propiedades y características de los datos pueden cambiar la manera en que se presente la visualización, pero no sus objetivos. La visualización científica permite explorar datos numéricos por medio de objetos visuales. A través de la visualización, los resultados de complejos cálculos numéricos se vuelven intuitivamente comprensibles y permiten investigar los aspectos relevantes de un determinado conjunto de datos. Un requerimiento fundamental de la visualización, es que nos dé una respuesta en tiempos interactivos. Los métodos utilizados en visualización científica son, en su mayoría, de gran costo computacional y es por ello que, para lograr una visualización en tiempos interactivos, es imperativo contar con métodos adecuados para los distintos conjuntos de datos. Objetivos El principal objetivo de este curso es introducir al alumno en conceptos básicos de visualización científica. Para ello, se comienza con una introducción a la visualización científica y a los procesos involucrados en la tarea de visualización. Luego se estudian y analizan los distintos métodos correspondientes a las dos grandes ramas de la visualización científica. Se finaliza con un proyecto de visualización que permite utilizar las técnicas vistas en una aplicación particular. Evaluación En cada clase, una persona individualmente o dos personas juntas realizan prácticos de programación que se discuten al terminar la clase. Además, sobre cada unidad se realizan trabajos prácticos teóricos que deben presentar la clase siguiente, discutiéndose en clase. Para terminar, realizan un trabajo integrador que deben presentar por escrito y exponer en clase. Para aprobar la materia deben aprobar tanto los trabajos prácticos de programación como los prácticos teóricos y la exposición. Programa Sintético 1. Introducción 2. Fundamentos de Computación Gráfica 3. Color 4. El Pipeline de Visualización. Los Datos. Los Mapeos. 5. Métodos de Modelamiento de los Datos 6. Técnicas de Visualización Científica

1. Visualización de datos volumétricos 2. Visualización de Flujos

Programa Analítico

2. Introducción ¿Qué es la Visualización?. Objetivos de la Visualización. Breve Historia. Distintas ramas de la Visualización. Ejemplos. Aplicaciones representativas.

3. Fundamentos de Computación Gráfica

Conceptos del modelamiento y rendering de objetos en 3D. El pipeline gráfico: espacio del objeto, espacio de la escena, espacio de la cámara, espacio de la pantalla. Transformaciones.

4. Color Concepto de color. Percepción humana del color. Espacios de color. El uso del color

en Visualización.

5. El Pipeline de Visualización El proceso de la Visualización: desde los datos crudos hasta la visualización en pantalla. Los Datos. Fuentes de obtención de los datos para una visualización. Clasificación de los datos. Atributos. Datos crudos. Datos derivados. Objetos abstractos de la Visualización. Imagen en Pantalla. Los Mapeos. Mejora y enriquecimiento de los datos: de los datos crudos a los derivados. Mapeo de la Visualización: de los datos derivados a los objetos abstractos de la visualización. Rendering: de los objetos abstractos a la pantalla.

6. Métodos de Modelamiento de los Datos

Introducción. Grillas. Triangulaciones y tetraedrizaciones. Métodos Convencionales. Datos Volumétricos Escalares. Datos Vectoriales y Tensoriales. Métodos Multirresolución.

7. Técnicas de Visualización Científica

Concepto. Voxels y Celdas. • Visualización de datos volumétricos

1. Métodos convencionales. 2. Rendering de volúmenes representados por su superficie. Algoritmos de

extracción de superficies. 3. Rendering directo de volúmenes. Modelos ópticos para el rendering de

volúmenes. Algoritmos. • Visualización de Flujos

1. Métodos de Advección 2. Métodos Globales 3. Métodos de Clasificación.

Bibliografía [ 1 ] Bartels, R., Beatty, J., Barsky, B., An Introduction to Splines for Use in

Computer Graphics and Geometric Modelling, Springer Verlag, New York, 1987. [ 2 ] Farin, G., Curves and Surfaces for Computer Aided Geometric Design,

Academic Press, New York, 1988. [ 3 ] Foley, J., Van Dam, A., Fundamentals of Interactive Computers Graphics,

Addison-Wesley, Reading, Massachussetts, segunda edición, 1992. [ 4 ] Gallagher, R. Editor, Computer Visualization: Graphics Techniques for Sc. And

Eng. Analysis , CRC Press, 1996. [ 5 ] Hearn,D., Baker,P., Gráficas por computadora, Prentice-Hall

Hispanoamericana, México, 1988.

[ 6 ] Kelly, P., Keller, M., Visual Cues: Practical Data Visualization, IEEE Computer

Society Press, 1992. [ 7 ] Newman,W., Sproull,R., Principles of Interactive Computer Graphics,

McGraw-Hill, New York, 1973. [ 8 ] Nielson, G., Shriver, B. Visualization in Scientific Computing, IEEE Computer

Society, 1990. [ 9 ] Nielson, G., Hagen, H., Müller, H. Scientific Visualization: Overviews,

Methodologies and Techniques, IEEE Computer Society, 1997. [ 10 ] Purchase, H., Wich aesthetics has greatest effects on human understanding,

Graph Drawing ´97, vol. 1353 of Lectures Notes in Computer Science, Springer-Verlag, 1997.

[ 11 ] Schroeder, W., Martin, K., Lorensen, B., The Visualization Toolkit: An Object-

Oriented Approach to 3D Graphics, Prentice Hall PTR, 1996.. [ 12 ] Vince,J., 3D Computer Animation, Addison-Wesley Publishers, Gran Bretaña,

1992. [ 13 ] Watt, A., 3D Computer Graphics, Addison-Wesley Publishing Company, 1993. [ 14 ] Watt, A., Watt, M., Advanced Animation and Rendering Techniques: Theory

and Practice, Addison-Wesley Publishing Company, 1993. Además se pueden consultar las siguientes publicaciones periódicas: ACM SIGGRAPH Proceedings ACM Transactions on Graphics IEEE Transactions on Visualization and Computer Graphics IEEE Computers Graphics and Applications

CURSO DE POSTGRADO MODELAMIENTO AVANZADO DE SISTEMAS

PROFESOR: Dr. Ignacio Ponzoni

CARGA HORARIA: 96 hs. OBJETIVO DEL CURSO El objetivo de este curso es presentar los conceptos y técnicas básicas para la construcción de modelos de simulación de sistemas mediante el uso de computadoras. En tal sentido, se introducirán diferentes métodos para simulación de Monte Carlo, simulación de eventos discretos y simulación continua. EVALUACIÓN DEL CURSO Trabajos Prácticos: realización de ejercicios y prácticas de laboratorio Evaluación Final del curso: realización de un proyecto de simulación sobre la base de un caso de estudio real propuesto por el alumno bajo la supervisión del profesor. El alumno debe presentar un reporte escrito y una presentación oral del proyecto TEMARIO PROGRAMA SINTËTICO: 5. Sistemas y Modelos 6. Simulación Continua 7. Simulación de Eventos Discretos 8. Otras Metodologías de Simulación PROGRAMA ANALITICO: 1. Sistemas y Modelos

1.1 Modelamiento de Sistemas. Componentes básicos de un sistema. Sistemas estáticos, discretos y continuos. Modelado de sistemas. Tipos de modelo. Métodos para resolver modelos. Métodos experimentales: Simulación.

1.2 Introducción a la Simulación.

Definición de simulación. Ventajas y desventajas de la simulación. Areas de aplicación. Etapas de una simulación. Construcción de modelos conceptuales de simulación. Casos de estudios introductorios: modelos de simulación de Monte Carlo, modelos de simulación para sistemas de inventario, modelos de

simulación para sistemas de colas y modelos de simulación para sistemas continuos.

1.3. Conceptos de Probabilídad y Estadística aplicados en Simulación.

Revisión de conceptos y terminología básica de estadística. Modelos estadísticos. Distribuciones discretas. Distribuciones continuas. Poisson. Distribuciones empíricas.

1.4. Generación de números y variables pseudo-aleatorias. Propiedades de los números aleatorios. Generación de números pseudo-aleatorios. Técnicas para la generación de números aleatorios. Tests para números aleatorios. Generación de variables pseudo-aleatorias. Técnica de la transformada inversa. Transformación directa de las distribuciones Normal y normal logarítmica. Método de convolución. Técnica de aceptación y rechazo.

1.5 Etapas del Proceso de Simulación

1.5.1 Modelamiento de los datos de entrada de una simulación. Recolección de datos. Identificación de la distribución de los datos. Estimación de parámetros del modelo. Tests de bondad de ajuste.

1.5.2. Verificación y validación de modelos para simulación.

Construcción, verificación y validación de modelos. Verificación de modelos de simulación. Calibración y validación de modelos.

1.5.3 Análisis de los datos de salida de la simulación.

Tipos de simulación con respecto al análisis de la salida. Naturaleza estocástica de los datos de salida. Medidas de desempeño y estimación. Comparación de sistemas alternativos.

2. Simulación Continua

2.1 Modelos de Simulación de Sistemas Continuos. Construcción y análisis de modelos para sistemas de retroalimentación. Conceptos básicos: demoras, niveles, tasas y políticas. Diagramas de influencia. Software para simulación de sistemas continuos. Casos de estudio.

3. Simulación de Eventos Discretos

3.1 Construcción y Análisis de Modelos para Sistemas de Colas.

Características y conceptos básicos de los sistemas de colas. Medidas de desempeño en sistemas de colas. Comportamiento de estado estacionario de modelos de Markov de población infinita. Comportamiento de estado estacionario de modelos de población infinita. Redes de colas.

3.2 Modelos de Simulación de Sistemas de Eventos Discretos.

Conceptos básicos: sistema, modelo, estado del sistema, entidad, atributos, eventos y actividades. Vistas del Mundo. Planificación de Eventos. Técnica de Bootstrapping. Barrido de Actividades. Interacción de Procesos. Método de las tres fases. Programación de modelos de simulación de eventos discretos. Construcción de Modelos de Simulación utilizando Software de Interacción Visual. Uso de herramientas computacionales para simulación de Monte Carlo.

4. Otras Metodologías de Simulación

4.1 Modelos de Simulación de Monte Carlo y Análisis de Riesgo. Construcción de Modelos de Simulación de Monte Carlo. Análisis de Riesgo. Aplicaciones de Investigación Operativa. Aplicaciones Financieras. Aplicaciones Computacionales. Uso de herramientas computacionales para simulación de Monte Carlo.

4.2 Ambientes inteligentes: aprendizaje automático y simulación. Simulación orientada a objetos. Simulación distribuida. 4.3. Evolución del software para simulación en distintas disciplinas científicas.

Selección del software apropiado. Simulación en C++. Simulación en GPSS. Simulación en CSIM. Otros paquetes comerciales. Arena. AutoMod. Micro Saint. WITNESS. Herramientas para experimentación y análisis de resultados. Tendencias actuales en software para simulación.

BIBLIOGRAFÍA 1. Ross Sheldon M., Simulación, 2 edición, Prentice-Hall, 1999. 2. Richard M. Fujimoto, Parallel and Distributed Simulation Systems, Wiley Series on

Parallel and Distributed Computing, 1999. 3. Harvey Gould, Jan Tobochnik y Julia Berrisford, An Introduction to Computer

Simulation Methods: Applications to Physical Systems, Addison-Wesley, 1995. 4. John A. Jr. Hamilton, David A. Nash y Udo W. Pooch, Distributed Simulation, CRC

Press Computer Engineering Series, 1997. 5. B. Khoshnevis, Discrete Systems Simulation, McGraw-Hill, Inc., 1994. 6. Rubin H. Landau, Manuel J. Paez Mejia, Hans Kowallik y Heri Jansen,

Computational Physics: Problem Solving With Computers, John Wiley & Sons, 1997.

7. Averill M. Law, David W. Kelton, W. David Kelton, David M. Kelton, Simulation Modeling and Analysis, 3rd edition, McGraw-Hill Series in Industrial Engineering and Management Science, 1999.

8. T.G. Lewis y B.J. Smith, Discrete Systems Simulation, Houughton Mifflin Company, 1979.

9. Francis Neelamkavil, Computer Simulation and Modelling, John Wiley & Sons, 1987.

10. M.G. Singh, A.Y. Allidina y B.K. Daniels, Parallel Processing Techniques for Simulation, Applied Information Technology, Plenum Pub Corp, 1987.

11. Lawrence E. Widman, Kenneth A. Loparo y Norman R. Nielsen, Artificial Intelligence, Simulation, and Modeling, John Wiley & Sons, 1989.

12. George W. Zobrist y James V. Leonard, Object-Oriented Simulation: Reusability, Adaptability, Maintainability, IEEE Press, 1998.

13. Zeigler B.P., Praehofer H. y Kim T.G., “Theory of Modelling and Simulation. Integrating Discrete Event and Cotinuous Complex Dynamic Systems”, second edition, Academic Press, 2000.

Sistemas Computacionales y Redes Descripción: El curso desarrolla los conocimientos de Sistemas Computacionales desde una visión conceptual y estructural tomando como base de desarrollo los sistemas operativos y distribuidos. Se presentan los aspectos internos de los sistemas operativos y la problemática de las aplicaciones distribuidas. Se discuten tópico como: servicios de sistemas operativos, sistemas de archivos, planificación de CPU, manejo de memoria virtual, planificación de discos, interbloqueos, procesos y programación concurrente, protección, sistemas distribuidos, etc. Se presentan algunos ejemplos de estos conceptos en las familias UNIX, Windows 2000, XP, Solaris, etc a lo largo del desarrollo de los módulos, mostrando los matices de implementación entre estos sistemas. Objetivo: Adquisición de conocimientos sobre como se comportan los sistemas que sirven de soporte para el desarrollo de aplicaciones y de que manera influyen estos en el rendimiento de las mismas. Promoción: Examen Final, desarrollo de tres trabajos prácticos con entrega en fecha y dos proyectos de laboratorio. Trabajos Prácticos: Problemas sobre los temas desarrollados; aproximadamente 12 problemas por trabajo práctico. Proyectos de Laboratorio: Proyecto 1: Manejo de hilos de control, implementación de un modelo cliente-servidor (servidor de archivos) con un hilo y con múltiples hilos dinámicamente creados. Proyecto 2: Sincronización de relojes entre máquinas flojamente acopladas, con libertad de elección del método a emplear. Contenidos Mínimos 1. Estructura de Sistema y Dinámica de Ejecución 2. Sistemas Operativos 3. Concurrencia 4. Comunicación Interprocesos 5. Comunicación Interprocesos Distribuida 6. Redes y Protección Programa Detallado

1. Estructura de Sistema y Dinámica de Ejecución 1.1Estructuras de Sistemas de Cómputo.

1.1.1 Sistemas Basados en Interrupciones. 1.1.2 Estructura de las Entradas y Salidas.

1.1.3 Operación en Modo Dual. 1.1.4 Protección por Hardware. 1.1.5 Arquitectura General del Sistema. 1.1.6 Diferentes Clases de Computadoras.

1.2 Estructuras de Sistemas Operativos

1.2.1 Componentes del Sistema. 1.2.2 Servicios del Sistema. 1.2.3 Llamadas al Sistema. 1.2.4 Programas de Sistema. 1.2.5 Estructura de los Sistemas.

2. Sistemas Operativos

2.1 Manejo de Procesos 2.1.1 Concepto de Proceso. 2.1.2 Procesos Concurrentes. 2.1.3 Conceptos de Planeamiento. 2.1.4 Planeamiento de CPU. 2.1.5 Algoritmos de Planeamiento. 2.1.6 Hilos de Control 2.1.7 Interbloqueos

2.2 Manejo de Comunicaciones 2.3 Manejo de Memoria

2.3.1 Swapping. 2.3.2 Alocación en Partición Simple y Múltiples. 2.3.3 Paginado. 2.3.4 Segmentado. 2.3.5 Segmentado-Paginado. 2.3.6 Memoria Virtual y Demanda de Páginas. 2.3.7 Rendimiento. 2.3.8 Reemplazo de Páginas y Algoritmos. 2.3.9 Alocación de Cuadros. 2.3.10 Thrashing y Modelos de Manejo de Memoria Virtual.

2.4 Manejo de Archivos 2.4.1 Organización y Operaciones. 2.4.2 Métodos de Acceso. 2.4.3 Consistencia Semántica. 2.4.4 Organización de la Estructura de Directorio. 2.4.5 Protección e Implementación. 2.4.6 Manejo de Almacenamiento Secundario. 2.4.7 Estructura de Disco. 2.4.8 Manejo de Espacio Libre y Métodos de Alocación. 2.4.9 Algoritmos de Planificación de Discos. 2.4.10 Mejoras de Rendimiento y Confiabilidad: Estrategias de Caching y Arreglos de Discos.

3. Concurrencia 3.1 Estructura de Sistema

3.1.1 Mecanismos de Bajo Nivel para Sincronización de Procesos 3.1.2 Problemas de la Sección Crítica. 3.1.3 Hardware de Sincronización. 3.1.4 Semáforos. 3.1.5 Problemas Clásicos de Sincronización.

3.2 Constructores de Lenguaje 3.2.1 Regiones 3.2.2 Regiones condicionadas 3.2.3 Monitores

4. Comunicación Interprocesos

4.1 Memoria Compartida 4.1.1 Memoria Compartida Distribuida 4.1.2 Modelos de Consistencia

4.2 Pasaje de Mensajes

5. Comunicación Interprocesos Distribuida

5.1 Sistemas Distribuidos 5.2 Modelo Cliente-Servidor 5.3 RPC 5.4 Sincronización en Sistemas Distribuidos

6. Redes y Seguridad

6.1 Fundamentos. 6.2 Protección y Seguridad. 6.3 Ataques a la Seguridad. 6.4 Modelo de Protección de Lampson. 6.5 Modelo de Control de Flujo. 6.6 Mecanismos de Protección. 6.7 Firewalls

Bibliografía

Silberschatz, A.; Galvin, P.B.;Gagne, G.; "Operating System Concepts", 6th Edition Addison-Wesley, 2002,.

Tanenbaum, A., Woodhull, A. S.; "Operating Systems: Design and Implementation", 2nd Edition .Prentice Hall, 1997.

Tanenbaum, A.; "Modern Operating Systems", 2nd Edition, Addison-Wesley, 2001 .

Nutt, G.; "Operating Systems: A Modern Perspectve", Addison-Wesley, 1997.

Milenkovic,M. "Sistemas Operativos: Conceptos y Diseño", Mc Graw Hill, 1994.

Stallings, W. "Operating Systems: Internals and Design Principles", 4th Edition Prentice Hall, 2001 ..

Bacon, J.; Concurrent Systems, Addison-Wesley, 2nd Edition, 1997

Coulouris,G.F. y Dollimore, J. ;"Distributed Systems: Concepts and Design". 3rd Edition. Addison-Wesley, 2001.

Goscinski, A.; “Distributed Operating Systems: The Logical Design”. Addison-Wesley, 1991.

Tanenbaum, A.; van Steen, M.; Distributed Systems: Principles and Paradigms, Prentice Hall, 2002.

Presentación mas descriptiva orientada a aspectos técnicos:

Tanenbaum,A.; "Sistemas Operativos: Diseño e Implementación", Prentice Hall, 1987

Tanenbaum, A., Woodhull, A. S.; "Operating Systemas: Design and Implementation", 2nd edition.Prentice Hall, 1997.

Bach,M.J.; "The Design of the UNIX Operating System", Prentice Hall, 1987

McKusick et ál; "The Design and Implementation of the 4.4BSD Operating System",Addison-Wesley,1996.

Vahalia, U.; "UNIX Internals: The New Frontiers", Prentice Hall, 1996. Pate, S.D.; "UNIX Internals: A Practical Approach", Addison-Wesley,

1996 Revistas de consulta:

"Operating System Review" SIG del ACM. "Computing Surveys" de ACM. "Transaction on Computer Systems" de ACM. "Transaction on Software Engineering" del IEEE. "Transaction on Computers" del IEEE. "Computer Magazine" del IEEE. "Software Magazine" del IEEE.

Análisis de Algoritmos Descripción Se estudian y aplican las técnicas de análisis de algoritmos. Como resultado se pretende que el alumno entienda las estrategias básicas de diseño y análisis de algoritmos, desarrolle habilidades para el desarrollo de algoritmos correctos y eficientes, y conozca los recursos disponibles donde buscar algoritmos para problemas específicos. También se introduce la teoría de la complejidad computacional para diferenciar la existencia de problemas tratables e intratables. Promoción: Por cada tema presentado se le asignó a grupos de dos personas la realización de proyectos de programación, con el objetivo de comparar los análisis teóricos vistos con los resultados prácticos. Todos los proyectos se presentan y se discuten en clase. La promoción se obtiene aprobando el 80% de los proyectos presentados. Programa sintético Problemas y Algoritmos. Técnicas y Herramientas básicas. Algoritmos “Greedy”. Algoritmos “Dividir y Conquistar” Programación Dinámica. Ejemplos Avanzados de Análisis de Algoritmos. Conceptos de Complejidad Computaciónal. Programa analítico Problemas y Algoritmos. Problemas, Instancias, Algoritmos. Problemas de la Algoritmia. Tipos de Análisis de Eficiencia. Tamaño de la instancia. Análisis elemental de algoritmos. Técnicas y Herramientas básicas. Inducción como herramienta de prueba. Inducción constructiva. Notación Asintótica: orden, omega y orden exacto. Notación asintótica condicional. Propiedades. Métodos de resolución de Recurrencias. Estructuras de datos: Heaps y Conjuntos Disjuntos. Algoritmos “greedy”. Características generales. Ejemplos: algoritmos de Kruskal y Prim para árboles de cubrimientos minimales, algoritmo de Dijkstra para caminos más cortos con origen único. Correctitud de algoritmos “greedy”. Algoritmos “dividir y conquistar”. Características generales. Ejemplos: multiplicación de enteros grandes, quicksort y mergesort, multiplicación de matrices, para de puntos más cercanos. Determinación del umbral.

Programación Dinámica. Características generales. Ejemplos: problema del cambio, problema de la mochila, problema del viajante. Ejemplos Avanzados de Análisis de Algoritmos. Algoritmos sobre Grafos Explícitos: recorridos, componentes conexos, máximo flujo. Algoritmos sobre Grafos Implícitos: backtracking, branch and bound, heurísticas. Algoritmos Probabilísticos: clasificación, características. Transformación de dominio: transformada discreta de Fourier, aplicaciones. Introducción a la Complejidad Computacional. Clases de Complejidad. Clases P y NP. Relaciones. Algoritmos de Aproximación. Bibliografía 1.- "Fundamentals of Algorithmics" Gilles Brassard y Paul Bratley Prentice Hall. 1996.- 2.- “Introduction to Algorithms” T. H. Cormen, C. E. Leiserson, R. L. Rivest McGraw Hill-MIT Press 1990.- 3.- "The Art of Computer Programming." D. E. Knuth Addison Wesley. 1973.- 4.- "The Desing and Analysis of Computer Algorithms." A. V. Aho, J. E. Hopcroft y J. D. Ullman. Addison Wesley. 1983.- 5.- "Algorithmics: the Spirit of Computing." D. Harel Addison Wesley. 6.- "Fundamentals of Computer Algorithms." E. Horowitz y S. Sahni Computer Science Press. 1978.- 8.- "Analysis of Algorithms and Data Structures." L. Banachowski, A. Kreczmar y W. Rytter Addison Wesley. 1991.- 9.- “Introduction to the Theory of Complexity”

D. Bovet, P.Crescenzi. Prentice Hall. 1993.-

10.- “Data Structures and Algorithms Analysis” G. Weiss.

The Benjamin Cummings Publishing Company Inc. 1995. 11.- “Algorithms” R. Sedgewick.

Addison-Wesley. 1988.- 12.- “Combinatorial Optimization” C. Papadimitriou, K. Steiglitz. Dover Publications. 1998.-

Programa de Tópicos Avanzados en Computación Científica

Profesores: Dra. Nélida Beatriz Brignole – Dr. Ignacio Ponzoni Objetivos:

• Informar y entrenar al estudiante en temas fundamentales de amplia aplicabilidad en la resolución de problemas en ciencia y tecnología.

• Brindar experiencia al estudiante en el empleo de herramientas de software muy usadas en computación científica.

• Explorar técnicas modernas en computación paralela y comprender cómo evaluar el desempeño de los distintos algoritmos en diferentes máquinas.

Correlativas: Modelamiento Avanzado de Sistemas,

Sistemas Computacionales y Redes. Evaluación: Trabajos Prácticos: realización de ejercicios y prácticas de laboratorio. Evaluación Final del curso: realización de dos proyectos organizados por tópicos: computación de alta performance y computación evolutiva. Programa sintético:

1. Optimización 2. Autovalores 3. Laboratorio de Computación de Alta Performance

Programa analítico:

1. Optimización a. Conceptos Generales b. Técnicas Clásicas. Optimización lineal y no-lineal. Métodos directos.

Métodos basados en gradiente. Métodos directos y no directos. c. Técnicas de Búsqueda y Algoritmos Genéticos: Espacio de Búsqueda,

Depth First Search, Representación Genética, Operadores Genéticos, Diversidad Genética vs. Presión Selectiva, Técnicas Híbridas. Búsquedas Tabú. Optimización combinatoria. Aplicaciones: Problema del Viajante.

d. Programación Dinámica y Optimización Multicriterios. 2. Autovalores

a. Álgebra Lineal y Autovalores b. Métodos de la Potencias c. Método de Householder d. Algoritmo QR

3. Laboratorio de Computación de Alta Performance a. Introducción a Parallel Virtual Machine (PVM) b. Implementación Distribuida de Operaciones Vectoriales. c. Resolución de Sistemas Lineales en Paralelo d. Optimización Paralela

Bibliografía Bertsekas D.P. & Tsitsiklis J.N. Parallel and Distributed Computation: Numerical Methods Athena Scientific, 1997. Higham N.J. Accuracy and Stability of Numerical Algorithms SIAM, 1996 Kaylath T. & Sayed A.H. Fast Reliable Algorithms for Matrices with Structure SIAM, 1999. Stewart G.W. Afternotes goes to Graduate School SIAM, 1996. Wilkinson B. & Allen M. Parallel Programming: Techniques and Applications using Networked Workstations and Parallel Computers Prentice Hall, 1999.

Materia Electiva La materia electiva deberá tener como mínimo una carga de 60 horas y permitirá a cada estudiante profundizar en un tema de interés. Esta materia será seleccionada por el alumno en conformidad con su Director de Tesis. En caso que la materia electiva elegida no posea la carga mínima solicitada, podrá incluirse una segunda - también a elección del alumno de común acuerdo con su Director de Tesis - que permita cubrir la carga horaria requerida. Los cursos electivos deberán ser siempre aprobados por la Comisión de Estudios de Posgrado del Departamento de Ciencias e Ingeniería de la Computación, y estar reconocidos expresamente por la Secretaría General de Posgrado y Educación Continua de la Universidad Nacional del Sur (SGPyEC-UNS). Algunos cursos tentativos posibles como materia electiva se detallan abajo, adjuntándose seguidamente los programas correspondientes:

- Soft Computing y sus aplicaciones (Código SGPyEC: 2456) - Datamining y Aprendizaje Automatizado (Código SGPyEC: 2048) - Fundamentos de Inteligencia Artificial(Código SGPyEC: 2453)

- Algoritmos y Complejidad (Código UNS: 5523) - Sistemas Distribuidos (Código UNS: 5941)

Soft Computing y sus Aplicaciones

Materia de Posgrado

Responsable: Ora Ana G. Maguitman

Descripci6n del Curso:

Se presentara una introducci6n al area de soft computing. EI curso incluira el estudio de un conjunto de rnetodos computacionales que son tolerantes a la incertidumbre, aproximaci6n y verdad parcial. Se estudiaran conceptos fundamentales de redes neuronales, algoritmos geneticos, sistemas inmunol6gicos artificiales, aprendizaje por refuerzo, sistemas difusos y razonamiento basado en casos. Pondremos especial enfasis en aplicaciones actuales de soft computing, cubriendo temas tales como reconocimiento de patrones, aproximaci6n de funciones, optimizaci6n, soporte para la toma de decisiones, clustering, detecci6n de fallas, recuperaci6n de la informaci6n, bioinforrnatica y aprendizaje rnecanico.

Este curso dara la oportunidad a los estudiantes de explorar tecnologfas actuales de soft computing. Adernas del estudio y discusi6n del material bibliogratico, el alumno desarrollara un proyecto basado en las tecnicas introducidas en el curso.

Objetivos:

EI objetivo de este curso es proveer al alumno con una introducci6n a los conceptos basicos de soft computing. Asimismo el curso permitira que el alumno gane experiencia en la discusi6n crltica de material tecnico, el desarrollo de un proyecto y la escritura de un reporte tecnico.

CÓDIGO SGPyEC:

Programa Detallado

1. Redes neuronales artificiales • Motivaci6n biol6gica • Perceptrones • Redes multicapa • Esquemas de aprendizaje • Aplicaciones de redes neuronales artificiales

2. Algoritmos geneticos • Terminologfa procedente de la biologfa • Representaci6n de hip6tesis • Operadores qeneticos • Funci6n de aptitud y selecci6n • Aplicaciones de algoritmos qeneticos

3. Sistemas inmunol6gicos artificiales • Anatomfa del sistema inmunol6gico • Ingenierfa de la inmunici6n • EI principio de selecci6n clonal • Selecci6n positiva/negativa • Aplicaciones de sistemas inmunol6gicos

4. Aprendizaje por refuerzo • EI problema de aprendizaje por refuerzo • Funciones de refuerzo • Metodos elementales para generar soluciones • Exploraci6n y Explotaci6n • Aplicaciones de aprendizaje por refuerzo

5. Sistemas difusos • Conceptos basicos • Conjuntos difusos y operaciones • Relaciones difusas • L6gica difusa • Toma de decisiones y otras aplicaciones

6. Razonamiento Basado en Casos • EI proceso de razonamiento basado en casos • Representaci6n e indexado de casos • Razonando con casos • Aprendizaje • Aplicaciones de CBR

CÓDIGO SGPyEC:

Bibliografia:

1. Fundamentals of neural networks: architectures, algorithms, and applications. Laurene Fausett. , Prentice-Hall, Inc, 1994.

2. An Introduction to Genetic Algorithms. Mitchell, M. MIT Press, 1996. 3. Immunology as Information Processing, in Design Principles for Immune

Systems and Other Distributed Autonomous Systems, Oxford University Press. Forrest, S & Hofmeyr, S., 2000.

4. Artificial Immune Systems: Part I - Basic Theory and Applications", Technical Report - RT DCA 01/99, p. 95. de Castro, L. N. & Von Zuben, F. J. 1999

5. Fuzzy Sets and Fuzzy Logic. Theory and Applications, George J. Klir and Bo Yuan, Prentice Hall, 1995.

6. Reinforcement Learning: An Introduction. Richard S. Sutton and Andrew G. Barto. MIT Press, Cambridge, MA, A Bradford Book, 1998. (http://www.cs.ualberta.ca/%7Esutton/book/ebook/the-book.html)

7. Reinforcement learning: a tutorial, Harmon, M.E., 1996. (http://citeseer.ist.psu.edu/harmon96reinforcement.html)

8. Case-Based Reasoning. Experience, Lessons, & Future directions. Leake, D. The MIT Press, 1996.

CÓDIGO SGPyEC:

Dataminig y Aprendizaje Automatizado Descripción Datamining y el descubrimiento de conocimiento a partir de técnicas de aprendizaje automatizado se han transformado en un activa área de investigación, atrayendo a gente de distintas disciplinas (tales como base de datos, Inteligencia Artificial, Visualización de Información, etc.). Este curso introducirá los conceptos fundacionales de datamining y aprendizaje automatizado, estudiando sus principios, algoritmos, implementaciones y aplicaciones. Programa sintético

1. Datamining. Introducción. Clases de datamining y su relación con aprendizaje automatizado.

2. Preprocesamiento de Datos 3. Aprendizaje Automatizado. Definición y conceptos centrales. 4. Reglas de Asociación. 5. Clasificación y predicción de datos. Clustering. 6. Arboles de Decisión 7. Aprendizaje basado en Instancias. 8. Aprendizaje de Reglas 9. Aprendizaje por refuerzo

Programa analítico 1. Introducción. Visión general del curso. ¿Qué es Datamining? Motivación. Perspectiva histórica. Algunas aplicaciones: análisis de mercados, detección de fraudes. Niveles de Datamining. Datamining como confluencia de disciplinas. Aprendizaje Automatizado y Datamining. Paradigmas de aprendizaje computacional. Técnicas de Datamining. Datamining predictivo vs. prescriptivo. Clasificación. Clustering. Regresión. Sintetización. Asociación. Ejemplos. 2. Preprocesamiento de Datos. Motivaciones. Data Cleaning. Integración, reducción y discretización de datos. Generación de Jerarquías de Conceptos. Operaciones de datamining. 3. Introducción al Aprendizaje Automatizado. Tipos de aprendizaje. Aprendizaje Inductivo a partir de Ejemplos. Lenguajes para expresar hipótesis. Bias en aprendizaje automatizado. 4. Reglas de Asociación. Introducción. Nociones preliminares: confianza y soporte de reglas. Algoritmo A-Priori. Generación de candidatos con A-Priori. Algoritmo FP-Growth. Visualización de reglas de asociación. Medidas de interés. Críticas a los conceptos de soporte y confianza.

CÓDIGO SGPyEC:

5. Clasificación y predicción de datos. Clustering. Introducción. Concepto. Componentes de la tarea de clustering. Definiciones. Notación. Técnicas de Clustering. Clasificación. Taxonomía de Acercamientos. Agrupamiento Conceptual. Técnicas de clasificación: árboles de decisión, redes neurales, clasificación bayesiana. 6. Arboles de Decisión. Algoritmos básicos. Criterios de Selección de atributos. Aprendizaje a partir de información con ruido. Poda de árboles de decisión. Cómo evitar el “overfitting” de datos. Bias inductivo en árboles de decisión. Especificidad en preferencia de hipótesis. 7. Aprendizaje basado en Instancias. Introducción. Aprendizaje por los K vecinos más cercanos. Algoritmos basados en pesos por distancias. Funciones de base radial. Razonamiento basado en casos. Ejemplos. 8. Aprendizaje de Reglas. Reglas de Primer orden. Aprendizaje de conjuntos de reglas via FOIL. Inducción como Deducción Invertida. Resolución Invertida. 9. Aprendizaje por Refuerzo. Q-Learning. Recompensas y acciones no deterministas. Aprendizaje por diferencia temporal. Generalización a partir de ejemplos. Bibliografía U. M. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy. Advances in Knowledge Discovery and Data Mining. AAAI/MIT Press, 1996. J. Han and M. Kamber. Data Mining: Concepts and Techniques. Morgan Kaufmann, 2000. T. Imielinski and H. Mannila. A database perspective on knowledge discovery. Communications of ACM, 39:58-64, 1996. G. Piatetsky-Shapiro, U. Fayyad, and P. Smith. From data mining to knowledge discovery: An overview. In U.M. Fayyad, et al. (eds.), Advances in Knowledge Discovery and Data Mining, 1-35. AAAI/MIT Press, 1996. G. Piatetsky-Shapiro and W. J. Frawley. Knowledge Discovery in Databases. AAAI/MIT Press, 1991. Brachman, R.J., and Anand, T. The Process Of Knowledge Discovery In Databases: A Human-Centered Approach. In Advances In Knowledge Discovery And Data Mining , eds. U.M. Fayyad, G. Piatetsky-Shapiro, P. Smyth, and R. Uthurusamy, AAAI Press/The MIT Press, Menlo Park, CA., 1996, pp. 37-57.

CÓDIGO SGPyEC:

Quinlan, J.R. - C4.5: Programs For Machine Learning. San Mateo, CA: Morgan Kaufmann, 1993. Mitchel, Tom – Machine Learning – McGraw Hill, 1997 1.

CÓDIGO SGPyEC:

Titulo del Curso: Fundamentos de Inteligencia Artificial Profesor Responsable: Dr. Guillermo R. Simari (UNS) Dr. Marcela Capobianco Fecha de Comienzo: 4 de septiembre de 2006 Fecha de Terminación: 4 de diciembre de 2006 Duración en Horas: 120 horas Tipo de Evaluación: Asignación de Problemas Teórico-Prácticos y Exámen Objetivos y Contenidos:

El área de Inteligencia Artificial está formada por una multiplicidad de subáreas. Este curso provee los fundamentos necesarios para el posterior desarrollo de los temas incluídos en las subáreas mas importantes, apoyandose en los desarrollos recientes. Se presenta el concepto de Agencia (Agentes Inteligentes y Sistemas Multiagentes) como motivador de la temática del curso. Se introducen los conceptos generales, teóricos y prácticos, de la Inteligencia Artificial simbólica y no simbólica, con énfasis en la Representación de Conocimiento y Razonamiento.

Se presentan los métodos de búsqueda, los algoritmos genéticos, se discuten diferentes formas de representación de conocimiento y razonamiento, y se estudian algunas aplicaciones importantes tales como la representación de acciones y los sistemas de planeamiento. También se exploran los métodos de aprendizaje más importantes y se presenta una introducción succinta a la problemática de los sistemas robóticos.

El curso busca el desarrollo en el alumno de la capacidad de considerar los problemas teóricos de la Inteligencia Artificial y además que adquiera la habilidad de encontrar soluciones computacionales prácticas a problemas complejos para los que no existen algoritmos capaces de encontrar soluciones optimales, o que por su costo computacional en tiempo y/o espacio su uso no resulta apropiado.

Programa Analítico 1. Introducción y Motivaciones. Actuando de forma humanamente inteligente, el Test de

Turing. Pensando de forma humana, la aproximación Cognitiva. Pensando racionalmente, las leyes del pensamiento. Actuando racionalmente, el Agente Racional. Fundamentos de la Inteligencia Artificial. Historia. Inteligencia Computacional. El Cuarto Chino. Problemas Filosóficos.

2. Agentes Inteligentes. Introducción. Definiciones alternativas. Caractarísticas principales. Estructura de un Agente Autónomo. El entorno. Los agentes en contexto. Sistemas Multiagentes. Teorías y Arquitecturas.

3. Búsqueda. Resolución de Problemas. Definiciones y Conceptos Básicos. Ejemplos. El Algoritmo de Búsqueda Genérico. Estrategias de Búsqueda. Propiedades de las Estrategias. Búsqueda Adversaria. Juegos Binarios. Definiciones. Algoritmo MiniMax. Exploración. Funciones de Evaluación. Limitando la búsqueda: efecto horizonte. Poda Alfa/Beta. Resolución de Problemas usando Búsqueda: Sistemas de Producciones. Definición del Sistema. Control Heurístico. Ventajas y desventajas. Algoritmos Genéticos.

CÓDIGO SGPyEC:

4. Representación de Conocimiento y Razonamiento. Representación de Conocimiento. Distintos Roles. Exploración de la noción de comportamiento inteligente. Representación y Razonamiento. Distintos componentes. Implementación. Proceso de Razonamiento. Representaciones y Mapeos. Propiedades. Agentes Basados en Conocimiento. Terminología. Bases de Conocimiento. Ejemplos. Arquitecturas de Agentes. Agentes Reflejos, Agentes Basados en Modelos, Agentes Basados en Metas. Diseño. Ventajas y Limitaciones. Representación y Razonamiento Temporal. Dificultades.

5. Razonamiento Por Defecto y Basado en Suposiciones. Razonamiento. Bases de Conocimiento. Mecanismos Inferenciales. Suposición de Mundo Cerrado. Lógica Default de Reiter. Ejemplos. Razonamiento Basado en Suposiciones. Argumentación. Predicción Default. Semántica de Modelos Mínimos. Razonamiento Abductivo. Razonamiento Evidencial y Causal. Implementación del Razonamiento Basado en Suposiciones.

6. Razonamiento con Conocimiento Incierto. Razonamiento Probabilístico. Interpretación Estadística y Bayesiana de la Probabilidad. Mundos Posibles. Semántica. Axiomática. Probabilidad Condicional. Evidencia y Conocimiento. Semántica de la Probabilidad Condicional. Teorema de Bayes. Redes de Creencias. Ejemplos. Construcción y Uso de Redes de Creencias. Inferencia y Razonamiento en Redes de Creencias.

7. Representación de Acciones y Sistemas de Planeamiento. Acciones. El Cálculo de Situaciones. La representación STRIPS. El Cálculo de Eventos. Ejemplos. Razonar y Planear en el mundo. Planeamiento hacia adelante. El Sistema de Planeamiento STRIPS. Problemas y Soluciones para este sistema. Regresión. Orden Parcial.

8. Aprendizaje. Definiciones básicas. Arquitectura para el Aprendizaje. Tareas de Aprendizaje. Retroalimentación. Ponderación del éxito. Bias. Aprendizaje y Búsqueda. Ruido y Overfitting. Caracterizaciones del Aprendizaje. Arboles de decisión. Redes Neuronales. Usos. Retroalimentación hacia delante. Función de Activación. Ejemplos. Axiomatización. Error de Predicción. Backpropagation. Algoritmos. Gradiente Descendente.

9. Introducción a la Robótica. El robot físico (hardware). Sensores y Efectores. Percepción. Localización. Planeamiento. Espacio de Configuración. Planeamiento de movimientos inciertos. Métodos robustos. Dinámica y Control. Arquitecturas Roboticas: Subsumisión, Tres Capas. Lenguajes de Programación Robótica. Dominios de Aplicación.

Duración del curso: tres meses.

Bibliografía: • POOLE, D., A. MACKWORTH, R. GOEBEL. Computational Intelligence. Oxford

University Press, 1998. • RUSSELL, S., P. NORVIG. Artificial Intelligence: A Modern Approach. Prentice Hall. 2nd

Edition, 2002. • NILSSON, N.J.. Artificial Intelligence: A New Synthesis. Morgan Kaufmann, 1998. • RICH, E. Artificial Intelligence. Mc. Graw Hill. 2nd Ed, 1990.- • BRATKO, I. Prolog, Programming for Artificial Intelligence. Addison-Wesley. 3rd

Ed.,2000- • STERLING, L., SHAPIRO, E. The Art of Prolog. Mit Press. 2nd Ed., 1994.

CÓDIGO SGPyEC:

• SHOHAM, J, Artificial Intelligence Techniques in Prolog. Morgan Kaufman Kaufmann, 1994.-

• LUGER, G y STUBBLEFIELD, W. Artificial Intelligence. Benjamin Cummings, 4th Ed., 2001.

• NILSSON, N. J. Principles of Artificial Intelligence. Springer-Verlag. 1981. • GENNESERETH, M y NILSSON, N. Logical Foundations of Artificial Intelligence,

Morgan Kaufmann, 1987.- • R. Reiter, Nonmonotonic Reasoning, Annual Review of Computer Science 1987,.- • J. McCarthy, P.J. Hayes, Some Problems from the Standpoint of Artificial Intelligence,

Machine Intelligence 4, B. Metzer y D. Mitchie (eds), Edinburgh Univ. Press, 1969.- • A. Turing, Computing Machinery E Intelligence, mind, Vol. LIX, nr 23-6, 1950.-

CÓDIGO SGPyEC:

UNIVERSIDAD NACIONAL DEL SUR 1BAHIA BLANCA 4

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIO

Algoritmos y ComplejidadCODIGO: 5523AREA N°: II

PROFESOR RESPONSABLE:

Dr. Pablo R. Fillottrani – Profesor adjunto con Dedicación exclusiva

CARGA HORARIA

Teoría64

Práctica50

Laboratorio14

CANTIDAD DE SEMANAS

16

CORRELATIVAS

PARA CURSAR LA MATERIA PARA APROBAR LA MATERIAAPROBADAS

ESTRUCTURAS DE DATOS Y ALGORITMOS.

CURSADAS

LÓGICA PARA CS. DE LA COMPUTACIÓN

PROBABILIDAD Y ESTADÍSTICA

APROBADAS

LÓGICA PARA CS. DE LA COMPUTACIÓN

PROBABILIDAD Y ESTADÍSTICA

CURSADAS

DESCRIPCION

Se introduce al alumno en las técnicas de análisis de algoritmos, se ilustra con diversas estrategias de solución de problemas y se presentan los problembas estudiados en el área de Complejidad Computacional. Como resultado se pretende que el alumno entienda y aplique las estrategias básicas de diseño y análisis de algoritmos, desarrolle habilidades para el diseño de algoritmos correctos y eficientes, conozca los recursos necesarios para ejecutar sus algoritmos, sepa dónde buscar algoritmos para problemas específicos, y diferencie los problemas tratables e intratables.

PROGRAMA SINTETICO

1.- Introducción2.- Técnicas y Herramientas para el Análisis de Algoritmos.3.- Algoritmos “greedy”.4.- Algoritmos “dividir y conquistar”.5.- Programación dinámica.6.- Algoritmos sobre Grafos.7.- Análisis Amortizado de Estructuras de Datos.8.- Algoritmos Probabilísticos.9.- Introducción a la Complejidad Computacional.10.- Clases de Complejidad Computacional. Problema P=NP.

UNIVERSIDAD NACIONAL DEL SUR 2BAHIA BLANCA 4

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIO

Algoritmos y ComplejidadCODIGO: 5523AREA N°: II

PROGRAMA ANALITICO

Capítulo 1 – Introducción: Conceptos preliminares: Problemas, Algoritmos, Programas. Instancias de un problema. Tamaño de una instancia. Problemas de la Algoritmia: correctitud, eficiencia, aproximación. Reducción entre problemas. Tiempo y espacio de un algoritmo. Tipos de análisis: peor caso, caso promedio, análsisprobabilístico, mejor caso. Ejemplos simples de Análisis de Algoritmos.

Capítulo 2 – Técnicas y Herramientas para el Análisis de Algoritmos: Técnicas de demostración. Inducción como herramienta de prueba. Inducción constructiva. Repaso de conceptos de lógica, teoría de conjuntos, álgebra, probabilidad y combinatoria. Notación Asintótica: orden, omega y orden exacto. Notación asintótica condicional. Notación asintótica en varios parámetros. Propiedades. Métodos de resolución de Recurrencias: ecuación característica, teorema maestro y cambio de variables. Introducción al Análisis de Algoritmos: tipo de análisis de acuerdo a la estructura de control. Uso de un “barómetro”. Repaso de estructuras de datos: Heaps y Conjuntos Disjuntos.

Capítulo 3 - Algoritmos “greedy”: Características generales. Aplicaciones. Esquema general. Pruebas de correctitud. Ejemplos. Problema de los árboles de cubrimientos minimales: algoritmos de Kruskal y de Prim. Posibles implementaciones. Problema de la distancia mínima con origen único: algoritmo de Dijkstra. Problema de la mochila. Problema del viajante. Problema del scheduling de procesos. Demostración de correctitud y análisis de eficiencia.

Capítulo 4 - Algoritmos “dividir y conquistar”: Características generales. Aplicaciones. Esquema general. Pruebas de correctitud. Determinación del umbral. Ejemplos. Multiplicación de Enteros Grandes. Búsqueda Binaria. Algoritmos de Ordenamiento: Mergesort, Quicksort. Análisis probabilístico. Problema de selección del elemento mediano: algoritmo lineal, mejoramiento del Quicksort. Multiplicación de matrices: algoritmo de Strassen. Problema del par de puntos más cercanos. Problema del cálculo de la exponenciación modular. Aplicación en criptografía. Introducción a la criptografía.

Capítulo 5 – Programación dinámica: Características generales. Aplicaciones. Esquema general. Determinación de la recurrencia. Pruebas de correctitud. Ejemplos simples: números de Fibonacci, coeficientes binomiales, probabilidad de ganar una serie de juegos. Ejemplos avanzados. Problema de la mochila. Problema del cambio. Problema de la distancia mínima entre todos los pares de nodos: algoritmo de Floyd. Problema de la multiplicación óptimal de matrices. Problema de la triangularización de polígonos. Problema de la subsecuencia más larga. Problema del viajante.

Capítulo 6 - Algoritmos de Grafos: Representación de grafos. Algoritmos de recorrido en profundidad y por niveles. Datos generados. Análisis de eficiencia. Aplicaciones. Orden topológico. Componentes fuertemente conexos. Puntos de Articulación. Camino de Euler. Flujo máximo. Demostraciones de correctitud.

Capítulo 7 - Análisis Amortizado de Estructuras de Datos: Principios. Definición. Aplicaciones. Método de la función potencial. Ejemplos simples. Definición y análisis amortizado

UNIVERSIDAD NACIONAL DEL SUR 3BAHIA BLANCA 4

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIO

Algoritmos y ComplejidadCODIGO: 5523AREA N°: II

de las estructuras de datos Tablas Dinámicas. Colas Binomiales. Heaps de Fibonacci.

Capítulo 8 - Algoritmos Probabilísticos: Generadores de números aleatorios. Clasificación de los Algoritmos Probabilísticos: algoritmo numéricos, algoritmos de Monte Carlo, algoritmos de Las Vegas. Algunos algoritmos probabilísticos simples.

Capítulo 9 - Introducción a la Complejidad Computacional: Problemas. Problemas de decisión. Ejemplos. Modelos de Computación. Clases de problemas. Herramientas para la comparación de problemas. Reducción entre problemas Medidas de complejidad Revisión de conceptos de computabilidad.

Capítulo 10 – Clases de Complejidad Computacional: Clases P, NP, y NP-completos. Teorema de Cook/Levin. Problema P?=NP. Clases de complejidad en espacio. Otras clases de complejidad computacional. Algoritmos de aproximación.

BIBLIOGRAFÍA

Bibliografía Básica

1.- "Fundamentals of Algorithmics" Gilles Brassard y Paul Bratley. Prentice Hall. 1996.-2.- “Introduction to Algorithms” T. H. Cormen, C. E. Leiserson, R. L. Rivest. McGraw Hill-MIT Press 2001.-3.- “Introduction to the Theory of Complexity” D. Bovet, P.Crescenzi. Prentice Hall. 1993.-

Bibliografía Adicional

1.- "The Desing and Analysis of Computer Algorithms." A. V. Aho, J. E. Hopcroft y J. D. Ullman. AddisonWesley. 1983.-2.- "Algorithmics: the Spirit of Computing.", segunda edición. D. Harel. Addison Wesley. 2004.-3.- "Fundamentals of Computer Algorithms." E. Horowitz y S. Sahni. Computer Science Press. 1978.-4.- “Algorithm Design Manual”. S. Skiena. Springer. 1997.-5.- "Analysis of Algorithms and Data Structures.” L. Banachowski, A. Kreczmar y W. Rytter. Addison Wesley. 1991.-6.- “Computational Complexity” C. Papadimitriou. Addison-Wesley. 1994.-7.- “Data Structures and Algorithms Analysis” G. Weiss. Benjamin Cummings. 1995.-8.- “Handbook of Theoretical Computer Science” Volume A: Algorithms and Complexity. J.van Leeuwen, editor. Elsevier-MIT Press. 1990.-9.- “Algorithms” R. Sedgewick. Addison-Wesley. 1988.-10.- “Computers and Intractability” M. Garey, D. Johnson. Freeman. 1979.11.- “Combinatorial Optimization: Algorithms and Complexity”. C. Papadimitriou, K. Steiglitz. Dover. 1998.-12.- “Introduction to the Design and Analysis of Algorithms”. A. Levitin. AddisonWesley. 2003.-

UNIVERSIDAD NACIONAL DEL SUR 4BAHIA BLANCA 4

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACIO

Algoritmos y ComplejidadCODIGO: 5523AREA N°: II

AÑO

2008

FIRMA PROFESOR RESPONSABLE

VISADO

COORDINADOR AREA SECRETARIO ACADÉMICODIRECTOR

DEPARTAMENTO

UNIVERSIDAD NACIONAL DEL SUR BAHIA BLANCA

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACION

CODIGO: 5941 SISTEMAS DISTRIBUIDOS AREA N°: IV Carga Horaria Teoría 64 hs Práctica 26 hs Laboratorio 38 hs

Correlativas Aprobadas Cursadas Sistemas Operativos

DESCRIPCION

El objetivo del curso es introducir en los conceptos y principios de diseño usados en la construcción de sistemas distribuidos. Se le da al alumno un conjunto de conceptos de modo que se capacite para emprender cualquier proyecto de software que involucre computadoras en red, conociendo y desarrollando soluciones sobre sistemas multicomputadoras. Se presentan los conceptos en clases teóricas por medio de transparencias en las cuales se encuentra resumido todo el curso. La idea central de esta técnica es que el alumno tengo solo una guía para luego ampliar sus conocimientos utilizando la bibliografía. Las clases teóricas van acompañadas de clases prácticas de problemas y proyectos en laboratorio.

PROGRAMA SINTETICO

1) Introducción a los Sistemas Distribuidos. 2) Comunicación en Sistemas Distribuidos. 3) Sincronización en Sistemas Distribuidos. 4) Planificación de Procesos en Sistemas Distribuidos. 5) Consistencia, Replicación y Memoria Compartida Distribuida. 6) Sistemas de Archivos en Sistemas Distribuidos. 7) Transacciones Distribuidas. 8) Sistema de Nombres. 9) Tolerancia a las Fallas

10) Seguridad en Sistemas Distribuidos. 11) Sistemas Distribuidos Basados en Documentos

PROGRAMA ANALITICO

1.0 - Introducción a los Sistemas Distribuidos. 1.1 Computación paralela y distribuida. 1.2 Desventajas y limitaciones. 1.3 Requerimientos de Hardware y Software.

2.0 - Comunicación en Sistemas Distribuidos. 2.1 Pasaje de mensajes 2.2 Modelo Cliente-Servidor 2.3 Llamadas a Procedimiento Remoto

UNIVERSIDAD NACIONAL DEL SUR BAHIA BLANCA

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACION

CODIGO: 5941 SISTEMAS DISTRIBUIDOS AREA N°: IV

2.4 Grupos de Comunicación 3.0 - Sincronización en Sistemas Distribuidos.

3.1 Sincronización de Reloj 3.2 Estado Global 3.3 Exclusión Mutua 3.4 Algoritmos de Elección 3.5 Interbloqueos

4.0 - Planificación de Procesos en Sistemas Distribuidos. 4.1 Estrategias de Distribución de Carga. 4.2 Migración de Procesos y Movilidad

5.0 - Consistencia, Replicación y Memoria Compartida Distribuida. 5.1 Modelos de Consistencia centrados en los datos 5.2 Modelos de Consistencia centrados en el cliente 5.3 Protocolos de distribución 5.4 Protocolos de consistencia 5.5 Memoria Compartida Distribuida

6.0 - Sistemas de Archivos Distribuidos 6.1 Propósito de uso 6.2 Servicios 6.3 Características deseables de los SAD 6.4 Modelos de archivos y sus accesos 6.5 Semánticas 6.6 Esquemas de caché 6.7 Tolerancia a las fallas

7.0 - Transacciones Distribuidas 7.1 Modelo Transaccional 7.2 Protocolos de commit

8.0 - Sistema de Nombres 8.1 Nombres, Entidades 8.2 Sistema de nombres y localización de objetos 8.3 Remoción de Entidades no Referenciadas

9.0 - Tolerancia a las Fallas 9.1 Conceptos básicos 9.2 Enmascaramiento 9.3 Ordenamiento de mensajes 9.4 Checkpointing

10.0 - Seguridad en Sistemas Distribuidos 10.1 Introducción 10.2 Ataques 10.3 Criptografía 10.4 Autenticación 10.5 Código móvil

11.0 - Sistemas Distribuidos Basados en Documentos 11.1Caso: WWW

UNIVERSIDAD NACIONAL DEL SUR BAHIA BLANCA

DEPARTAMENTO DE CIENCIAS E INGENIERÍA DE LA COMPUTACION

CODIGO: 5941 SISTEMAS DISTRIBUIDOS AREA N°: IV

BIBLIOGRAFÍA

Bibliografía Básica

• Coulouris,G.F.; Dollimore, J. y T. Kindberg;"Distributed Systems: Concepts and Design". 3rd Edition. Addison-Wesley, 2001.

• Tanenbaum, A.S.; "Modern Operating Systems". Prentice Hall, 1992.

• Tanenbaum, A.S.; "Distributed Operating Systems". Prentice Hall, 1995.

• Tanenbaum, A.S.; van Steen, Maarten; “Distributed Systems: Principles and Paradigms". Prentice Hall, 2002.

• Goscinski, A.; “Distributed Operating Systems: The Logical Design”. Addison-Wesley, 1991.

• Casavant, T.L. y Singhal,M. Ed. “Reading in Distributed Computing Systems”. IEEE Computer Society Press, 1994.

• Mullender, S. Ed. “Distributed Systems”. 2da. Edición, Addison-Wesley, 1993.

• Sinha, P.K.; “Distributed Operating Systems: Concepts and Design”, IEEE Press,1997. • Loosley,C.; Douglas,F.; “High Performance Client/Server”, John Wiley,1998.

Bibliografía Adicional

Publicaciones de consulta IEEE Software Engineering IEEE Software Magazine IEEE Computer Magazine IEEE Transaction on Parallel and Distributed Systems IEEE Transaction on Computer Systems ACM Communications ACM Computing Surveys ACM SIGOPS