Esta versión de la guía docente es provisional hasta que no finalize el periodo de edición de las guías del nuevo curso.

Logo UAB

Programación 2

Código: 107890 Créditos ECTS: 6
2025/2026
Titulación Tipo Curso
Ingeniería Informática FB 1

Contacto

Nombre:
Jorge Bernal del Nozal
Correo electrónico:
jorge.bernal@uab.cat

Equipo docente

Francisco Javier Massó López
Mireia Bellot Garcia

Idiomas de los grupos

Puede consultar esta información al final del documento.


Prerrequisitos

Información importante: la guía docente ha sido redactada con el catalán como idioma base. Es posible que la traducción al castellano no sea perfecta, pese que se ha hecho de manera manual y se ha revisado a conciencia. Si detectáis algún error o inconsistencia, por favor contactad con el profesor responsable.

La asignatura no tiene ningún prerrequisito oficial. De todas formas, se asume que el estudiante ha cursado la asignatura previa de Programación I y, por tanto, está familiarizado con las estructuras básicas de la programación.


Objetivos y contextualización

Esta asignatura forma parte de la materia 3 (Informática) del Grado de Ingeniería Informática y debe verse como la continuación lógica de Programación I. El objetivo básico es profundizar en las nociones básicas de la programación imperativa introducidas en Programación I e introducir los principios de la programación orientada a objetos. De esta forma, los objetivos formativos que se proponen para la asignatura son los siguientes:

  • Entender el ciclo de vida del desarrollo software: analizar el problema (entender lo que se nos pide), diseño (proponer una solución al problema), implementación (codificación en un lenguaje de programación de la solución escogida), prueba (realización de un test de forma sistemática para asegurar la corrección de la solución implementada).
  • Entender el concepto de algoritmo como herramienta de resolución de problemas con el ordenador y aprender los conceptos fundamentales de la algorítmica.
  • Comprender las principales estructuras de la programación imperativa y utilizarlas correctamente para resolver problemas algorítmicos de cierta complejidad.
  • Conocer las diferentes estructuras para representar información dentro de los algoritmos, tanto los tipos de datos estáticos (tablas, registros y cadenas de caracteres) como los tipos de datos dinámicos (pilas, colas, listas), para poder utilizar la estructura de datos más adecuada para representar la información asociada a un problema algorítmico.
  • Entender y aplicar correctamente los principios básicos de la programación orientada a objetos: concepto de clase y encapsulamiento de datos.
  • Dotar al alumno de la capacidad de diseño de algoritmos para la resolución de problemas complejos, introduciendo de forma progresiva y sistemática una metodología rigurosa y estructurada de programación, basada fundamentalmente en la técnica del diseño descendente de algoritmos.
  • Programar en un lenguaje de programación real y conocer las distintas fases de desarrollo de un programa: escritura, compilación y montaje y ejecución y prueba.
  • Desarrollar los programas siguiendo unas normas de estilo tendentes a conseguir programas de calidad. Dentro de estas normas de estilo se engloban aquéllas que facilitan la comprensión del código, como pueden ser el uso de comentarios, la indentación del código, la utilización de nombres adecuados por variables y funciones, etc.
  • Ser capaz de realizar un ejercicio de abstracción para poder trasladar los conceptos teóricos de la asignatura, especialmente los relativos a la programación orientada a objetos, a diferentes lenguajes de programación, como pueden ser C++ o Python

Resultados de aprendizaje

  1. CM04 (Competencia) Validar las soluciones propuestas a problemas del ámbito de la informática en función de sus requisitos y atendiendo a las condiciones establecidas
  2. KM06 (Conocimiento) Identificar los conceptos básicos de la programación estructurada, modular y orientada a objetos, así como las herramientas y entornos de desarrollo para la creación de software de calidad
  3. KM07 (Conocimiento) Identificar los tipos de datos simples y las estructuras de datos complejas de los lenguajes de programación de alto nivel, así como su almacenamiento en memoria
  4. SM09 (Habilidad) Analizar las necesidades de programación de un sistema informático desde el punto de vista de la necesidad del cliente
  5. SM10 (Habilidad) Utilizar herramientas para el análisis, diseño, codificación y depuración de programas
  6. SM11 (Habilidad) Desarrollar software de pequeña o mediana complejidad para resolver problemas utilizando programación estructurada y orientada a objetos
  7. SM12 (Habilidad) Demostrar habilidades para trabajar cooperativamente en el desarrollo de aplicaciones informáticas

Contenido

Tema 0: Repaso de estructuras de programación básicas

  • Repaso de las estructuras de programación básicas: estructuras condicionales e iterativas, funciones y procedimientos, tablas, matrices, registros

Tema 1: Introducción a la programación orientada a objetos

  • Introducción al concepto de clase. Métodos y atributos. Parte privada y pública. Constructores y destructores.
  • Encapsulamiento de datos. Composición de clases.
  • Persistencia y serialización de objetos. Archivos.

Tema 2: Estructuras de datos dinámicos

  • Concepto de apuntador. Operaciones con apuntadores.
  • Objetos dinámicos.
  • Arrays dinámicos
  • Representación e implementación de estructuras de datos dinámicos: listas, pilas y colas.
  • Utilización de estructuras de datos dinámicos. Librería STL
  • Análisis de costes y complejidad

Actividades formativas y Metodología

Título Horas ECTS Resultados de aprendizaje
Tipo: Dirigidas      
Estudio individual para preparar pruebas de evaluación 11 0,44 KM06, KM07, SM09, SM11, KM06
Sesiones de teoría y ejercicios 50 2 CM04, KM06, KM07, SM09, SM10, SM11, CM04
Tipo: Supervisadas      
Seguimiento de la resolución del proyecto de programación 1 0,04 CM04, SM09, SM10, SM11, CM04
Tipo: Autónomas      
Realización del proyecto de programación 48 1,92 CM04, KM06, KM07, SM09, SM10, SM11, SM12, CM04
Resolución de problemas 36 1,44 CM04, KM06, KM07, SM10, SM11, CM04

La metodología docente de la asignatura parte del principio de que “programar es la única manera de aprender a programar” y, por tanto, se centrará principalmente en el trabajo práctico del estudiante. Las sesiones presenciales se organizarán para introducir los contenidos teóricos de la asignatura desde una perspectiva muy práctica, a partir de ejemplos, ejercicios y problemas de programación que deberán resolverse en clase directamente con el ordenador. Uno de los objetivos de la asignatura es separar los conceptos teóricos (como la definición de una clase o el tratamiento de ficheros) de su implementación en un lenguaje de programación específico, aunque el lenguaje vehicular de la asignatura será C++.

Además de la explicación de los conceptos teóricos y la resolución de pequeños problemas a modo de ejemplo durante las clases, también se llevará a cabo un proyecto de programación que deberá desarrollarse de forma principalmente autónoma a lo largo del curso (con seguimiento y control puntual por parte del profesorado). Este proyecto permitirá integrar de forma práctica casi todos los conceptos y herramientas de programación introducidos en las sesiones presenciales mediante la resolución de un problema real y complejo.

Finalmente, también se propondrá un conjunto de ejercicios y actividades complementarias (como cuestionarios) que deberán resolverse de forma individual a lo largo del curso. Algunos de estos ejercicios se evaluarán y discutirán en las sesiones presenciales, y servirán para comprender, integrar y aplicar los conceptos desarrollados en clase. En todas las actividades del curso (sesiones presenciales, problemas y prácticas) se utilizará principalmente el lenguaje de programación C++, aunque tambiénse explicará de forma complementaria cómo codificar los conceptos más importantes utilizando Python.

En cuanto a la presencialidad, la asignatura no distinguirá entre sesiones de teoría, problemas y prácticas. Las sesiones presenciales se organizarán en cuatro horas semanales en grupos de unos 40 estudiantes. Durante estas sesiones se trabajarán los conceptos detallados en el temario de la asignatura. En algunos casos, se pondrán a disposición del estudiante vídeos explicativos que deberá visualizar antes de la clase. Las sesiones tendrán un enfoque muy práctico, con ejemplos y ejercicios que se plantearán para facilitar la comprensión y el aprendizaje de los conceptos explicados. Estos ejercicios se realizarán y discutirán durante la sesión, y servirán para introducir los contenidos de la asignatura y ver su aplicación práctica. Se recomienda que el estudiante lleve su propio ordenador portátil a clase, si dispone de uno, para poder realizar los ejercicios propuestos.

El estudiante deberá complementar las clases presenciales con trabajo personal autónomo, resolviendo los ejercicios propuestos, que servirán para terminar de asimilar los contenidos de la asignatura. Es importante tener en cuenta que el temario tiene una continuidad lógica a lo largo del curso, por lo que para poder seguir correctamente una clase es necesario haber asimilado lo explicado en las sesiones anteriores. Algunos de estos ejercicios deberán entregarse de forma individual como parte de la evaluación.

Además, los estudiantes deberán realizar, en grupos de dos, un proyecto de programación que se desarrollará de forma autónoma durante todo el curso, fuera de las sesiones presenciales. Este proyecto permitirá abordar un problema de programación con cierta complejidad, integrando la mayoría de los conceptos explicados durante el curso. A lo largo del curso, se dedicarán algunas sesiones presenciales al control, seguimiento y evaluación del trabajo realizado.

La gestión de la docencia de la asignatura se realizará a través de la plataforma Caronte (http://caronte.uab.cat/), que servirá para consultar los materiales, gestionar los grupos de prácticas, realizar las entregas correspondientes, consultar las calificaciones, comunicarse con el profesorado, etc.

Nota: se reservarán 15 minutos de una clase dentro del calendario establecido por el centro o por la titulación para que el alumnado rellene las encuestas de evaluación de la actuación del profesorado y de evaluación de la asignatura o módulo.


Evaluación

Actividades de evaluación continuada

Título Peso Horas ECTS Resultados de aprendizaje
Actividades evaluables a realizar en clase 10% 0 0 CM04, KM06, KM07, SM09, SM10, SM11
Cuestionarios de autoevaluación 5% 0 0 KM06, KM07
Primer examen parcial 30% 2 0,08 CM04, KM06, KM07, SM09, SM11
Proyecto de programación 15% 0 0 CM04, KM06, KM07, SM09, SM10, SM11, SM12
Resolución de problemas 10% 0 0 CM04, KM06, KM07, SM09, SM10, SM11, SM12
Segundo examen parcial 30% 2 0,08 CM04, KM06, KM07, SM09, SM11

La evaluación de la asignatura se basará en tres tipos de actividades:

  • Actividades de evaluación continua
  • Evaluación individual mediante exámenes parciales
  • Proyecto de programación

La nota final de la asignatura se calculará combinando estas tres actividades de la siguiente manera:

Nota Final = (0,25 × Evaluación continua) + (0,15 × Proyecto) + (0,6 × Evaluación individual)

1. Evaluación continua (individual)

Este apartado incluye:

  • Entrega de los ejercicios propuestos en la plataforma Caronte (10%)
  • Resolución y entrega de pequeños problemas durante las sesiones de clase (10%)
  • Cuestionarios de autoevaluación en Caronte, realizados y entregados durante las sesiones de clase (5%)

No se exige una nota mínima en este apartado, pero no se podrán recuperar las actividades cuyo plazo de entrega haya expirado. Se recomienda participar activamente en estas actividades, ya que son clave para asimilar los conocimientos en tiempo real y proporcionan información valiosa al profesorado para adaptar las actividades, profundizando en conceptos que no se hayan comprendido correctamente.

2. Evaluación individual (individual)

Incluye los resultados de las pruebas individuales realizadas durante el curso:

  • Dos pruebas parciales durante el periodo lectivo, en horario de clase
  • Una prueba final durante el periodo oficial de exámenes, solo para estudiantes que no hayan superado alguno de los dos parciales

Si solo se ha suspendido uno de los parciales, la prueba final servirá para recuperar exclusivamente la parte correspondiente.

Para aprobar la asignatura será necesario:

  • Obtener una nota mínima de5 en cada uno de los dos parciales
  • Obtener una nota mínima de 5 en el cálculo global de la evaluación individual

Cálculo de la nota de evaluación individual:

Evaluación individual = (0,5 × Parcial 1) + (0,5 × Parcial 2)

3. Proyecto de programación (en grupo e individual)

Incluye:

  • Evaluación de las dos entregas del proyecto (una parcial a mitad de curso y una final)
  • Seguimiento del proyecto durante el curso
  • Posibilidad de realizar una prueba de validación individual para garantizar la participación de todos los miembros del grupo

Para aprobar el proyecto será necesario:

  • Obtener una nota mínima de 5 en la entrega final
  • Superar la prueba de evaluación individual

Si la nota de la entrega final es igual o superior a 3, se podrá recuperar. En ese caso, la nota máxima que se podrá obtener será un 7.

Evaluación única

El estudiantado que opte por la evaluación única deberá:

  • Entregar, en la fecha indicada, los ejercicios evaluables especificados al inicio del curso
  • Entregar el proyecto de programación
  • Realizar una prueba de evaluación individual que incluirá todo el contenido del curso

Esta prueba constará de dos partes, correspondientes a los dos parciales. Será necesario obtener una nota mínima de 4,5 en cada una para poder aprobar.

Cálculo de la nota final en la evaluación única:

Nota Final = (0,2 × Entrega de problemas en Caronte) + (0,2 × Proyecto) + (0,6 × Evaluación individual)

Las notas mínimas requeridas para aprobar son las mismas que en la evaluación continua. También se aplicará el mismo sistema de recuperación.

 

Casos especiales de notas finales

No evaluable:
Un alumno se considerará no evaluable (NA) si no participa en ninguna de las actividades evaluables de la asignatura.

Suspenso:
En caso de no superar la asignatura porque alguna de las actividades de evaluación no alcanza la nota mínima requerida, la calificación numérica que constará en el expediente será el valor menor entre 4,5 y la media ponderada de las notas.

Matrículas de honor:
La concesión de la calificación de matrícula de honor es una decisión del profesorado responsable de la asignatura. La normativa de la UAB establece que solo se pueden conceder MH a estudiantes que hayan obtenido una calificación final igual o superior a 9,00. Se puede otorgar hasta un 5% de MH sobre el total de estudiantes matriculados. El criterio utilizado para concederlas será la nota final de la asignatura.

Revisión de calificaciones

Para cada actividad de evaluación se indicará el lugar, la fecha y la hora de revisión, durante la cual el estudiante podrá revisar la actividad con el profesorado. En este contexto, se podrán presentar reclamaciones sobre la calificación obtenida, que serán valoradas por el profesorado responsable de la asignatura. Si el estudiante no asiste a la revisión en el momento establecido, no se podrá revisar posteriormente la actividad correspondiente.

Estudiantes repetidores

Esta asignatura no contempla un tratamiento diferenciado para el alumnado repetidor. No se convalidará ningún proyecto de años anteriores, ya que se trata de una asignatura nueva, con un equipo docente y una metodología renovados.

Nota importante: copias y plagios

Sin perjuicio de otras medidas disciplinarias que se consideren oportunas, y de acuerdo con la normativa académica vigente, cualquier irregularidad cometida por un estudiante que pueda afectar a la calificación de una actividad será sancionada con una nota de cero (0). Estas actividades no serán recuperables. Si la actividad en cuestión es necesaria para aprobar la asignatura, esta quedará suspendida automáticamente, sin posibilidad de recuperación durante el mismo curso.

Las irregularidades incluyen, entre otras:

  • Copia total o parcial de una práctica, informe o cualquier otra actividad de evaluación
  • Permitir que otros estudiantes copien
  • Presentar un trabajo en grupo no elaborado íntegramente por los miembros del grupo
  • Presentar como propios materiales elaborados por terceros, incluidas traducciones o adaptaciones
  • Utilizar dispositivos de comunicación (móviles, relojes inteligentes, etc.) durante las pruebas teórico-prácticas
  • Comunicarse con otros estudiantes durante las pruebas
  • Copiar o intentar copiar de otros alumnos
  • Utilizar o intentar utilizar materiales relacionados con la materia durante las pruebas, si no han sido explícitamente autorizados

En estos casos, la nota numérica en el expediente será el valor menor entre 3,0 y la media ponderada de las calificaciones, por lo que no será posible aprobar por compensación.

Para la evaluación de las entregas de problemas y prácticas se utilizarán herramientas de detección de copia de código.

Planificación de las actividades de evaluación

Las fechas de las actividades de evaluación continua y de las entregas de trabajos se publicarán al inicio del curso. Estas fechas pueden estar sujetas a modificaciones por motivos de adaptación a posibles incidencias. Todos los cambios se comunicarán a través de la plataforma Caronte, que se considera el canal habitual de intercambio de información entre profesorado y alumnado.

Uso de la Inteligencia Artificial (IA)

En esta asignatura se permite el uso de tecnologías de IA exclusivamente como apoyo, por ejemplo, para la búsqueda de información, la interpretación de programas, la resolución de dudas, etc. No se permite el uso de IA para la realización de las tareas de programación que deben entregarse como parte de la evaluación.

Cualquier trabajo que incluya fragmentos generados con IA será considerado una falta de honestidad académica y se tratará como una irregularidad según la normativa vigente, pudiendo suponer el suspenso de la asignatura.

Consideraciones adicionales

Las siguientes situaciones deberán gestionarse a través de Gestión Académica de la Escuela de Ingeniería, que informará al estudiante sobre los protocolos y normativas aplicables:

  • Solicitud de traducción del material de evaluación a un idioma distinto del catalán
  • Petición de reprogramación de pruebas de evaluación
  • Solicitud para acogerse a la evaluación única

El profesorado no tiene potestad para tomar decisiones sobre estos aspectos y se limitará a aplicar las resoluciones de los órganos competentes de la Escuela.


Bibliografía

  •  http://www.cplusplus.com/ : The C++ Resources Network
  •  https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C%2B%2B: Programación en C++ - Wikilibros
  •  https://www.sololearn.com/: SoloLearn
  • L. Joyanes, I. Zahonero: Programación en C: metodología, estructura de datos y objetos, Mc Graw-Hill, 2001.
  • B. Eckel. Thinking in C++, Volume 1: Introduction to Standard C++, Prentice-Hall, 1999.
  • B. Eckel. Thinking in C++, Volume 2: Standard Libraries and Advanced Topics, Prentice-Hall, 1999.
  • E. Valveny, R. Benavente, A. Lapedriza, M. Ferrer, J. García: Programació en Llenguatge C. Amb 56 problemes resolts i comentats. Servei publicacions UAB, 2009.
  • L. Joyanes, A. Castillo, L. Sánchez, I. Zahonero: Programación en C: libro de problemas, Mc Graw-Hill, 2002.
  • B.W. Kernighan, D.M. Ritchie: El lenguaje de programación C. 2ª Edición, Prentice Hall, 1986.
  • B.W. Kernighan, R. Pike: La Práctica de la Programación. Pearson Educación, 2000.
  • L. Joyanes Aguilar : Fundamentos de Programación: Algoritmos, Estructuras de Datos y Objetos. 3ª Edición, Mc. Graw-Hill, 2003.
  • J. Guttag. Introduction to Computation and Programming Using Python: With Application to Understanding Data. Second Edition. MIT Press. ISBN-10: 9780262529624.
  • S. Chazallet Python 3. Los fundamentos del lenguaje.  Eni, ISBN-10: 2409006140.
  • Steven F. Lott. Mastering object-oriented Python. Packt publishing, 2014.

Software

Cualquier entorno de desarrollo en C++ y Python (Visual Studio Code)


Grupos e idiomas de la asignatura

La información proporcionada es provisional hasta el 30 de noviembre de 2025. A partir de esta fecha, podrá consultar el idioma de cada grupo a través de este enlace. Para acceder a la información, será necesario introducir el CÓDIGO de la asignatura

Nombre Grupo Idioma Semestre Turno
(PAUL) Prácticas de aula 411 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 412 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 431 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 432 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 451 Catalán/Español segundo cuatrimestre tarde
(PAUL) Prácticas de aula 452 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 471 Catalán/Español segundo cuatrimestre manaña-mixto
(PAUL) Prácticas de aula 472 Catalán/Español segundo cuatrimestre tarde