PROGRAMA DE ESTUDIOS Programación de Sistemas Área a la que pertenece: Área Sustantiva Profesional Horas teóricas: 3 Horas prácticas: 2 Créditos: 8 Clave: F0165 Asignaturas antecedentes y subsecuentes PRESENTACIÓN La programación de sistema abarca el estudio y diseño del software base de la computadora. Los ensambladores, cargadores, sistemas operativos, compiladores, manejadores de bases de datos y protocolos de red, son algunos ejemplos del software comprendido en esta área de la computación. Por su importancia formativa y metodológica, esta área de conocimiento resulta fundamental para los desarrollos de la industria del software. El recomendable que al alumno haya acreditado previamente el curso de Ensamblador. OBJETIVO GENERAL El alumno comprenderá la interacción entre el hardware, el software del sistema (software base) y software de aplicación y será capaz de diseñar y programar el software del sistema, a partir de la definición de una arquitectura. F0165_Programación de Sistemas 1 / 6
CONTENIDO Unidad 1 INTRODUCCIÓN AL SOFTWARE DEL SISTEMA El alumno será capaz de explicar de manera general la interacción entre el hardware, el software del sistema y el software de aplicación. 1.0. Evolución del hardware y el software de las computadoras (breve historia). 1.2. Arquitectura general de una computadora. 1.3. Definición del software de sistemas: 1.4. Ensambladores 1.5. Intérpretes 1.6. Compiladores 1.7. Procesadores de macros 1.8. Sistemas operativos 1.9. Cargadores 1.10. Enlazadores 1.11. Manejadores de bases de datos 1.12. Sistemas distribuidos El alumno será capaz de explicar la interacción entre el hardware, el software del sistema y el software de aplicación. Unidad 2 SISTEMA OPERATIVO El alumno será capaz de explicar los diferentes conceptos relacionados con los sistemas operativos, así como loas elementos que lo forman y sus funciones. 2.1. Conceptos básicos de sistemas operativos. 2.2. Funciones del sistema operativo. 2.3. Elementos que lo conforman. El alumno podrá explicar los conceptos básicos de los sistemas operativos y el papel que desempeña en un sistema de cómputo. F0165_Programación de Sistemas 2 / 6
Unidad 3 ARQUITECTURA DE LA COMPUTADORA El alumno será capaz de programar una máquina virtual a partir de las especificaciones de una arquitectura. 3.1. Arquitectura de una computadora. 3.2. Arquitectura del microprocesador: 3.3. Tipos de arquitecturas (de pila, de acumulador, de registros, etc.) 3.4. Registros 3.5. Manejo de memoria 3.6. Modos de direccionamiento 3.7. Conjunto de instrucciones 3.8. 3.3.-Funcionamiento básico del microprocesador. 3.9. Diseño de una máquina virtual. El alumno comprenderá los elementos que definen la arquitectura de una computadora y su funcionamiento general. Será capaz de hacer una implementación software de la misma. Unidad 4 ENSAMBLADORES El alumno será capaz de describir el proceso de ensamble y programar un ensamblador a partir de las especificaciones de una arquitectura. 4.1. Los ensambladores y el lenguaje ensamblador. 4.2. Diseño de un lenguaje ensamblador. 4.3. Proceso de ensamble de dos pasadas. El alumno comprenderá la importancia del lenguaje ensamblador y será capaz de hacer un programa ensamblador para una arquitectura específica. Unidad 5 CARGADORES Y ENLAZADORES El alumno será capaz de explicar los procesos de carga y enlace. F0165_Programación de Sistemas 3 / 6
5.1. Proceso de carga. 5.2. Proceso de enlace. 5.3. Tipos de cargadores (compile-andgo, absolutos, relocalizadores, de enlace dinámico). 5.4. Tipos de enlace (estático, dinámico, overlays). El alumno podrá explicar el funcionamiento de los diferentes tipos de cargadores y enlazadores y será capaz de clasificar los diferentes tipos de cargadores y enlazadores incluidos en los sistemas actuales. Unidad 6 LENGUAJES DE PROGRAMACIÓN El alumno será capaz de diferenciar y clasificar los lenguajes de programación de acuerdo a sus características. 6.1. Lenguajes de programación y lenguajes que NO son de programación. 6.2. Clasificación de los lenguajes de programación. 6.3. Lenguajes imperativos o procedurales. 6.4. Lenguajes orientados a objetos. 6.5. Lenguajes declarativos. 6.6. Lenguajes funcionales. 6.7. Lenguajes conducidos por eventos. El alumno podrá explicar las diferencias fundaméntales entre los diferentes tipos de lenguajes. Sugerencias didácticas UNIDAD 1 El alumno investigará cada uno de los temas. El profesor deberá orientar al alumno sobre lo que se espera que encuentre en su investigación. Los resultados de cada investigación serán discutidos en clase, primero en pequeños equipos y posteriormente en el grupo. (7 horas) UNIDAD 2 El alumno investigará cada uno de los temas. El profesor deberá orientar al alumno sobre lo que se espera que encuentre en su investigación. Los resultados de cada investigación serán discutidos en clase, primero en pequeños equipos y posteriormente en el grupo. (7 horas) UNIDAD 3 El alumno investigará el concepto de arquitectura de computadora, y los diferentes F0165_Programación de Sistemas 4 / 6
tipos de arquitecturas. El profesor explicará cada uno de los elementos basándose en alguna arquitectura específica, y utilizando ejemplos de programas en el lenguaje ensamblador de la misma. El profesor explicará detalladamente el funcionamiento básico de un microprocesador y proporcionará el algoritmo general y algunas recomendaciones para el diseño de la máquina virtual. (15 horas) UNIDAD 4 El alumno explicará qué función realiza un programa ensamblador y su relación con el lenguaje ensamblador. Los alumnos junto con el profesor, diseñaran durante la clase un lenguaje ensamblador para la arquitectura estudiada en la unidad 3. El profesor explicará los pasos del proceso de ensamble, auxiliándose de múltiples ejemplos. Los alumnos programarán un ensamblador para el lenguaje definido en la clase, tomando en cuenta las recomendaciones del profesor. (15 horas) UNIDAD 5 El profesor explicará los procesos generales de carga y enlace. El alumno explicará los conceptos de cargador y enlazador, así como los diferentes tipos existentes para cada uno de ellos. En base a lecturas seleccionadas, los alumnos identificarán las características de los cargadores y enlazadores incluidos en diversos sistemas existentes.(7 horas) UNIDAD 6 El profesor explicará la diferencia entre los lenguajes de programación y los que no son de programación. El grupo elaborará una taxonomía de los lenguajes de programación. Los alumnos formarán equipos de 2 o 3 personas para realizar un análisis comparativo entre un lenguaje procedural estructurado como C y otro lenguaje basado en un paradigma diferente. El trabajo será expuesto ante el grupo.(15 horas) Estrategias de evaluación del aprendizaje Al final de la unidad el alumno elaborará, de manera individual, un ensayo sobre la interacción entre el hardware, el software base y el software de aplicación. Es importante que el profesor evalue el trabajo, tomando en cuenta el contenido, la redacción, la ortografía y la autoría del trabajo. El alumno hará, de manera individual, una implementación software de la arquitectura estudiada en clases. Es importante que el profesor evalué el programa, tomando en cuenta su funcionamiento, su interfase hombre-máquina y la autoría del mismo. Los alumnos formarán equipos de 2 personas y redactarán el análisis del cargador y/o el enlazador de algún sistema actual (p.e. Java, PHP, C#, Delphi, Visual Basic.NET, Linux, Windows, etc.). Se avaluará la el trabajo escrito y la exposición del mismo. F0165_Programación de Sistemas 5 / 6
Bibliografía Básica Bibliografía Complementaria 1. Donovan, John, System Programming 2. Tanenbaum, Andrew S., Organización de computadoras: un enfoque estructurado (4ª ed.), Prentice-Hall, México 3. Stallings, William, Organización y arquitectura de computadoras, (5ª ed.), Prentice Hall F0165_Programación de Sistemas 6 / 6