Teaching Guides Query



Academic Year: 2021/22

30218 - Programming Theory


Teaching Plan Information

Academic Year:
2021/22
Subject:
30218 - Programming Theory
Faculty / School:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Degree:
439 - Bachelor's Degree in Informatics Engineering
443 - Bachelor's Degree in Informatics Engineering
ECTS:
6.0
Year:
2
Semester:
Second semester
Subject Type:
Compulsory
Module:
---

1. General information

2. Learning goals

3. Assessment (1st and 2nd call)

4. Methodology, learning tasks, syllabus and resources

4.1. Methodological overview

The learning methodology will develop itself at several levels:

  • Lectures where the needed subject contents are presented and discussed, ad where student participation is encouraged
  • Development of practical sessions, where problems of greater complexity are solved
  • Practical sessions, where the students develop the theoretical concepts with the writing of longer computer programs to solve more complex problems

These steps try to encourage continuous on-going work for students.

4.2. Learning tasks

The learning process for this subject is based on the following activities:

  • Continuous students-work since the first session
  • Learning of concepts and methods for analysis and design of correct and efficient programs by means of theoretical sessions
  • Use of this knowledge to the resolution of algorithmic problems
  • Practical sessions where technologies needed to apply these concepts to real-world problems are presented, for some programming languages.
  • Course assignments, which are carried out in small groups, in order to encourage in-group work.

 

4.3. Syllabus

The program for this subject is split into two main blocks, with one very short third block at the end. First one develops more advanced Object Oriented Programming concepts, the second focuses on Functional Programming, and the short third makes a sort presentation of other Programming Paradigms.

  • Object-Oriented Programming
    • Classes

    • Inheritance and Polymorphism

    • Generic Programming

    • Containers and Data Structures

    • Type Inference - Exceptions

    • Object-Oriented Design - Design Patterns

  • Functional Programming
    • Introduction to Functional Programming

    • Programming Languages for FP

    • Data and Types

    • Functions and expressions

    • Recursion

    • Lists and Higher-Order functions

  • Other Programming Paradigms
    • Logic Programming

    • Dynamic Languages

4.4. Course planning and calendar

The course calendar is defined by the Escuela de Ingeniería y Arquitectura calendar.

The scheduling for this subject depends on the different Campuses.

In the EINA in Campus Rio Ebro, the scheduling runs this way:

  • Theoretical classes: 2 hours/week
  • Problem classes: 1 hour/week
  • Practical sessions: 7 sessions with 2h duration, one each other week.

In the EUP in Campus Teruel, the scheduling is the following:

  • Theoretical classes: 2 hours/week
  • Problem classes and practical sessions: 2 hours/week.

Students work

To achieve the learning objectives in this subject, students work is estimated around 150 hours:

  • 60h of scheduled classes (lectures, assignments, practical sessions)
  • 25h of programming work in groups
  • 60h of personal autonomous learning time
  • 5h for final tests


Curso Académico: 2021/22

30218 - Tecnología de programación


Información del Plan Docente

Año académico:
2021/22
Asignatura:
30218 - Tecnología de programación
Centro académico:
110 - Escuela de Ingeniería y Arquitectura
326 - Escuela Universitaria Politécnica de Teruel
Titulación:
439 - Graduado en Ingeniería Informática
443 - Graduado en Ingeniería Informática
Créditos:
6.0
Curso:
2
Periodo de impartición:
Segundo semestre
Clase de asignatura:
Obligatoria
Materia:
---

1. Información Básica

1.1. Objetivos de la asignatura

La asignatura y sus resultados previstos responden a los siguientes planteamientos y objetivos:

  • Tras haber adquirido los conocimientos básicos de programación, esta asignatura busca consolidar este conocimiento a través de conceptos más avanzados que aparecen en distintos paradigmas y lenguajes de programación.
  • La asignatura tiene un marcado carácter aplicado.
  • El alumno aprenderá los conceptos avanzados de Programación Orientada a Objetos a partir de los conceptos teóricos implicados y de un conjunto de problemas presentes en el desarrollo actual de software.
  • Se presentará también un nuevo paradigma de programación, nuevo para el alumno hasta el momento, como es la Programación Funcional.
  • Al mismo tiempo, el alumno conocerá otros paradigmas y lenguajes, en particular los denominados lenguajes dinámicos o la programación lógica.

Estos planteamientos y objetivos están alineados con los siguientes Objetivos de Desarrollo Sostenible (ODS) de la Agenda 2030 de Naciones Unidas (https://www.un.org/sustainabledevelopment/es/), de tal manera que la adquisición de los resultados de aprendizaje de la asignatura proporciona capacitación y competencia para contribuir en cierta medida a su logro:

  • Objetivo 7: Energía asequible y no contaminante.

Meta 7.3  De aquí a 2030, duplicar la tasa mundial de mejora de la eficiencia energética.

  • Objetivo 8: Trabajo decente y crecimiento económico.

Meta 8.2 Lograr niveles más elevados de productividad económica mediante la diversificación, la modernización tecnológica y la innovación, entre otras cosas centrándose en los sectores con gran valor añadido y un uso intensivo de la mano de obra.

  • Objetivo 9: Industria, innovación e infraestructuras.

Meta 9.5 Aumentar la investigación científica y mejorar la capacidad tecnológica de los sectores industriales.

Meta 9.c Aumentar significativamente el acceso a la tecnología de la información y las comunicaciones.

1.2. Contexto y sentido de la asignatura en la titulación

Tecnología de Programación aparece después de Programación I, Programación II y Estructuras de Datos y Algoritmos cuando el alumno está preparado para abordar tecnologías y conceptos de programación avanzados.

Es una asignatura obligatoria englobada en la materia de formación común en Programación  y Computación.

1.3. Recomendaciones para cursar la asignatura

El alumno que curse esta asignatura ha de contar con una formación básica tanto en programación como en estructuras de datos.

2. Competencias y resultados de aprendizaje

2.1. Competencias

Al superar la asignatura, el estudiante será más competente para:

  • Conocer y aplicar los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.
  • Analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
  • Concebir, diseñar y desarrollar proyectos de Ingeniería.
  • Resolver problemas y tomar decisiones con iniciativa, creatividad y razonamiento crítico.
  • Usar  las técnicas, habilidades y herramientas de la Ingeniería necesarias para la práctica de la misma.
  • Aprender de forma continuada y desarrollar estrategias de aprendizaje autónomo.
  • Aplicar las tecnologías de la información y las comunicaciones en la Ingeniería.

2.2. Resultados de aprendizaje

El estudiante, para superar esta asignatura, deberá demostrar los siguientes resultados:

R12. Capacidad para desarrollar programas complejos en lenguajes orientados a objetos, y utilizar la programación orientada a objetos en desarrollos que incorporen interfaces gráficos de usuario, sistemas de gestión de eventos o accesos a bases de datos y a recursos distribuidos en la red.

R13. Conocer y comprender la sintaxis y la semántica de un lenguaje de programación funcional.

R14. Desarrollar programas escritos en un lenguaje funcional.

R15. Tener una perspectiva de otros paradigmas y lenguajes de programación.

La asignatura pretende avanzar un paso más en las técnicas de programación imperativa aprendidas en los tres primeros cuatrimestres del Grado:

  • La formalización de las bases de la POO: clases

  • La utilización de técnicas más avanzadas en POO: herencia, polimorfismo, programación genérica.

  • La aplicación de esas técnicas al desarrollo de software: diseño de clases y jerarquías de herencia

Y además introducir con detalle un nuevo paradigma de programación: la Programación Funcional, trabajando las ideas de

  • Recursividad

  • Funciones de orden superior

Y por último, se da un ligero repaso a otros paradigmas y tecnologías de programación:

  • Paradigma Lógico y Lenguajes Dinámicos.

2.3. Importancia de los resultados de aprendizaje

Aprender a programar es esencial para un ingeniero informático. Lo que aprenda en esta asignatura, que complementa a lo ya aprendido en asignaturas anteriores del bloque de programación, dotará al alumno de una perspectiva global de las tecnologías de programación y su aplicación a distintos contextos. Los conceptos que se ven en la asignatura le permitirán tener un mayor abanico en una herramienta fundamental como el lenguaje o la tecnología de programación elegidos para resolver un problema.

3. Evaluación

3.1. Tipo de pruebas y su valor sobre la nota final y criterios de evaluación para cada prueba

El estudiante deberá demostrar que ha alcanzado los resultados de aprendizaje previstos mediante las siguientes actividades de evaluación

A lo largo del semestre se desarrollarán clases de prácticas, para las que se formarán equipos integrados como máximo por dos alumnos. Con los trabajos prácticos de programación se realizará un seguimiento del trabajo realizado por los alumnos durante el semestre y del progreso de su aprendizaje. Los trabajos presentados por el alumno se calificarán con una nota cuantitativa de 0 a 10. Para obtener dichas notas se valorará el funcionamiento de los programas según especificaciones, la calidad de su diseño y su presentación, la adecuada aplicación de los métodos de resolución, el tiempo empleado, así como la capacidad de los integrantes del equipo para explicar y justificar el diseño realizado. Los alumnos que hayan cumplido con los plazos de entrega fijados para los trabajos prácticos de programación, y hayan demostrado en ellos un nivel de aprovechamiento y calidad de resultados adecuados, obteniendo en la valoración de su trabajo práctico al menos la nota mínima especificada, serán exentos de la realización del examen práctico de programación.

Examen práctico e individual de programación. En el examen práctico se le plantearán al alumno ejercicios de programación de naturaleza similar a los realizados en las prácticas o vistos en clase. Se calificará con una nota de 0 a 10, para la que se valorará el correcto funcionamiento y rendimiento de los programas según especificaciones, la calidad de su diseño, la adecuada aplicación de los métodos de resolución y el tiempo empleado. Los alumnos que resulten exentos de la realización de este examen y opten por presentarse al mismo, renunciarán con ello a la nota obtenida con la entrega de sus trabajos prácticos, de forma irreversible.

Examen teórico escrito en el que se deberán resolver problemas de programación y, en su caso, responder preguntas conceptuales o resolver algún ejercicio. Se calificará con una nota de 0 a 10. En general, se valorará la calidad y claridad de las respuestas y soluciones propuestas, su adecuación a las especificaciones y restricciones planteadas, la calidad del diseño, la adecuada aplicación de los métodos de resolución y el tiempo empleado.

 

Ponderación de las actividades de evaluación

A continuación se describe el método de ponderación de las distintas pruebas en los Campus Río Ebro y Campus de Teruel:

En la Escuela de Ingeniería y Arquitectura del Campus Rio Ebro:

Las dos partes de la prueba se ponderarán de la siguiente forma:

  • Examen escrito de teoría y problemas: 60%
  • Examen práctico de programación: 40%

Es necesario una calificación mínima de 5.0 puntos en el examen escrito para aprobar la asignatura. Si la calificación en el examen escrito es inferior a 5.0, la calificación del alumno en la asignatura es la obtenida en dicho examen. Si, por el contrario, esa calificación es igual o superior a 5.0 la calificación del alumno en la asignatura se obtiene como suma ponderada de las calificaciones del examen escrito (con ponderación del 60%) y del examen práctico (con ponderación del 40%).

En la Escuela Universitaria Politécnica del Campus de Teruel:

Las dos partes de la prueba se ponderarán de la siguiente forma:

  • Examen escrito de teoría y problemas: 40%
  • Examen práctico de programación: 60%

Es necesario una calificación mínima de 5.0 puntos en el examen escrito para aprobar la asignatura. Si la calificación en el examen escrito es inferior a 5.0, la calificación del alumno en la asignatura es la obtenida en dicho examen. Si, por el contrario, esa calificación es igual o superior a 5.0 la calificación del alumno en la asignatura se obtiene como suma ponderada de las calificaciones del examen escrito (con ponderación del 40%) y del examen práctico (con ponderación del 60%). Las calificaciones obtenidas en las dos partes en la primera convocatoria se guardan para la segunda convocatoria en el caso de que el alumno no logre aprobar la asignatura.

4. Metodología, actividades de aprendizaje, programa y recursos

4.1. Presentación metodológica general

El proceso de aprendizaje que se ha diseñado para esta asignatura se basa:

  • En las clases impartidas se desarrollará el temario de la asignatura.
  • En las clases de problemas se resolverán problemas de aplicación de los conceptos y técnicas presentadas en el programa de la asignatura.
  • Las sesiones de prácticas se desarrollarán usando un computador. En cada sesión el alumno deberá realizar un trabajo de programación directamente relacionado con los temas estudiados en la asignatura.

4.2. Actividades de aprendizaje

El programa que se ofrece al estudiante para ayudarle a lograr los resultados previstos comprende las siguientes actividades:

  1. El estudio y trabajo continuado desde el primer día de clase.

  2. El aprendizaje de conceptos y metodologías para el análisis y el diseño de programas correctos y eficientes a través de las clases magistrales, en las que se favorecerá la participación de los alumnos.

  3. La aplicación de tales conocimientos al diseño y análisis de algoritmos y programas en las clases de problemas. En estas clases los alumnos desempeñarán un papel activo en la discusión y resolución de los problemas.

  4. Las clases de prácticas en las que el alumno aprenderá la tecnología necesaria para desarrollar pequeños proyectos de programación utilizando un lenguaje de programación determinado.

  5. El trabajo en equipo desarrollando algún pequeño proyecto de programación cuyo  resultado se plasma en  la entrega de programas resultantes convenientemente diseñados y documentados.

  6. Un trabajo continuado en el que se conjugue la comprensión de conceptos, el análisis y la resolución de problemas de programación utilizando "lápiz y papel" y la puesta a punto en computador de algunos pequeños proyectos de programación.

4.3. Programa

El programa de la asignatura se divide en dos grandes bloques, uno dedicado a la programación orientada a objetos y otro a la programación funcional. Existe un tercer bloque muy corto destinado a la presentación a nivel de charlas de otros paradigmas de programación.

  • Programación Orientada a Objetos
    • Clases

    • Herencia y Polimorfismo

    • Programación Genérica

    • Contenedores y Estructuras de Datos

    • Inferencia de Tipos - Excepciones

    • Diseño Orientado a Objetos- Patrones de Diseño

  • Programación Funcional
    • Introducción a la Programación Funcional

    • Lenguajes para Programación Funcional

    • Datos y Tipos

    • Expresiones y Funciones

    • Recursividad

    • Listas y Funciones de Orden Superior

  • Otros Paradigmas de Programación
    • Paradigma Lógico

    • Lenguajes dinámicos

4.4. Planificación de las actividades de aprendizaje y calendario de fechas clave

Organización de la asignatura

La organización docente de la asignatura prevista en la Escuela de Ingeniería y Arquitectura del Campus Rio Ebro es la siguiente:

  • Clases teóricas: 2 horas semanales

  • Clases de problemas: 1 hora semanal

  • Clases prácticas: siete sesiones de 2 horas, una sesión cada dos semanas.
    Son sesiones de trabajo de programación, tuteladas por un profesor, en las que participan los alumnos de cada uno de los subgrupos en los que se divide el grupo.

La organización docente de la asignatura prevista en la Escuela Universitaria Politécnica del Campus de Teruel es la siguiente:

  • Clases teóricas: 2 horas semanales

  • Clases de problemas y prácticas: 2 horas semanales.
    Son sesiones de trabajo de programación, tuteladas por un profesor, en las que participan los alumnos de cada uno de los subgrupos en los que se divide el grupo.

Presentación de trabajos objeto de evaluación:

  • Los problemas y ejercicios que se propongan para ser resueltos individualmente en las clases de problemas se entregarán en las mismas clases de problemas en los que se planteen.

  • El proyecto de programación en equipo será entregado en la fecha que sea anunciada al proponer los trabajos.

Trabajo del estudiante

La dedicación del estudiante para alcanzar los resultados de aprendizaje en esta asignatura se estima en 150 horas aproximadamente, distribuidas del siguiente modo:

  • 60 horas de actividades presenciales (clases teóricas, de problemas y prácticas)

  • 25 horas de trabajo de programación en equipo

  • 60 horas de estudio personal efectivo (estudio de apuntes y textos, resolución de problemas, preparación clases y prácticas, desarrollo de programas)

  • 5 horas de examen final de teoría escrito y de prácticas

Calendario

El calendario de exámenes y las fechas de entrega de trabajos se anunciará con suficiente antelación.