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 18/08/2016 23:16:46)
I - Oferta Académica
Materia Carrera Plan Año Periodo
PROGRAMACION II TCO.UNIV.EN WEB 08/13 2016 1° cuatrimestre
II - Equipo Docente
Docente Función Cargo Dedicación
BERON, MARIO MARCELO Prof. Responsable P.Adj Exc 40 Hs
BERNARDIS, HERNAN Auxiliar de Práctico A.1ra Simp 10 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. 2 Hs.  Hs. 4 Hs. 8 Hs. 1º Cuatrimestre 14/03/2016 24/06/2016 15 120
IV - Fundamentación
Esta materia es el primer paso en el manejo de las tecnologías de programación de aplicaciones Web, proporcionando una base que permita al alumno arrancar en este novedoso campo. En simultáneo con esta materia los alumnos van a trabajar con las tecnologías para la realización de páginas Web como HTML, programación de aplicaciones en el cliente (JavaScript) y estilos de diseño. La materia Programación II, brindará a los alumnos conceptos de programación avanzados, partiendo de la base que los alumnos ya han adquirido en las materias previas los conceptos de programación y de los paradigmas clásicos de programación. 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 del lenguaje Java. Por esta razón, la enseñanza del Paradigma Orientado a Objetos y de Java se considera esencial en toda carrera de orientación informática. Otro lenguaje que permite seguir progresando al estudiante, en características avanzadas de los distintos paradigmas, es Python. Con él es posible escribir programas que usen el paradigma imperativo como así también el orientado a objetos y el funcional. 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. Lo que favorecerá la inserción laboral del técnico web. Con Java y Python es posible implementar mecanismos en los que se basa el comercio electrónico como la gestión de un sitio Web y los fundamentos de la seguridad en la red.
V - Objetivos
Este curso tiene los siguientes objetivos:
• Introducir a los alumnos en los conceptos del Paradigma de Programación Orientado a Objetos.
• Permitir desarrollar a los alumnos aplicaciones de uso general en: Java y Python.
• Facilitar a los estudiantes el desarrollo de sus habilidades de programación sobre interfaz gráfica (GUI).
• Proveer los conceptos y herramientas necesarias para que el alumno pueda desarrollar aplicaciones rápidas.
VI - Contenidos
Unidad 1: Paradigma de 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.

Unidad 2: Clases.
Definición de Clases. Creación de Clases. Requisitos Iniciales. Definición de la Estructura. Definición del Comportamiento. Constructores. Métodos de Instancia. La Referencia this. Paquetes e 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 Redefinición de Métodos. Clases sin Subclases. Clases y Constructores. Creación de Clases Vía Herencia. Compatibilidad entre Clases y Subclases. Polimorfismo.

Unidad 3: El lenguaje de Programación Java.
Java. Breve historia del lenguaje Java. Características del lenguaje Java. Configuración del entorno de trabajo en lenguaje Java. Sintaxis y semántica de Java. Definición de variables. Visibilidad y vida de las variables. Tipos de datos primitivos. Conversión de tipos. Uso de Operadores: Aritméticos, Asignación, instanceof, condicional, incrementales, relacionales, lógicos, concatenación de caracteres. Precedencia entre operadores. La clase String. Integer, Float y Number. Wrappers. Estructuras de control de flujo: Bifurcación if else, Bifurcación switch, Bucle while, Bucle for, Bucle do while, Sentencia break, Sentencia continue, Comentarios en Java. Caracteres especiales.

Unidad 4: Java y la Programación Orientada a Objetos.
Programación Orientada a Objetos y Java. Ejemplos de construcción de una clase en Java. Desarrollo de ejemplos en laboratorio. Clases y Objetos en Java. Atributos. Métodos en Java. Pasaje de Parámetros. Encapsulamiento. Ejemplos en laboratorio. Control de acceso. Constructores. Herencia en Java. Sub-clases y super-clases. Herencia múltiple; ejemplos en Java. Redefinición de métodos heredados. Accesibilidad a paquetes, clases o interfaces, variables, Polimorfismo. Ligadura Dinámica. Clase Abstracta. Abstracción en Java. Interfaz; ejemplos en Java. Métodos Abstractos. Paquetes. Relaciones entre paquetes. Listas en Java.

Unidad 5: Manejo de Excepciones, Applets, AWT.
Excepciones. Bloques try, catch y finally. Tipos de Excepciones. Unchecked Exceptions. Checked Exceptions. La sentencia throw. Creación de excepciones propias. La clase Exception como superclase. La keyword throws. Threads. Applets. AWT.

Unidad 6: Programación en Python.
Introducción a Python. Estructura de un programa Python. Variables, sentencias, control de flujo de ejecución en Python. Funciones. Ambientes de ejecución Python. Manejo de Excepciones en Python. Librerías Python.

VII - Plan de Trabajos Prácticos
Práctico 1: Paradigma de Programación Orientada a Objetos: Conceptos y términos.
Práctico 2: El lenguaje de Programación Java.
Práctico 3: POO: Clase – Objetos - Métodos.
Práctico 4: POO: Herencia - Polimorfismo.
Práctico 5: Manejo de Excepciones en Java.
Práctico 6: Applets en Java.
Práctico 7: AWT.
Práctico 8: Programación en Python.
Laboratorio: Desarrollo y entrega de una aplicación aplicando los contenidos vistos en la materia.

Nota: Todos los prácticos se desarrollan en laboratorio.
VIII - Regimen de Aprobación
Condiciones de regularización:
- Presentación y aprobación de los proyectos de práctico de máquina.
- Aprobar dos exámenes parciales o sus respectivas recuperaciones, con nota mayor o igual que seis para su regularización y tener el 60% de asistencia a clases.

Se otorga, tal como lo expresa la reglamentación vigente, dos recuperaciones por cada parcial.

Condiciones de aprobación:
- Por promoción. El alumno debe contar con las condiciones de regularización, con una nota de exámenes parciales mayor o igual a 7 (siete) y tener el 80% de asistencia a clases. Para promocionar, además, deberán aprobar una Evaluación Global Integradora (Ord 13/03).
- Por examen final. El examen puede ser de carácter Oral o Escrito.

Exámenes Libres: Según lo dispuesto por el Art. 27 de Ord. 13/03 CS.
IX - Bibliografía Básica
[1] Rossum, G; Drake, F. “Python Tutorial”. Python Software Foundation, version en español.
[2] Material de la Cátedra “Programación Orientada a Objetos” del Prof. Mario Martins. Universidade do Minho.
[3] http://sim.di.uminho.pt/ensino2.php3?seccao=geral&id=90.
[4] Eckel, B. “Thinking in Java”. Versión en español. President, Mind View Inc.
[5] Java Sun Documentation. http://java.sun.com/reference/docs/index.html.
[6] Aprenda Java como si estuviera en primero. Javier García de Jalón, José Ignacio Rodríguez, Iñigo Mingo, Aitor. Imaz, Alfonso Brazales, Alberto Larzabal, Jesús Calleja, Jon García. Escuela Superior de Ingenieros Industriales de San Sebastián, Universidad de Navarra.
[7] Material proporcionado por la cátedra.
X - Bibliografia Complementaria
[1] Meyer, B. “Object Oriented Software Construction”. Second Edition. Pretince Hall. 1997.
[2] Niemeyer, P; Knudsen, J. “Learning Java”. Editorial: O’Really. ISBN: 1-56592-718-4. 722 páginas.
[3] Norton, P; Samuel, A. Aitel, D; et.al. “Beginning Python”. Wiley Publishing, Inc. 2005. ISBN-10: 0-7645-9654-3.
[4] Ascher, D; Lutz, M. “Learning Python”. O'Reilly Second Edition. 2004. ISBN: 0-596-00281-5.
[5] The Java Tutorial. http://java.sun.com/docs/books/tutorial/index.html.
XI - Resumen de Objetivos
Al finalizar la asignatura el alumno debe haber asimilado los conceptos básicos de la programación orientada a objetos, y de las bases para el desarrollo de aplicaciones en Java y Python.
XII - Resumen del Programa
Unidad 1: Paradigma de Programación Orientada a Objetos.
Unidad 2: Clases.
Unidad 3: El lenguaje de Programación Java.
Unidad 4: Java y la Programación Orientada a Objetos.
Unidad 5: Manejo de Excepciones, Applets, AWT.
Unidad 6: Programación en Python.
XIII - Imprevistos