PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 1
Carrera: Ingeniería en Sistemas de Información
Plan de Estudio: 2008
Área: Programación
Porcentaje de horas cátedra del área en la carrera: 14,60%
Porcentaje de horas cátedra de la asignatura en el área: 2,92%
Asignatura: Paradigmas de Programación
Carga horaria semanal: 8 hs. cátedra | Carga horaria total: 128 hs. cátedra.
Nivel: 2º
Anual 1er. Cuatrimestre 2do. Cuatrimestre
Ciclo Lectivo: 2018
Equipo docente:
Profesores:
Nombre y Apellido: Dr. Rubén Alfredo BERNAL
Categoría docente: Prof. Asociado Interino
Dedicación: Simple (2)
Auxiliares:
Nombre y Apellido: Ing. Carlos Cuevas
Categoría docente: JTP Ordinario
Dedicación: Simple (1)
Nombre y Apellido: Ing. Cesar Javier Pizzi
Categoría docente: Ayudante de Primera Ordinario
Dedicación: Simple (1)
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 2
FUNDAMENTACIÓN DE LA ASIGNATURA
La asignatura aporta al perfil del egresado los conocimientos, habilidades, metodologías de
diferentes paradigmas de programación, así como las capacidades de análisis y síntesis para
plantear soluciones a diferentes problemas.
Cronológicamente, se plantea una introducción de los paradigmas de programación y sus
ámbitos de aplicación, posteriormente se realiza una revisión teórica de conceptos fundamentales
que abarcan los lenguajes más destacados de cada paradigma, incluyendo conceptos como tipos,
sistemas de tipos, enlace, alcance, visibilidad, abstracciones etc.
Posteriormente se enfoca en los conceptos de la programación Orientada a Objetos,
proporcionando al egresado los fundamentos de un paradigma esencial para el desarrollo de
software actual. Se pone énfasis en los beneficios que posee el mismo para obtener soluciones
robustas y funcionales. Dentro de esta unidad temática, se propone conocer profundamente las
particularidades de este estilo de programación mediante el desarrollo de modelos y algoritmos
para solucionar problemas.
A continuación, se propone el estudio de los fundamentos que subyacen a la programación
lógica partiendo de la lógica matemática. Se destaca la manera en que se construyen los
programas y el modo en que se realiza el proceso de inferencia.
Finalmente la asignatura presenta una introducción del cálculo lambda para desembocar
luego a la programación funcional. Se destacan los beneficios que posee este nuevo estilo de
programación especialmente por la manera en que se pueden escribir programas simples y
concisos usando recursividad, emparejamiento de patrones, evaluación perezosa, etc.
OBJETIVOS
Analizar algunos paradigmas de lenguajes de programación, introduciendo sus conceptos principales.
Evaluar los conceptos de lenguajes de programación en términos de su contribución al proceso de desarrollo de software.
Desarrollar criterios necesarios para realizar la selección criteriosa de un lenguaje de programación para determinados propósitos.
Ejercitar el juicio crítico para extraer conclusiones en forma independiente sobre los contenidos de la materia.
Usar el lenguaje técnico de la materia.
Aprender y desarrollar programas de distinta complejidad en un lenguaje de programación Orientado a Objetos y funcional.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 3
CONTENIDOS
UNIDAD I. Introducción.
Qué es un Paradigma. Qué es un Paradigma de programación. Importancia de estudiar conceptos comparados en lenguajes de programación
para la formación de criterios. Características de lenguajes de programación representativos de cada
paradigma. Ámbitos o entornos de aplicación. Historia de los lenguajes de Programación. Peso histórico y cuantitativo de los lenguajes de programación. Orígenes y evolución. Puntos relevantes y aspectos críticos.
OBJETIVOS ESPECÍFICOS
Descubrir el concepto de paradigma y paradigmas de programación. Identificar los lenguajes que son representativos de cada paradigma de
programación a lo largo de la historia. Reconocer la tendencia evolutiva de los lenguajes de programación.
CARGA HORARIA:
Cantidad de Horas de Teoría: 2:15 hs. (1 clase) Cantidad de Horas de Práctico: 3:45 hs. (1 clase)
UNIDAD II. Conceptos Comparados en Lenguajes de Programación
Valores y Tipos. Tipos Simples y Compuestos Sistemas de Tipos.
Equivalencia de tipos. Axiomas de equivalencia estructural. Equivalencia de nombres.
Control de tipos de forma estática y dinámica. Principio de Completitud de Tipos. Lenguajes con sistemas fuertemente tipados. Sistema de tipos monomórficos y polimórficos. Sobrecarga. Polimorfismo. Paramétrico y de inclusión. Tipos genéricos. Conversiones de tipos.
Variables y Actualizaciones. Variables compuestas. Tiempo de Vida de una variable. Variables globales y locales. Variables de pila y variables persistentes.
Binding: Enlace o Resolución de vínculos entre entidades y atributos Enlace y ámbito. Lenguajes con estructura de bloques. Alcance y visibilidad. Declaraciones. Alcance de las declaraciones. Ligamiento estático y dinámico.
Abstracciones Mecanismos de abstracción.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 4
Tipos (abstractos) de datos. Parámetros. Mecanismos de paso de parámetros. Por copia y por referencias. Orden de evaluación de parámetros. Evaluación impaciente y perezosa. Funciones estrictas y no estrictas.
Conclusiones Balance de características y propiedades de lenguajes de programación. Aportes oportunos de cada paradigma. Mención de otros paradigmas. Nuevos enfoques: fronteras entre paradigmas.
OBJETIVOS ESPECÍFICOS
Manejar los conceptos fundamentales que subyacen a la mayoría de los lenguajes de programación.
Manejar formalismos matemáticos para la asimilación de teorías básicas de los Tipos de datos.
Interpretar y asimilar los mecanismos de paso de parámetros y la forma de evaluación de los mismos en la llamada a abstracciones.
Reconocer conceptos avanzados utilizados en el diseño de los lenguajes de programación actuales.
Formar en el alumno un criterio propio a la hora de seleccionar un lenguaje de programación de un paradigma determinado para el desarrollo de casos reales.
CARGA HORARIA:
Cantidad de Horas de Teoría: 09:00 hs. (4 clases) Cantidad de Horas de Práctico: 15:00 hs. (4 clases)
UNIDAD III. Paradigma de Programación Orientada a Objetos
Impacto en el enfoque Orientado a Objetos. Conceptos básicos de la Programación en Grande.
Ocultamiento de información. Modularidad. Jerarquía. Polimorfismo.
Objetivos de la Orientación a Objetos. Ventajas. Programación estructurada vs. POO Definición de conceptos
Objetos Clases Ocultación de Información y Visibilidad Instanciación Notación de objetos Mensajes Herencia Simple y Múltiple Conflicto de nombres en la herencia múltiple. Relaciones de Agregación y Composición. Relaciones contractuales, de colaboración o de asociación. Redefinición y Sobrecarga Clases abstractas y concretas
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 5
Miembros de instancia y de clase Polimorfismo y enlace dinámico
C++, SmallTalk, Python. Ejemplos.
OBJETIVOS ESPECÍFICOS
Tomar conciencia de las ventajas que proveen los conceptos de reutilización, encapsulamento, ocultamiento de información y visibilidad.
Manejar los conceptos de objetos y clases de objetos, y cómo se los puede utilizar para modelar el mundo real.
Distinguir entre los diferentes tipos de relaciones entre clases y objetos. Apreciar la utilidad que proporcionan las clases abstractas y concretas y sus
diferencias. Distinguir las diferencias entre redefinición y sobrecarga de métodos. Resolver ejercicios de distinta complejidad en SmallTalk. Fortalecer en el alumno la capacidad de interacción entre pares,
desempeñándose proactivamente en situaciones grupales.
CARGA HORARIA:
Cantidad de Horas de Teoría: 6:45 hs. (3 clases) Cantidad de Horas de Práctico: 11:45 hs. (3 clases)
UNIDAD IV. Paradigma de Programación Lógica
Programación Declarativa. Principios del Paradigma lógico. Concepción de problemas.
Características particulares. Representación formal. Espacio de Búsqueda. Tipos de soluciones.
Búsqueda. Búsqueda en grafos y árboles. Algoritmo de Control. Métodos de búsqueda.
Primero en profundidad. Backtracking. Primero en amplitud. Ventajas y desventajas.
Lógica Proposicional. Sintaxis, Semántica. Fórmulas bien formadas. Interpretación Lógica. Consecuencia Lógica.
Métodos de prueba. Inferencia Lógica. Cláusulas.
Literal Proposicional. Cláusula proposicional. Cláusula proposicional de Horn.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 6
Regla de Resolución proposicional. Refutación y Deducción. Mundo Cerrado. Árbol de resolución. Árbol SLD. Negación en Programación Lógica.
Lógica de Predicados. Lógica de Predicado de Primer Orden. Sintaxis y Semántica. Cláusulas de Horn Sustitución y Unificación. UMG. Principio de Resolución de Robinson. Regla de Resolución de Predicados. Notación Prolog.
Lenguaje de Programación Prolog. Hechos y reglas en Prolog. Consultas. Variables. Backtracking y Recursión. Listas.
Representación. Unificación. Ejemplos.
OBJETIVOS ESPECÍFICOS
Definir formalmente un problema. Determinar el espacio de búsqueda de una situación problemática. Reconocer un proceso de búsqueda para la resolución de un problema como un
isomorfismo con el recorrido de un árbol. Conocer los conceptos fundamentales de la programación lógica. Comprender los formalismos de la lógica proposicional. Entender cómo se extiende a la lógica proposicional con la lógica de Predicados
como base fundamental a los lenguajes de programación lógica. Afianzar los conceptos de Sustitución, Unificación, UMG y resolución. Resolver ejercicios mediante resolución y árboles SLD. Conocer el lenguaje de programación Prolog, su estructura y sintaxis.
CARGA HORARIA:
Cantidad de Horas de Teoría: 09:00 hs. (4 clases) Cantidad de Horas de Práctico: 15:00 hs. (4 clases)
UNIDAD V. Paradigma de Programación Funcional
Antecedentes Históricos. Importancia de los lenguajes funcionales. Lenguajes funcionales puros e híbridos. El cálculo lambda.
Fundamentos. Expresiones lambda. Sintaxis
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 7
Convenciones sintácticas Variables: ámbito, Libres y Ligadas. Lambda Reducciones
-reducción
-reducción o -conversión
-reducción
-reducción Órdenes de Reducción Propiedad de Confluencia y Terminación
Estructura de los Lenguajes Funcionales. Definición y llamada de funciones. Forma Normal. Modos de evaluación. Impaciente y perezoso. Polimorfismo. Transparencia Referencial. Recursividad.
Lenguaje de programación Haskell. Valores y Tipos. Funciones. Funciones de orden superior. Estructuras de Datos infinitas. Expresiones Case y Pattern matching.
OBJETIVOS ESPECÍFICOS
Reconocer la importancia del paradigma funcional en el área científica. Manejar los conceptos del cálculo lambda. Conocer y manejar los conceptos básicos del paradigma, tomando conciencia
de la potencialidad que proveen las expresiones y funciones. Profundizar en el comportamiento de la evaluación perezosa y sus beneficios. Conocer el lenguaje de programación funcional Haskell y desarrollar programas
de diversa complejidad.
CARGA HORARIA:
Cantidad de Horas de Teoría: 09:00 hs. (4 clases) Cantidad de Horas de Práctico: 15:00 hs. (4 clases)
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 8
ESTRATEGIAS METODOLÓGICAS
a) ESTRATEGIAS DE ENSEÑANZA
CLASE TEÓRICA
Se procederá de la siguiente manera:
El docente efectuará una exposición clara y ordenada, de modo tal que se destaquen los fundamentos de programación y sus aplicaciones.
No se abundará en detalles superfluos ni se tratarán los temas en un nivel muy alto de abstracción y densidad para facilitar la comprensión de los mismos.
El trabajo en pizarrón se realizará en forma clara, con símbolos y letras de tamaño que permitan su lectura perfectamente.
En la mayoría de las clases se proyectarán diapositivas para la mejor comprensión del alumno; esto permitirá un mayor aprovechamiento de la clase evitando que la necesidad de tomar apuntes que quite la oportunidad del alumno de captar y comprender los conceptos enunciados por el profesor.
Las clases serán lo más dinámicas posibles mediante la interacción profesor-alumno de manera que el educando tenga la posibilidad de ir descubriendo soluciones a distintas problemáticas propuesta por el docente.
Para los contenidos referentes a la Programación Orientada a Objetos, las clases se desarrollarán de manera diferente. Los alumnos se reunirán en grupos pequeños y se les asignará un tema relacionado con dicha unidad temática para lectura, análisis y discusión. Con posterioridad, cada grupo realizará una exposición plenaria de los contenidos asignados, finalmente, el resto de la clase podrá realizar las preguntas que considere necesarias. El docente realizará contribuciones pertinentes e ilustrará con ejemplos.
Será estructurada de la siguiente manera:
Una introducción de entre 5 y 10 minutos de duración y que consistirá en: o Planteo de la importancia del tema a tratar y su ubicación en el contexto de la
asignatura (si en esa clase comienza el desarrollo del mismo). o Breve reseña de lo desarrollado en la clase anterior (si el tema continua).
El desarrollo del tema propiamente dicho.
La conclusión será un breve resumen de lo expuesto, comentando sobre los puntos de mayor importancia.
CLASE PRÁCTICA
Se desarrollaran de la siguiente manera:
Primeros 30 minutos (aproximadamente) Durante los primeros 30 min. de la clase, el profesor (ayudante o JTP), dará las
indicaciones generales, teórico-prácticas, para el desarrollo de los temas
correspondientes a esa clase y resolverá algún ejercicio, que será elegido, de la guía de
trabajos prácticos de acuerdo al grado de dificultad, generalidad u otra característica
que lo destaque sobre los demás de ese tema.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 9
El resto de la clase: Durante este tiempo, bajo la supervisión y guía del profesor, los alumnos resolverán el
resto de los ejercicios del trabajo práctico que corresponda a esa clase.
b) MODALIDAD DE AGRUPAMIENTOS
En las clases prácticas en máquina, los alumnos podrán agruparse en pequeños grupos a fin de plantear diferentes puntos de vista en la resolución de planteos. Los mismos son flexibles y pueden variar de clase a clase.
En la unidad IV (POO), los alumnos formarán grupos homogéneos de manera que cada uno pueda abordar el análisis, estudio (y posterior exposición) de los diferentes conceptos del estilo de programación orientado a objetos.
Para el desarrollo del trabajo monográfico final, se organizarán en grupos de no más de 2 o 3 personas.
Se estima que las horas que los alumnos deberán dedicar para la realización del trabajo de Investigación es de 2 a 3 hs. semanales, desde el momento que se le asigna el tema al grupo hasta la fecha en que se deberá realizar la presentación.
c) CONSULTAS
Luego de cada clase teórica, el profesor podrá dedicar 15 a 20 minutos para consultas en general, ya sea referente a los trabajos monográficos e investigación o aquellas que tengan que ver con los contenidos de la materia.
Asimismo dejará disponible una dirección de correo electrónico para responder a inquietudes del alumnado.
Además, la cátedra cuenta con un aula en el Campus Virtual de la Facultad a través de la cual los alumnos pueden acceder al material didáctico, cronograma de clases, fechas de los exámenes, etc., como así también plantear sus inquietudes o dudas, interactuando con sus pares y recibiendo respuestas por parte de los docentes.
d) CRONOGRAMA
El cronograma está confeccionado de acuerdo al Calendario Académico del presente año lectivo. Las clases se dictarán en función de los horarios expresados seguidamente:
Lunes Martes Miércoles Jueves Viernes
2º “A” 14:00 a 16:15
(P)
16:25 a 18:40
(T)
14:45 a 16:15
(P)
2º “B” 21:10 a 23:25
(P)
18:45 a 21:00
(T)
21:10 a 22:40
(P)
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 10
Semanas CLASES TEÓRICAS CLASES
PRÁCTICAS 2º “A”
CLASES
PRÁCTICAS 2º “B”
06/08 – 10/08 Unidad I Introducción. Historia. Qué es un Paradigma de Programación. Características de algunos lenguajes de programación. Origen y evolución.
Práctico 1 Práctico 1
13/08 – 17/08 Unidad II Valores y tipos Simples y Compuestos. Control de tipos.
Práctico 1 Práctico 1
20/08 – 24/08 Unidad II Equivalencia de tipos. Sistemas de Tipos monomórficos y polimórficos.
Práctico 2 Práctico 2
27/08 – 31/08 Unidad II Variables. Actualizaciones. Tiempos de vida de una variable. Enlace y ámbito. Alcance y Visibilidad. Mecanismos de Abstracción. Paso de parámetros. Evaluación de Parámetros.
Práctico 2 Práctico 2
03/09 – 07/09 Unidad III Introducción a la POO. Modularidad. Objetos y Clases. Ocultamiento y Visibilidad. Instanciación. Mensajes.
1º Instancia de evaluación: (Exposición y Coloquio POO)
Práctico 3 Práctico 3
10/09 – 15/09
Exámenes Finales – 4º Llamado (con suspensión de clases)
17/09 – 21/09 Relaciones de Herencia. Relaciones de Composición y Agregación. Relaciones contractuales, de colaboración o de asociación.
1º Instancia de evaluación: (Exposición y Coloquio POO)
Práctico 3 Práctico 3
24/09 – 28/09 Unidad III Redefinición de métodos. Anulación o Sustitución Sobrecarga de Clases. Clases Abstractas.
1º Instancia de evaluación: (Exposición y Coloquio POO)
Práctico 3 Práctico 3
01/10 – 05/10 Unidad IV Introducción a la Programación Lógica. Problemas: representación Formal. Espacio de Búsqueda y Soluciones. Búsqueda: Tipos. Ventajas y Desventajas. Encadenamiento. Backtracking.
2º Instancia de evaluación (Teórica) “A” y “B”: Jueves 04/10
3º Instancia de evaluación (Práctica)
“A”: Miércoles 03/10
“B”: Miércoles 03/10
08/10 – 12/10 Unidad IV Programación Lógica. Sintaxis y Semántica.
Práctico 4 Práctico 4
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 11
Cláusulas. Lógica prop. Cláusulas Horn.
15/10 – 19/10 Unidad IV Resolución. Negación en programación lógica. Mundo cerrado. Resolución SLD.
Práctico 4 Práctico 4
22/10 – 26/10 Unidad IV Lógica de Predicados de Primer Orden. Sintaxis. Sustitución y Unificación. UMG. Resolución
Práctico 4 Práctico 4
29/10 – 02/11 Unidad V Introducción a los lenguajes funcionales. Historia. El cálculo lambda. Fundamentos. Expresiones Lambda. Sintaxis. Convenciones sintácticas. Variables Libres y Ligadas.
Práctico 5 Práctico 5
05/11 – 10/12 Exámenes Finales – 5º Llamado
12/11 – 16/11 Unidad V
Operadores. Ordenes de Reducción.
Propiedades de Confluencia y Terminación.
Práctico 5 Práctico 5
Límite de Entrega
16/11 23:59 Presentación del trabajo Monográfico
19/11 – 23/11 Unidad V Lenguajes Funcionales. Conceptos. Modos de Evaluación de expresiones. Polimorfismo.
5º Instancia de Evaluación (Práctica)
“A”: Miércoles 21/11
“B”: Miércoles 21/11
26/11 – 30/11 Unidad V Transparencia Referencial. Funciones de Orden superior.
4º Instancia de Evaluación (Teórica) “A” y “B”: Jueves 29/11
Clase de Consultas
03/11 – 07/12 Unidad V Haskell. Resolución de casos propuestos.
1º Instancia de Recuperación Jue 06/12 17:00 hs.
2º Instancia de Recuperación
Mie 05/12 17:00 hs.
11/12 – 16/12 Exámenes Finales – 6º Llamado (Firma de Libretas)
18/12 – 23/12 Exámenes Finales – 7º Llamado (Firma de Libretas)
Año 2019
15/02 – 21/02 Exámenes Finales – 8º Llamado (Firma de Libretas)
3º Instancia de Recuperación Jue 21/02 17:00 hs.
4º Instancia de Recuperación
Mie 20/02 17:00 hs.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 12
26/02 – 03/03 Exámenes Finales – 9º Llamado (Firma de Libretas)
05/03 – 10/03 Exámenes Finales – 10º Llamado (Firma de Libretas)
FERIADOS
Domingo 19/08 Aniversario de la Universidad Tecnológica Nacional
Lunes 20/08 17 de Agosto: Paso a la inmortalidad del General José de San Martín.
Lunes 27/08 San Fernando Rey Patrono de Resistencia
Viernes 21/09 Día del Estudiante
Sábado 29/09 Aniversario de la Creación de la Facultad Regional Resistencia
Lunes 15/10 12 de Octubre: Día del Respeto a la Diversidad cultural
Lunes 19/11 20 de Noviembre: Día de la Soberanía Nacional
Sábado 08/12 Día de la Inmaculada Concepción de María
e) ORGANIZACIÓN DE ESPACIOS DENTRO Y FUERA DEL ÁMBITO UNIVERSITARIO
A los efectos de posibilitar un correcto desenvolvimiento de la asignatura, deberá contarse con un laboratorio donde se puedan instalar los lenguajes de programación que se estudian; ya sea el principal de la materia o aquellos que sean referenciados en la cátedra u objeto de investigación.
Se prevé realizar las dos o tres primeras clases prácticas en laboratorio para introducir al alumno al manejo del lenguaje en la máquina.
El equipamiento requerido para las mismas será de una computadora por cada dos alumnos con el Software necesario para desarrollar las clases; en este caso el lenguaje Smalltalk.
Posteriormente se irán alternando clases en aula y en laboratorio según las necesidades.
MATERIALES CURRICULARES (RECURSOS)
Los recursos disponibles para el desarrollo de las clases teóricas y prácticas son:
Gráficos explicativos o de síntesis. Guía de trabajos prácticos y apuntes de teoría. Bibliografía. Transparencias y diapositivas. Videos. Publicaciones o tutoriales. Software de evaluación orientado a la enseñanza (Lenguajes de programación). Software de evaluación para construcción de árboles SLD.
Se requiere un cañón para las clases teóricas.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 13
FORMACIÓN PRÁCTICA
a) FORMACIÓN EXPERIMENTAL
Ambito de realización: Universidad. En laboratorios. Disponibilidad de infraestructura y equipamiento: Laboratorios con SW necesario (lenguajes de programación) Actividades a desarrollar: Práctica en máquina. Incluirá diseño de diagramas de clases y programación de soluciones propuestas a ejercicos planteados. Tiempo: 30 hs Períodos: 20/08 al 14/09 15/10 al 16/11 Evaluación: Permanente durante el desarrollo del taller.
b) RESOLUCIÓN DE PROBLEMAS DE INGENIERÍA:
Ambito de realización: Universidad. Actividades a desarrollar: Resolución de problemas reales o hipotéticos planteados mediante guías de trabajo. Los mismos serán planteados y desarrollados en clase. Tiempo: 15 hs Evaluación: En proceso. De seguimiento parcial y final.
EVALUACIÓN DEL ALUMNO
a) MOMENTOS:
Durante el cuatrimestre se establecen 5 (cinco) instancias de evaluación acorde a lo previsto en el Régimen de Aprobación Directa y Aprobación de la Cursada (Res. Nº 774/16); la aprobación de las mismas se logrará con la obtención de un mínimo de 6 puntos sobre un total de 10.
Primeramente, se prevé una instancia de evaluación en la modalidad de exposición grupal seguido de coloquio. Posteriormente se consideran otras 4 (cuatro) instancias de evaluación sumativas, escritas e individuales, separándose la evaluación del contenido teórico del práctico. Las evaluaciones prácticas serán elaboradas con dificultades similares a las que poseen los problemas propuestos en la Guía de Trabajos Prácticos. Las evaluaciones teóricas se referirán a los contenidos desarrollados en clase.
a) Instancias de evaluación durante el cursado: Se realizarán 5 instancias de evaluación.
1º. Presentación de trabajos expositivos seguido de coloquio durante el desarrollo
de la Unidad Temática III (en relación al POO).
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 14
2º. Al finalizar las unidades temáticas I, II y III. Será íntegramente teórica.
3º. Al finalizar los Trabajos prácticos 1, 2 y 3. Será íntegramente práctica.
4º. Al finalizar las unidades temáticas IV y V. Será íntegramente teórica.
5º. Al finalizar los Trabajos prácticos 4 y 5. Será íntegramente práctica.
Se prevén además, 4 (cuatro) instancias de recuperación al finalizar el cursado y entre el
octavo y noveno llamado de exámenes finales según el siguiente detalle:
1º IR: corresponde recuperar 1º IE (la exposición de POO) y 2º IE.
2º IR: corresponde recuperar 3º IE.
3º IR: corresponde recuperar 4º IE.
4º IR: corresponde recuperar 5º IE.
b) Examen final: Este examen será práctico-teórico para aquellos alumnos que hayan
aprobado la cursada. La parte práctica es eliminatoria, el resto del examen será de temas
teóricos de las distintas unidades que componen el programa de la asignatura.
b) INSTRUMENTOS
Los docentes utilizarán la modalidad de evaluación escrita u oral para la evaluación del
alumno.
c) ACTIVIDADES
Los alumnos serán evaluados, en primer lugar, en un trabajo expositivo grupal seguido de
un coloquio referido a un tema relacionado a la Programación Orientada a Objetos. Los
recursos a utilizar quedarán a consideración de los alumnos. Se requerirá como requisito de
aprobación la elaboración de un registro audiovisual del proceso de preparación de los
contenidos expositivos donde queden evidenciados los debates que se llevaron a cabo, las
decisiones que se tomaron, situaciones de liderazgo, de consenso y todo lo que el alumno
estime necesario para mostrar el trabajo realizado.
Se realizarán además cuatro exámenes individuales escritos que contemplarán contenidos
teóricos y prácticos.
Se incorpora a la materia un trabajo de investigación que los alumnos deberán desarrollar
para la potenciación del ingenio e imaginación creadora. Se armarán grupos de dos o tres
personas y tendrán asignado un tema relacionado con los diferentes paradigmas de
programación.
Para elaborar el trabajo escrito, deberán seguirse las especificaciones técnicas de
elaboración establecidas en la guía del trabajo. No se requerirá la exposición en clase. La
evaluación final estará a cargo de los docentes de la cátedra.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 15
La entrega del trabajo escrito tendrá una fecha límite establecida en el cronograma de la
materia.
d) CRITERIOS DE:
APROBACIÓN DE CURSADA
Se dará bajo las siguientes condiciones:
Porcentaje de asistencia a clases requerida por la reglamentación vigente.
Aprobación de cuatro de las cinco instancias de evaluación con una nota no inferior a 6
(seis). La segunda, cuarta y quinta instancia son obligatorias para la aprobación de cursada.
Adicionalmente deberá tener presentado y aprobado el trabajo monográfico.
El alumno que reúna estas condiciones, tendrá aprobada la cursada de la asignatura y
tendrá acceso a rendir el examen final para su eventual aprobación. Si la nota de alguna de
las instancias fuese menos de 6 (seis) puntos, podrá hacer uso de las instancias de
recuperación según cronograma para alcanzar la nota mínima de aprobación: 6 (seis).
Luego de las mismas, si en algún caso no se alcanzara dicha nota para las instancias de
evaluación obligatorias y opcionalmente en una más, quedará en condición de libre.
APROBACIÓN DIRECTA
Para lograr la aprobación directa de la asignatura, el alumno deberá reunir el porcentaje de
asistencia a clases requerida por la reglamentación vigente, aprobar las 5 (cinco) instancias
de evaluación propuestas y haber presentado y aprobado el trabajo monográfico.
El estudiante que no apruebe una instancia de evaluación, podrá recurrir a una única
instancia de recuperación a fin de lograr la aprobación directa.
La nota promedio obtenida será la calificación definitiva obtenida por el estudiante.
ASIGNATURAS O CONOCIMIENTOS CON QUE SE VINCULA LA MATERIA
Tiene relación con materias como Matemática discreta y Sintaxis y Semántica del Lenguaje
y estrecha relación con Algoritmos y Estructura de Datos, Gestión de Datos y Diseño de
sistemas.
ACTIVIDADES DE COORDINACIÓN
Se evaluará en forma conjunta con los responsables de las asignaturas del nivel anterior y
del primer cuatrimestre, la pertinencia, oportunidad y profundidad requerida de los contenidos
dictados.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 16
Respecto de las asignaturas posteriores, se solicitará detalles del nivel de profundidad con
el cual enfocar los contenidos de la materia y que servirán de base para las del siguiente nivel.
VERTICAL
Conocimientos que se requiere que los alumnos posean al inicio de la asignatura:
Asignatura Temas
Matemática Discreta Teoría de conjuntos. Formalismos.
Introducción a la teoría de grafos y árboles.
Lógica. Lógica Proposicional. Lógica de Predicados.
Estructuras algebraicas.
Algoritmos y Estructura de
Datos
Algoritmos y conceptos asociados.
Abstracciones con procedimientos y función.
Estructuras de control.
Estructuras de datos básicos.
Conocimientos que deberá coordinar con asignaturas posteriores:
Asignatura Temas
Diseño de Sistemas Teoría de Objetos. Conceptos fundamentales.
Gestión de Datos Manejo de lenguajes de programación. Conceptos
asociados.
HORIZONTAL
Conocimientos que deberían adquirir durante el cursado de otra/s asignatura/s del mismo nivel:
Asignatura Temas
Sintaxis y Semántica del
Lenguaje
Árboles de análisis sintáctico. Derivaciones.
Expresiones Regulares.
BIBLIOGRAFÍA
a) OBLIGATORIA O BÁSICA
Watt, David, “Programming Languages Design Concepts”, Department of Computing Science, University of Glasgow, Scotland, 2004.
Unidades I, II y V
Scott, Michael L., “Programming Languages Pragmatics”. Third Edition, Department of Computing Science, University of Rochester, 2009.
Unidades I, II, III y V
Sebesta, Robert W., “Concepts of Programming Languages” Tenth Edition, University of Colorado, 2012.
Unidades I, II y V
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 17
Aguilar, Luis Joyanes. “Programación Orientada a Objetos”.
Unidad III
Adolfo Kvitca. “Resolución de problemas en Inteligencia Artificial”.
Unidad IV
Apuntes de la Cátedra.
Unidad III
Michael Huth y Mark Ryan. “Logic in Computer Science”. Cambridge University Press. 2004
Unidad IV
Jorge Vidart y Alvaro Tasistro. “Programación Lógica y Funcional”.
Unidad IV
Blas C. Ruiz, Francisco Gutiérrez, Pablo Guerrero y José E. Gallardo. “Razonando con Haskell - Un curso sobre programación funcional”. Paraninfo.
Unidad V.
Herramienta para visualizar árboles SLD Dirección: http://www.lcc.uma.es/~pacog/sldDraw/
Unidad V
Programación Funcional Hugs On Line: http://cvs.haskell.org/Hugs/
http://www.haskell.org/
Wilf Lalonde. “Descubra SmallTalk”. Adisson Wesley / Díaz de Santos. Carleton University.
Práctico.
Alec Sharp. “Smalltalk. The Developer´s Guide, by Example”.
Práctico.
b) COMPLEMENTARIA
Brad J. Cox y Andrew J. Novobilski. “Programación Orientada a Objetos. Un enfoque evolutivo.” Addison-Wesley/Díaz de Santos. 1993.
Ghezzi Carlo & Jazayeri Mehdi, "Programming Languages Concepts", John Wiley & Sons Inc, 1987.
Alan Burns & Andy Wellings, Sistemas de Tiempo real y lenguajes de Programación. Tercera Edición, Adison Wesley. 2003.
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 18
Cardelli Luca & Wegner Peter, "On understanding Types, Data Abstractions and Polimorphism", ACM Computing Surveys, Vol. 17, N4, Dec. 1985.
Horowitz Ellis, "Fundamentals of Programming Languages", Computer Science Press Inc. Springer-Verlag, 1983.
Nilsson. Logic Programming, and Prolog.
Manuel Alfonseca, Alfonso Alcalá. Programación Orientada a Objetos. Teoría y técnicas OPP para desarrollo de software. Ediciones Anaya. 1992.
Elaine Rich & Kevin Knight. “Inteligencia Artificial” Segunda Edición. Mc Graw Hill. 1994.
¡Aprende Haskell por el bien de todos!. http://aprendehaskell.es/main.html
DISTRIBUCIÓN DE TAREAS DEL EQUIPO DOCENTE
Nomina de Profesores
Apellido y Nombre
Categoria Concursado o Interino
Dedicación Actividad que cumple y horario
Dr. Rubén
Alfredo Bernal
Profesor Asociado
Interino Simple (2) Dictado de Teoría Jueves 16:25 a 19:40 Jueves 19:45 a 21:00
Actualización de material didáctico
teórico
Elaboración y corrección de evaluaciones
parciales y finales
Diagamación y atención de consultas mediante
el Campus Virtual
Nomina de Auxiliares
Apellido y Nombre
Categoria Concursado o Interino
Dedicación Actividad que cumple y horario
Ing. Carlos
Cuevas
Jefe de Trabajos Prácticos
Concursado Simple (1) Dictado de Prácticas y laboratorios
Miércoles 14:00 a 16:15 Viernes 14:45 a 16:15
Actualización de guía de
Trabajos Prácticos
Elaboración y corrección de evaluaciones
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 19
parciales y recuperatorios
Diagamación y atención de consultas mediante el
Campus Virtual
Ing. Cesar
Javier Pizzi
Auxiliar de Primera
Concursado Simple (1) Dictado de Prácticas y laboratorios
Miércoles 21:10 a 23:25 Viernes 21:10 a 22:40
Actualización de guía de
Trabajos Prácticos
Corrección de evaluaciones parciales y
recuperatorios
Atención de consultas mediante el Campus
Virtual
ARTICULACIÓN DOCENCIA-INVESTIGACIÓN-EXTENSIÓN
Participación del docente asociado de la cátedra en el proyecto de investigación: “Análisis de
Información en Grandes Volúmenes de Datos Orientado al Proceso de Toma de Decisiones
Estratégicas” - Universidad Tecnológica Nacional – Facultad Regional Resistencia (Argentina)
(Cod. UTN4058).
ACTIVIDADES PLANIFICADAS PARA EL AÑO EN RELACIÓN A LA CARRERA
ACADÉMICA DE LOS DOCENTES
Reuniones de asignatura y área
Los integrantes de la cátedra realizarán una reunión mensual. En la misma se discutirán las
experiencias sobre las clases pasadas y se harán las propuestas para las clases futuras. Luego de
cada reunión se elaborarán las actas de las mismas, para dejar una referencia de los temas
tratados. Eventualmente se propondrán reuniones extraordinarias si se consideran oportunas.
Asimismo, participarán de todas las reuniones citadas por el departamento al cual pertenece la
asignatura, incluyendo el taller de Formación por Competencias.
Generación de material didáctico
PLANIFICACIÓN DE CÁTEDRA Paradigmas de Programación – Nivel 2
Año Lectivo 2018
pág. 20
El presenta año se readecuará el material didáctico de la asignatura actualizándolo a las últimas
novedades que incorporan los lenguajes de programación en los diferentes paradigmas. Se
reformularán también las guías de trabajos prácticos en función de esto último.
Se elaborará una guía complementaria con ejercicios complejos que permitan resaltar las
destrezas de los alumnos, en el arte de la programación.
Los recursos obtenidos se pondrán a disposición de los alumnos en el ámbito del Campus Virtual
con el que cuenta la asignatura.
Actividades extra-académicas
Se prevé visitar a empresas del medio que se dedican al desarrollo de software o solicitar la visita
de representantes de las mismas para realizar un plenario en el ámbito universitario. Se estima
realizar las mismas en el último mes del dictado de clases.
Actividades de formación interna de los miembros de la cátedra
Los docentes de la cátedra proporcionarán actividades que conduzcan a la formación de los
auxiliares docentes con los que cuenta la cátedra. Asimismo se propondrá la preparación de
trabajos expositivos en relación a los contenidos de la materia a modo de difusión de nuevos
conceptos de programación.