Ministerio de Cultura y Educación
Universidad Nacional de San Luis
Facultad de Ciencias Físico Matemáticas y Naturales
Departamento: Informatica
Área: Area IV: Pr. y Met. de Des. del Soft.
(Programa del año 2016)
(Programa en trámite de aprobación)
(Programa presentado el 09/03/2016 19:02:32)
I - Oferta Académica
Materia Carrera Plan Año Periodo
PROGRAMACION II TEC.REDES COMP. 12/15 2016 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
BERON, MARIO MARCELO Prof. Responsable P.Adj Exc 40 Hs
III - Características del Curso
Credito Horario Semanal Tipificación Duración
Teórico/Práctico Teóricas Prácticas de Aula Práct. de lab/ camp/ Resid/ PIP, etc. Total B - Teoria con prácticas de aula y laboratorio Desde Hasta Cantidad de Semanas Cantidad en Horas
Periodo
2 Hs.  Hs.  Hs. 4 Hs. 6 Hs. 1º Cuatrimestre 14/03/2016 24/06/2016 15 90
IV - Fundamentación
Conocer y aprovechar al máximo las características principales que posee un sistema operativo es una tarea esencial para el técnico en redes. Entre una de estas características se encuentra los intérpretes de comandos que el sistema provee. Estos intérpretes proporcionan una serie de comandos que permiten la realización de tareas de administración de recursos. En general, estos comandos se pueden combinar con el propósito de realizar tareas complejas en pocas líneas de código. Estas líneas de código pueden ser almacenadas en un archivo el cual a posteriori se puede ejecutar. Este tipo de programas son conocidos en la jerga como scripts del intérprete de comandos. Debido a la relevancia que tienen este tipo de programas para el técnico en redes, en esta materia se incluye una unidad cuyo principal objetivo es que el alumno conozca en profundidad los fundamentos y las distintas estrategias que se utilizan para programar scripts. Además se explican las bases para que el alumno pueda trasladar los conceptos brindados para la construcción de otros tipos de scripts.
Por otra parte, con el propósito de incrementar los conceptos referentes a programación en el presente programa se incluye una unidad que consiste en la definición e implementación de tipos de datos abstractos usando como lenguaje de estudio al lenguaje C. En esta unidad se pretende hacer énfasis en la construcción y manipulación de diversas estructuras de datos que son ampliamente utilizadas en los sistemas de software. Actualmente, el lenguaje C es muy usado para el desarrollo de software de base como así también para la interacción con diversos dispositivos. Por esta razón, ampliar los conocimientos de programación usando C como lenguaje base es relevante para el técnico en redes. El Paradigma Imperativo no es el único, existen otros como por ejemplo el Orientado a Objetos que permiten concebir a la programación desde otras perspectivas. Actualmente, el Paradigma Orientado a Objetos ha alcanzado una amplia popularidad debido a las facilidades que proporciona para la construcción de software. Particularmente, este paradigma se ha utilizado mucho en el desarrollo de aplicaciones de red a través del uso de diferentes lenguajes, un ejemplo de ellos es: Python. Por esta razón, la enseñanza del Paradigma Orientado a Objetos y de Python se considera esencial en Programación II. Python es un lenguaje ampliamente usado para el desarrollo de aplicaciones de red y proporciona librerías que posibilitan la construcción de sistemas de forma rápida. Estas características hacen de Python un lenguaje atractivo para el técnico en redes debido a que el desarrollo de sistemas aplicados a la red es una de sus principales funciones. Es importante notar que Programación II presenta temáticas de propósito general, remarcando como las mismas pueden ser aplicadas en el contexto de las redes, y prepara el camino para que el alumno pueda asimilar los tópicos de cursos superiores e introducirse en el mercado laboral sin mayores inconvenientes.
Para finalizar, es importante mencionar que el programa aquí presentado cubre los contenidos necesarios descritos en la ordenanza 024-08, Anexo II.
V - Objetivos
Al finalizar el curso el alumno deberá:
* Programar Scripts.
* Conocer técnicas avanzadas de programación.
* Aplicar soluciones algorítmicas a problemas tradicionales.
* Conocer las bases de la Programación Orientada a Objetos.
VI - Contenidos
Unidad I: Shell Script con Bash
Introducción a la Programación de Script. Conceptos básicos de Bash. Construcción de Shell Script Básicos. Uso de Múltiples Comandos. Creación de un Archivo de Script. Mensajes. Variables. Redirección de la Entrada y la Salida. Pipes. Operaciones Matemáticas. Finalización de un Script. Uso de Comandos Estructurados. If-then. If-then-else. Ifs anidados. El comando test. Condiciones compuestas. Características Avanzadas del if. El comando case. Más Comandos Estructurados. El comando for. El comando for al estilo C. El comando while. El comando until. Ciclos anidados. Iteraciones sobre archivos. Control de las iteraciones. Procesamiento de la salida de una iteración. Entrada de Usuario. Parámetros en la Línea de Comandos. Variables de Parámetro Especiales. Opciones. Estandarización de Opciones. Entrada de Usuario. Presentación de Datos. Entrada-Salida. Creación de Funciones. Funciones de Script Básicas. Retorno de un Valor. Uso de Variables en Funciones. Arreglos y Funciones. Funciones Recursivas. Creación de una Librería. Uso de Funciones en la Línea de Comandos.

Unidad II: Tipos de Datos Abstractos
Introducción. El Concepto de Tipo de Dato Abstracto. Tipos de Datos Abstractos Básicos. Tipo de Datos Abstractos Recursivos. Implementación de Tipos de Datos Abstractos Básicos y Recursivos. Aplicación de los conceptos antes mencionados usando el lenguaje de programación C.

Unidad III: Programación Orientada a Objetos
Introducción. Génesis de la Programación Orientada a Objetos: La Vía de la Simulación. La Vía de la Ingeniería de Software. Abstracción de Datos e Información Oculta. El Concepto de Objeto. El Encapsulamiento: Propiedad Fundamental. Mensajes. Objetos en Programación Orientada a Objetos: Instancias y Clases. Clases e Instancias. Definición de Clases. Creación de Clases. Requisitos Iniciales. Definición de la Estructura. Definición del Comportamiento. Constructores. Métodos de Instancia. Importación de Clases. Reglas de Accesibilidad a una Clase. Reglas de Acceso a Variables y Métodos de Instancia. Composición en la Definición de una Clase. Métodos y Variables de Clase. Jerarquías de Clases. El Mecanismo de la Herencia. Algoritmo de Búsqueda de Métodos. Superposición de Métodos y Variables. Modificadores y Re-definición de Métodos. Clases y Constructores. Creación de Clases por medio de la Herencia. Compatibilidad entre Clases y Subclases. Polimorfismo. Aplicación de los conceptos previamente mencionados usando el lenguaje de programación Python.

Unidad IV: Aplicaciones de Script con Python
Servicios. Interfaces con el Sistema Operativo. Manipulación de Pasos. Tiempo y sus conversiones. Operaciones de Archivos de Alto Nivel. Manipulación de Errores.

VII - Plan de Trabajos Prácticos
Unidad I: Shell Script con Bash
Construcción de: i) Scripts básicos para la familiarización con los comandos de bash; ii) Scripts que utilicen los recursos del sistema operativo; iii) Scripts que permitan realizar la instalación de aplicaciones.

Unidad II: Tipos de Datos Abstarctos
Implementación de Tipos de Datos Abstractos Básicos. Implementación de Tipos de Datos Recursivos.

Unidad III: Programación Orientada a Objetos
Realización de ejercicios que impliquen: i) La definición de clases; ii) El uso de herencia, composición y polimorfismo.

Unidad IV: Aplicaciones de Script con Python
Realización de scripts que permitan: Copiar, mover archivos en diferentes directorios, borrar archivos y directorios, crear árboles de directorios, manipular la fecha y la hora del sistema.

Laboratorios

Laboratorio 1: Desarrollo de scripts usando bash.

Laboratorio 2: Implementación y corrida de programas orientados a objetos usando el lenguaje de programación Python.

Laboratorio 3: Implementación y corrida de scripts que trabajen con los servicios genéricos del sistema operativo.
VIII - Regimen de Aprobación
Condiciones de Regularización:
i) Aprobar los prácticos de laboratorio.
ii) Aprobar los parciales teóricos-prácticos con una nota mayor o igual a 6 (seis).

Se otorgarán dos recuperaciones para cada evaluación parcial a todos los alumnos.

Condiciones de Aprobación:
i) Por promoción, para lo cual el alumno debe contar con las condiciones de regularización pero los exámenes parciales teóricos-prácticos deben ser aprobados con una nota mayor o igual a 7 (siete).

ii) Por examen final.

Alumnos Libres: No se aceptan alumnos con esta condición.
IX - Bibliografía Básica
[1] Richar Blum. Linux Command Line and Shell Scripting. Wile Publishing Inc. ISBN: 978-0-470-25128-7. 2008.
[2] Material de la Materia Programación Orientada a Objetos dictada en la carrera Licenciatura e Ingeniería en Ciencias de la Computación. Universidade do Minho. Profesor Responsable: Mario Martins.
[3] Guido van Rossum. El Tutorial de Python. Editor: Fred L. Drake. Septiembre de 2009.
X - Bibliografia Complementaria
[1] David Fiedler, Bruce Hunter. Unix System V Release 4. Administration, Second Edition. Editorial: SAMS. ISBN: 0-672-22810-6. 1991.
[2] Mangus Lie Hetlanfd. Beginning Python from Novice to Professional. ISBN: 1-59059-519-X. 2005.
[3] John Goerzen. Fundation of Python Network Programming. Editorial: Apress. ISBN: 1-59059-371-5. 2004.
[4] Carl Albing, J. P. Vossen, Cameron Newhan. Bash Cookbook. Editorial: O'Reilly. ISBN 10: 0-596-52678-4. Mayo 2007.
[5] Chet Ramey, Brian Fox. Bash Reference Manual. Publicado por: Free Software Foundations. Diciembre de 2009
XI - Resumen de Objetivos
*Programar Scripts.
*Conocer técnicas avanzadas de programación.
*Aplicar soluciones algorítmicas a problemas tradicionales.
*Conocer las bases de la Programación Orientada a Objetos.
XII - Resumen del Programa
Unidad I: Shell Scripts con Bash.
Unidad II: Tipos de Datos Abstractos.
Unidad III: Programación Orientada a Objetos.
Unidad IV: Aplicaciones de Script con Python.
XIII - Imprevistos
Serán resueltos por la cátedra a medida que los mismos vayan surgiendo.