
Fundamentos de Ingeniería del Software
Código: 102708Créditos: 3
| Titulación | Tipo | Curso |
|---|---|---|
| Ingeniería Electrónica de Telecomunicación | OB | 2 |
| Ingeniería de Sistemas de Telecomunicación | OB | 2 |
Profesor/a de contacto
- Nombre :
- Marc Esteve García
- Correo electrónico :
- marc.esteve.garcia@uab.cat
Idiomas de los grupos
Puede consultar esta información al final del documento.
Prerrequisitos
No es necesario saber nada de programación.
Objetivos
El objetivo de la asignatura es introducir al alumnado en los fundamentos de la ingeniería del software, con especial énfasis en el análisis y el diseño orientados a objetos, así como en la resolución de problemas mediante algoritmos y programación estructurada en Python. La asignatura pretende desarrollar la capacidad de modelizar, implementar y validar soluciones informáticas sencillas, fomentando al mismo tiempo las buenas prácticas de programación y la autonomía en la resolución de problemas.
Resultados de aprendizaje
Ingeniería Electrónica de Telecomunicación
- KU098 (Distinguir los patrones de programación básicos.) Distinguir los patrones de programación básicos.
- SU105 (Utilizar los fundamentos teóricos de la programación y de los lenguajes de programación para el desarrollo de sistemas software. Entender la arquitectura básica del computador, sus unidades funcionales y sus fundamentos teóricos de programación.) Utilizar los fundamentos teóricos de la programación y de los lenguajes de programación para el desarrollo de sistemas software. Entender la arquitectura básica del computador, sus unidades funcionales y sus fundamentos teóricos de programación.
- SU106 (Utilizar los fundamentos de la programación en redes, sistemas y servicios de telecomunicación.) Utilizar los fundamentos de la programación en redes, sistemas y servicios de telecomunicación.
- SU107 (Diseñar e implementar bases de datos en el desarrollo de aplicaciones software y, en concreto, aplicadas a sistemas de la información.) Diseñar e implementar bases de datos en el desarrollo de aplicaciones software y, en concreto, aplicadas a sistemas de la información.
Ingeniería de Sistemas de Telecomunicación
- KU098 (Distinguir los patrones de programación básicos.) Distinguir los patrones de programación básicos.
- SU105 (Utilizar los fundamentos teóricos de la programación y de los lenguajes de programación para el desarrollo de sistemas software. Entender la arquitectura básica del computador, sus unidades funcionales y sus fundamentos teóricos de programación.) Utilizar los fundamentos teóricos de la programación y de los lenguajes de programación para el desarrollo de sistemas software. Entender la arquitectura básica del computador, sus unidades funcionales y sus fundamentos teóricos de programación.
- SU106 (Utilizar los fundamentos de la programación en redes, sistemas y servicios de telecomunicación.) Utilizar los fundamentos de la programación en redes, sistemas y servicios de telecomunicación.
- SU107 (Diseñar e implementar bases de datos en el desarrollo de aplicaciones software y, en concreto, aplicadas a sistemas de la información.) Diseñar e implementar bases de datos en el desarrollo de aplicaciones software y, en concreto, aplicadas a sistemas de la información.
Contenidos
- Introducción a la programación y a los paradigmas básicos del desarrollo de software.
- Patrones de programación y estructuras de control fundamentales.
- Fundamentos teóricos de la programación y de los lenguajes de programación.
- Arquitectura básica del computador y unidades funcionales.
- Programación aplicada a sistemas, redes y servicios de telecomunicación.
- Conceptos básicos de bases de datos e introducción al diseño y la implementación de aplicaciones con persistencia de datos.
- Resolución de problemas mediante técnicas de programación estructurada y modular.
- Desarrollo de ejemplos prácticos y casos aplicados al ámbito de las telecomunicaciones.
Actividades formativas y Metodología
| Título | Horas | ECTS | Resultados de aprendizaje |
|---|---|---|---|
| Clases teóricas, resolución de problemas y prácticas de laboratorio | 30 | 1,2 | KU098, SU105, SU106, SU107 |
| Estudio, resolución de ejercicios y desarrollo de prácticas | 23 | 0,92 | KU098, SU105, SU106, SU107 |
| Desarrollo supervisado de ejercicios y proyectos | 22 | 0,88 | KU098, SU105, SU106, SU107 |
- Actividades dirigidas: horas presenciales de clase y laboratorio.
- Actividades supervisadas: tutorías y seguimiento académico.
- Actividades autónomas: el resto de las horas necesarias hasta completar la carga total de la asignatura.
Evaluación
Actividades de evaluación continuada
| Título | Peso | Horas | ECTS | Resultados de aprendizaje |
|---|---|---|---|---|
| Práctica individual de programación | 15% | 0 | 0 | KU098, SU105, SU106, SU107 |
| Proyecto integrador de programación en Python | 35% | 0 | 0 | KU098, SU105, SU106, SU107 |
| Prueba individual 1 | 25% | 0 | 0 | KU098, SU105 |
| Prueba individual 2 | 25% | 0 | 0 | KU098, SU105, SU106, SU107 |
La evaluación de la asignatura se llevará a cabo de forma continua a partir de diferentes evidencias de aprendizaje, combinando pruebas individuales, actividades prácticas y el desarrollo de un proyecto integrador en Python.
Las actividades de evaluación son las siguientes:
Prueba individual 1: prueba teórico-práctica sobre los primeros contenidos de la asignatura. Representa el 25 % de la calificación final.
Prueba individual 2: prueba teórico-práctica de carácter integrador sobre los contenidos trabajados durante el curso. Representa el 25 % de la calificación final.
Práctica individual de programación: resolución, implementación y validación de un ejercicio de programación en Python. Representa el 15 % de la calificación final.
Proyecto integrador de programación en Python: desarrollo de una aplicación sencilla que integre los principales contenidos de la asignatura, como la programación estructurada y modular, la programación orientada a objetos, la persistencia de datos, el tratamiento de errores, las pruebas y la documentación del código. Representa el 35 % de la calificación final.
La calificación final se calculará mediante la siguiente expresión:
Nota final = 0,25 × Prueba 1 + 0,25 × Prueba 2 + 0,15 × Práctica individual + 0,35 × Proyecto integrador
Para superar la asignatura será necesario obtener una calificación final igual o superior a 5 sobre 10. También será necesario obtener una media mínima de 4 sobre 10 en el conjunto de las dos pruebas individuales. En caso de que no se cumpla esta condición, la calificación final máxima de la asignatura será de 4,7.
La práctica individual y el proyecto podrán incluir diferentes fases, entregas parciales o actividades de validación. El profesorado podrá solicitar una explicación, una breve defensa oral o una modificación del código para comprobar su autoría y el grado de comprensión. Las actividades no entregadas dentro del plazo establecido se calificarán con un cero, excepto en casos debidamente justificados.
Las pruebas individuales se podrán recuperar mediante una prueba de recuperación. La calificación obtenida sustituirá a la nota de la prueba correspondiente. La práctica individual y el proyecto integrador no serán recuperables, ya que se desarrollan y se evalúan progresivamente durante el curso.
El calendario de las actividades, los plazos de entrega y las fechas de las pruebas se publicarán en el Campus Virtual. Para cada actividad de evaluación se indicarán el procedimiento y el periodo de revisión de la calificación.
Cualquier irregularidad que pueda alterar la calificación de una actividad, como la copia, el plagio, la suplantación de identidad o el uso no autorizado de herramientas de inteligencia artificial, comportará la aplicación de las medidas previstas en la normativa académica de la UAB. Cuando el uso de estas herramientas esté permitido, el alumnado deberá declararlo y ser capaz de justificar y defender el trabajo presentado.
Bibliografía
- Think Python: How to Think Like a Computer Scientist — Allen B. Downey (allendowney.github.io)
- Python Crash Course, 3rd Edition — Eric Matthes (nostarch.com)
- Python for Everybody — Charles R. Severance (py4e.com)
- The Python Tutorial — Python Software Foundation (Python documentation)
- Software Engineering at Google — Titus Winters, Tom Manshreck i Hyrum Wright (abseil.io)
Software
- Visual Studio Code
- Python
- Jupyter
- Github
- Navegador
Grupos e idiomas de la asignatura
La información proporcionada es provisional hasta el 30 de noviembre. 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
| Tipo de docencia | Grupo | Idioma | Semestre | Turno |
|---|---|---|---|---|
| (TE) Teoría | 31 | Catalán/Español | primer cuatrimestre | manaña-mixto |
| (PAUL) Prácticas de aula | 311 | Catalán/Español | primer cuatrimestre | manaña-mixto |
| (PLAB) Prácticas de laboratorio | 311 | Catalán/Español | primer cuatrimestre | manaña-mixto |
| (PAUL) Prácticas de aula | 312 | Catalán/Español | primer cuatrimestre | manaña-mixto |
| (PLAB) Prácticas de laboratorio | 312 | Catalán/Español | primer cuatrimestre | manaña-mixto |