Consulta de Guías Docentes



Curso Académico: 2023/24

20063 - PROGRAMACIÓN II: PARADIGMAS DE LA PROGRAMACIÓN


Information of the subject

Código - Nombre:
20063 - PROGRAMACIÓN II: PARADIGMAS DE LA PROGRAMACIÓN
Titulación:
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
Centro:
350 - Escuela Politécnica Superior
Curso Académico:
2023/24

1. Detalles de la asignatura

1.1. Materia

Informática

1.2. Carácter

Obligatoria

1.3. Nivel

800 - Estudios Propios (MECES 2)
771 - Grado (MECES 2)

1.4. Curso

1

1.5. Semestre

Segundo semestre

1.6. Número de créditos ECTS

6.0

1.7. Idioma

Español

1.8. Requisitos previos

No hay

1.9. Recomendaciones

Se recomienda haber cursado las materias del primer semestre de “Programación I: fundamentos de programación” y “Lógica y matemática discreta”. En caso de no haber cursado o superado ambas, aún es posible seguir esta materia; pero con un esfuerzo adicional.

1.10. Requisitos mínimos de asistencia

No hay

 

1.11. Coordinador/a de la asignatura

Francisco Saiz Lopez

1.12. Competencias y resultados del aprendizaje

1.12.1. Competencias

 

CG2 - Diseñar y desarrollar productos y procesos en los distintos ámbitos de la ciencia e ingeniería de datos, por medio de técnicas analíticas, computacionales o experimentales apropiadas.

CG3 - Resolver problemas con iniciativa, creatividad y razonamiento crítico en el ámbito de la ciencia e ingeniería de datos.

CG5 - Conocer el estado del arte de las tecnologías y las ciencias para permitir la innovación en el ámbito de la ciencia e ingeniería de datos.


CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las
competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.


CB3 - Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.


CB4 - Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.


CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

CT1 - Trabajar en equipo de forma colaborativa y con responsabilidad compartida.

CT2 - Aprender a realizar y aceptar críticas y fomentar la autocrítica.

CT4 - Organizar su propio autoaprendizaje con un alto grado de autonomía en nuevos métodos y tecnologías, así como adaptarse a nuevas situaciones.

CE3 - Conocer y aplicar los fundamentos de programación y técnicas algorítmicas básicas para diseñar soluciones a problemas, eligiendo el paradigma y los lenguajes de programación más relevantes en el ámbito de la ciencia e ingeniería de datos.


CE4 - Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.

CE5 - Conocer, diseñar y utilizar de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de problemas en el contexto de la ciencia e ingeniería de datos.

1.12.2. Resultados de aprendizaje

Conocer y aplicar de forma práctica conceptos y habilidades de carácter avanzado para la programación de computadores, así como comprender y explorar el concepto de paradigma de programación. Comprender la necesidad de las normas de estilo de programación y de la documentación del software, así como aplicar estas prácticas en el desarrollo de programas. Conocer y emplear conceptos avanzados de programación (como estructuras de datos avanzadas, gestión de memoria, recursividad, acceso al sistema operativo ...). Entender el concepto de depuración de programas (como trazas,
depuradores ...) y aplicar el mismo de forma práctica utilizando técnicas adecuadas. Comprender los conceptos de eficacia y eficiencia en el ámbito de la programación de computadores y su aplicación práctica para la prueba, validación y optimización de software. Conocer los principales paradigmas de programación (como imperativo, declarativo, lógico, funcional, orientado a objetos ...) sus características y diferencias, así como las ventajas y limitaciones para su aplicación práctica, y también conocer ejemplos de lenguajes de programación que utilizan distintos paradigmas (tales como Python,
C, Java, R, Haskell, PROLOG ...).

1.12.3. Objetivos de la asignatura

-

1.13. Contenidos del programa

  1. Paradigma de programación imperativa
    • Introducción. Paradigmas de programación (imperativo, declarativo, ...).
    • Desde el concepto de algoritmo hacia la programación imperativa (Python).
      • Estilos de programación. Documentación.
      • Depuración. Validación y optimización.
      • Recursión. Gestión de memoria.
    • Programación Orientada a Objetos (Python).
      • Clases. Diagrama UML.
      • Encapsulamiento.
      • Herencia.
      • Abstracción de métodos y clases.
      • Polimorfismo.
  2. Paradigma de programación funcional
    • Desde el cálculo 𝛌 hacia la programación funcional (Haskell).
      • Inmutabilidad.
      • Transparencia referencial.
      • Currificación de funciones.
      • Patrones.
      • Listas por comprensión.
      • Funciones de orden superior.
      • Funciones anónimas.
    • Patrones: monoide, functor, aplicativo, mónada.
    • Evaluación perezosa y estructuras infinitas.
    • Programación funcional en Python.
  3. Paradigma de programación lógica
    • Desde la lógica formal hacia la programación lógica (Prolog).
      • Formas clausales.
      • Resolución como regla de inferencia.
      • Refutación como estrategia de prueba.
    • Interpretación procedural.
    • Inducción (recursión) en la especificación de algoritmos.
    • Tipos de datos. Estructuras de control de flujo. Biblliotecas.

 

 

1.14. Referencias de consulta

  • Head first Python / Paul Barry author. Second edition. , Beijing, China : O'Reilly Media , 2017
  • Head First Java, 3rd Edition Bert Bates ; Trisha Gee ; Kathy Sierra O'Reilly Media, Inc , 2022
  • Learn You a Haskell for Great Good, Lipovaca, M. Ed. No Starch Press, 2011.
  • Programming in Haskell, Hutton, G. Ed. Cambridge University Press, 2016.
  • Prolog Programming for Artificial Intelligence, 4th Edition Prof Ivan Bratko, University of Ljubljana ©2012 Addison-Wesley
  • An Overview of the SWI-Prolog Programming Environment. January 2003 Conference: Proceedings of the 13th International Workshop on Logic Programming Environments, Tata Institute of Fundamental Research, Mumbai, India, December 8, 2003 Authors: Jan Wielemaker Vrije Universiteit Amsterdam

2. Metodologías docentes y tiempo de trabajo del estudiante

2.1. Presencialidad

 

MODALIDAD

#HORAS

%

Actividades presenciales

52

35.00%

Actividades no presenciales

98

65.00%



2.2. Relación de actividades formativas

 

Actividades presenciales

#horas

Clases teóricas en aula

26

Prácticas con medios informáticos

24

Actividades de evaluación

2

 

3. Sistemas de evaluación y porcentaje en la calificación final

3.1. Convocatoria ordinaria

  • Hay dos métodos de evaluación para la parte teórica de la asignatura: continua y no continua
    • La asignatura solo dispone de un método de evaluación para la parte práctica
  • La nota final de la asignatura se calcula mediante:
    • Nota final asignatura: 0.3*Prácticas + 0.7*Teoría
    • Para aprobar es obligatorio obtener una nota mayor o igual a 5 puntos, tanto en la parte de teoría como en las prácticas. En caso contrario, la nota final en actas será:
      • Calificación: Mín(4.9, 0.3*Prácticas + 0.7*Teoría)
  • La nota de teoría para el método de evaluación continua es:
    • Nota teoría evaluación continua: 0,5 * prueba1 + 0,5 * prueba2
  • La segunda prueba intermedia coincidirá en fecha con la prueba final
    • El alumno deberá elegir ese día entre realizar la segunda prueba intermedia o la prueba final. Si realiza la prueba final, se aplicará el método de evaluación no continua y la nota de la prueba será la nota final de teoría.
  • La nota correspondiente a la parte de Prácticas se calcula mediante: p1*e1+p2*e2+p3*e3, donde e1, e2 y e3 son las calificaciones obtenidas en las entregas intermedias y p1, p2 y p3 son, en términos relativos, la cantidad de sesiones docentes dedicadas en el laboratorio a cada entrega (p1=4/12, p2=5/12, p3=3/12).
  • La nota final será diferente a “No evaluado” si se ha realizado la prueba final, o alguna de las pruebas intermedias o alguna de las 3 entregas.

3.1.1. Relación actividades de evaluación

 

Actividades de evaluación

%

Examen final

70%

 

 



 

 

3.2. Convocatoria extraordinaria

Se aplican las mismas fórmulas y condiciones que en la convocatoria ordinaria con dos salvedades:

  • La calificación de teoría corresponde a una única prueba similar a la prueba final de la convocatoria ordinaria.
  • La calificación de la entrega de prácticas corresponde a la obtenida en la realización de una única práctica. 

Una nota de prácticas de la convocatoria ordinaria se puede conservar (convalidar) sólo para la convocatoria extraordinaria del mismo curso.

3.2.1. Relación actividades de evaluación

Examen 70%

Prácticas 30%

 

4. Cronograma orientativo

 

Semana

Contenido

Horas presenciales

Horas no presenciales

1

Introducción.

2

6

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados.

2

Paradigma imperativo.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

3

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

4

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

5

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de Entrega 1.

6

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

7

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

8

Paradigma funcional.

 

- Primera prueba intermedia.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

9

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

10

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de la Entrega 2.

11

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 3.

12

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 3.

13

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de la Entrega 3.

14

Paradigma lógico.

2

6

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. 

 


Curso Académico: 2023/24

20063 - PROGRAMACIÓN II: PARADIGMAS DE LA PROGRAMACIÓN


Información de la asignatura

Código - Nombre:
20063 - PROGRAMACIÓN II: PARADIGMAS DE LA PROGRAMACIÓN
Titulación:
771 - Graduado/a en Ciencia e Ingeniería de Datos
800 - Microtítulo en Programación
Centro:
350 - Escuela Politécnica Superior
Curso Académico:
2023/24

1. Detalles de la asignatura

1.1. Materia

Informática

1.2. Carácter

Obligatoria

1.3. Nivel

800 - Estudios Propios (MECES 2)
771 - Grado (MECES 2)

1.4. Curso

1

1.5. Semestre

Segundo semestre

1.6. Número de créditos ECTS

6.0

1.7. Idioma

Español

1.8. Requisitos previos

No hay

1.9. Recomendaciones

Se recomienda haber cursado las materias del primer semestre de “Programación I: fundamentos de programación” y “Lógica y matemática discreta”. En caso de no haber cursado o superado ambas, aún es posible seguir esta materia; pero con un esfuerzo adicional.

1.10. Requisitos mínimos de asistencia

No hay

 

1.11. Coordinador/a de la asignatura

Francisco Saiz Lopez

1.12. Competencias y resultados del aprendizaje

1.12.1. Competencias

 

CG2 - Diseñar y desarrollar productos y procesos en los distintos ámbitos de la ciencia e ingeniería de datos, por medio de técnicas analíticas, computacionales o experimentales apropiadas.

CG3 - Resolver problemas con iniciativa, creatividad y razonamiento crítico en el ámbito de la ciencia e ingeniería de datos.

CG5 - Conocer el estado del arte de las tecnologías y las ciencias para permitir la innovación en el ámbito de la ciencia e ingeniería de datos.


CB2 - Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las
competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.


CB3 - Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.


CB4 - Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.


CB5 - Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía

CT1 - Trabajar en equipo de forma colaborativa y con responsabilidad compartida.

CT2 - Aprender a realizar y aceptar críticas y fomentar la autocrítica.

CT4 - Organizar su propio autoaprendizaje con un alto grado de autonomía en nuevos métodos y tecnologías, así como adaptarse a nuevas situaciones.

CE3 - Conocer y aplicar los fundamentos de programación y técnicas algorítmicas básicas para diseñar soluciones a problemas, eligiendo el paradigma y los lenguajes de programación más relevantes en el ámbito de la ciencia e ingeniería de datos.


CE4 - Evaluar la complejidad computacional de un problema, conocer estrategias algorítmicas que puedan conducir a su resolución y recomendar, desarrollar e implementar aquella que garantice el mejor rendimiento de acuerdo con los requisitos establecidos.

CE5 - Conocer, diseñar y utilizar de forma eficiente los tipos y estructuras de datos más adecuados a la resolución de problemas en el contexto de la ciencia e ingeniería de datos.

1.12.2. Resultados de aprendizaje

Conocer y aplicar de forma práctica conceptos y habilidades de carácter avanzado para la programación de computadores, así como comprender y explorar el concepto de paradigma de programación. Comprender la necesidad de las normas de estilo de programación y de la documentación del software, así como aplicar estas prácticas en el desarrollo de programas. Conocer y emplear conceptos avanzados de programación (como estructuras de datos avanzadas, gestión de memoria, recursividad, acceso al sistema operativo ...). Entender el concepto de depuración de programas (como trazas,
depuradores ...) y aplicar el mismo de forma práctica utilizando técnicas adecuadas. Comprender los conceptos de eficacia y eficiencia en el ámbito de la programación de computadores y su aplicación práctica para la prueba, validación y optimización de software. Conocer los principales paradigmas de programación (como imperativo, declarativo, lógico, funcional, orientado a objetos ...) sus características y diferencias, así como las ventajas y limitaciones para su aplicación práctica, y también conocer ejemplos de lenguajes de programación que utilizan distintos paradigmas (tales como Python,
C, Java, R, Haskell, PROLOG ...).

1.12.3. Objetivos de la asignatura

-

1.13. Contenidos del programa

  1. Paradigma de programación imperativa
    • Introducción. Paradigmas de programación (imperativo, declarativo, ...).
    • Desde el concepto de algoritmo hacia la programación imperativa (Python).
      • Estilos de programación. Documentación.
      • Depuración. Validación y optimización.
      • Recursión. Gestión de memoria.
    • Programación Orientada a Objetos (Python).
      • Clases. Diagrama UML.
      • Encapsulamiento.
      • Herencia.
      • Abstracción de métodos y clases.
      • Polimorfismo.
  2. Paradigma de programación funcional
    • Desde el cálculo 𝛌 hacia la programación funcional (Haskell).
      • Inmutabilidad.
      • Transparencia referencial.
      • Currificación de funciones.
      • Patrones.
      • Listas por comprensión.
      • Funciones de orden superior.
      • Funciones anónimas.
    • Patrones: monoide, functor, aplicativo, mónada.
    • Evaluación perezosa y estructuras infinitas.
    • Programación funcional en Python.
  3. Paradigma de programación lógica
    • Desde la lógica formal hacia la programación lógica (Prolog).
      • Formas clausales.
      • Resolución como regla de inferencia.
      • Refutación como estrategia de prueba.
    • Interpretación procedural.
    • Inducción (recursión) en la especificación de algoritmos.
    • Tipos de datos. Estructuras de control de flujo. Biblliotecas.

 

 

1.14. Referencias de consulta

  • Head first Python / Paul Barry author. Second edition. , Beijing, China : O'Reilly Media , 2017
  • Head First Java, 3rd Edition Bert Bates ; Trisha Gee ; Kathy Sierra O'Reilly Media, Inc , 2022
  • Learn You a Haskell for Great Good, Lipovaca, M. Ed. No Starch Press, 2011.
  • Programming in Haskell, Hutton, G. Ed. Cambridge University Press, 2016.
  • Prolog Programming for Artificial Intelligence, 4th Edition Prof Ivan Bratko, University of Ljubljana ©2012 Addison-Wesley
  • An Overview of the SWI-Prolog Programming Environment. January 2003 Conference: Proceedings of the 13th International Workshop on Logic Programming Environments, Tata Institute of Fundamental Research, Mumbai, India, December 8, 2003 Authors: Jan Wielemaker Vrije Universiteit Amsterdam

2. Metodologías docentes y tiempo de trabajo del estudiante

2.1. Presencialidad

 

MODALIDAD

#HORAS

%

Actividades presenciales

52

35.00%

Actividades no presenciales

98

65.00%



2.2. Relación de actividades formativas

 

Actividades presenciales

#horas

Clases teóricas en aula

26

Prácticas con medios informáticos

24

Actividades de evaluación

2

 

3. Sistemas de evaluación y porcentaje en la calificación final

3.1. Convocatoria ordinaria

  • Hay dos métodos de evaluación para la parte teórica de la asignatura: continua y no continua
    • La asignatura solo dispone de un método de evaluación para la parte práctica
  • La nota final de la asignatura se calcula mediante:
    • Nota final asignatura: 0.3*Prácticas + 0.7*Teoría
    • Para aprobar es obligatorio obtener una nota mayor o igual a 5 puntos, tanto en la parte de teoría como en las prácticas. En caso contrario, la nota final en actas será:
      • Calificación: Mín(4.9, 0.3*Prácticas + 0.7*Teoría)
  • La nota de teoría para el método de evaluación continua es:
    • Nota teoría evaluación continua: 0,5 * prueba1 + 0,5 * prueba2
  • La segunda prueba intermedia coincidirá en fecha con la prueba final
    • El alumno deberá elegir ese día entre realizar la segunda prueba intermedia o la prueba final. Si realiza la prueba final, se aplicará el método de evaluación no continua y la nota de la prueba será la nota final de teoría.
  • La nota correspondiente a la parte de Prácticas se calcula mediante: p1*e1+p2*e2+p3*e3, donde e1, e2 y e3 son las calificaciones obtenidas en las entregas intermedias y p1, p2 y p3 son, en términos relativos, la cantidad de sesiones docentes dedicadas en el laboratorio a cada entrega (p1=4/12, p2=5/12, p3=3/12).
  • La nota final será diferente a “No evaluado” si se ha realizado la prueba final, o alguna de las pruebas intermedias o alguna de las 3 entregas.

3.1.1. Relación actividades de evaluación

 

Actividades de evaluación

%

Examen final

70%

 

 



 

 

3.2. Convocatoria extraordinaria

Se aplican las mismas fórmulas y condiciones que en la convocatoria ordinaria con dos salvedades:

  • La calificación de teoría corresponde a una única prueba similar a la prueba final de la convocatoria ordinaria.
  • La calificación de la entrega de prácticas corresponde a la obtenida en la realización de una única práctica. 

Una nota de prácticas de la convocatoria ordinaria se puede conservar (convalidar) sólo para la convocatoria extraordinaria del mismo curso.

3.2.1. Relación actividades de evaluación

Examen 70%

Prácticas 30%

 

4. Cronograma orientativo

 

Semana

Contenido

Horas presenciales

Horas no presenciales

1

Introducción.

2

6

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados.

2

Paradigma imperativo.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

3

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

4

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 1.

5

Paradigma imperativo objetos.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de Entrega 1.

6

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

7

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

8

Paradigma funcional.

 

- Primera prueba intermedia.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

9

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 2.

10

Paradigma funcional.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de la Entrega 2.

11

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 3.

12

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Trabajo en la Entrega 3.

13

Paradigma lógico.

4

4

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados. Envío de la Entrega 3.

14

Paradigma lógico.

2

6

Trabajo del estudiante: realización de la asignación propuesta sobre los temas semanales tratados.