Última actualización: 27/07/2020


Curso Académico: 2020/2021

Desarrollo de software de sistemas
(15990)
Grado en Ingeniería Informática (Plan 2018) (Plan: 431 - Estudio: 218)


Coordinador/a: EXPOSITO SINGH, DAVID

Departamento asignado a la asignatura: Departamento de Informática

Tipo: Optativa
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Sistemas Operativos Diseño de Sistemas Operativos Arquitectura de Computadores
El objetivo de este curso es presentar a los alumnos distintos tópicos relacionados con el dominio de desarrollo de software de sistemas. Estos son, el lenguaje de programación C++, los servicios existentes en el sistema operativo Linux/UNIX y distintas herramientas de desarrollo, monitorización y análisis de rendimiento del software de sistemas. El objetivo de la asignatura es que el alumno desarrolle software que explote de manera eficiente. Para lograr este objetivo el alumno debe adquirir una serie de competencias genéricas, conocimientos, capacidades y actitudes. 1. Competencias Genéricas: - Capacidad de análisis y síntesis (PO a, c, e) - Capacidad de organización y planificación (PO c, d) - Resolución de problemas (PO c, g) - Trabajo en equipo (PO d) - Capacidad de aplicar los conceptos teóricos (PO a, c) 2. Competencias Específicas: a. Cognitivas (PO a, c, e) - Capacidad para diseñar software de sistemas - Capacidad para implementar software de sistemas - Conocimiento de técnicas de entrada/salida - Conocimiento de programación concurrente - Empleo de servicios ofrecidos por los sistemas operativos b. Procedimentales/Instrumentales (PO a, c, g, k) - Resolver problemas de concurrencia. - Desarrollar software de bajo nivel para sistemas. c. Actitudinales (PO: c, e) - Creatividad - Visión crítica del desarrollo se software de sistemas - Proactividad - Interés por adquirir nuevos conocimientos e información 3.- Competencias Generales y Trasversales - Utilizar de forma eficiente medios TIC para redactar informes técnicos y memorias de proyectos y trabajos sobre Informática, así como presentaciones de calidad (CG9) - Conocimientos básicos sobre el uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería (CGB4) 4.- Competencias Comunes a la Rama de Informática - Conocimiento de las características, funcionalidades y estructura de los Sistemas Operativos y diseñar e implementar aplicaciones basadas en sus servicios (CECRI10) 5.- Competencias Específicas para la Mención de Ingeniería de Computadores - Capacidad de diseñar e implementar software de sistema y de comunicaciones (CEIC4)
Descripción de contenidos: Programa
Asignatura no impartida este curso académico T1. Introducción a la programación de sistemas 1.1. Qué es el software de sistemas 1.2. Historia de los lenguajes de programación T2. Lenguajes de programación de sistemas: C++ 2.1 Objetos, tipos y valores 2.2 Clases y herencia. Sobrecarga de operadores 2.3 Contenedores, arrays y Free store 2.4 Operaciones de copia y movimiento 2.5 Plantillas, excepciones y gestión de recursos 2.6 Metaprogramación 2.7 STL, objetos función y expresiones Lambda 2.8 C++11 y C++14 T3. Concurrencia en C++ 3.1 Concurrencia basada en hilos 3.2 Concurrencia basada en tareas T4. Gestión y optimización de la memoria 4.1 Control de errores y depuración 4.2 Memoria compartida 4.3 Mapeos de memoria T5. Entrada/salida 5.1 E/S vectorizada 5.2 E/S asíncrona 5.3 Buffering de E/S T6. Señales y temporizadores 6.1 Multiplexación de E/S 6.2 E/S basada en señales 6.3 Funciones no reentrantes y goto no local T7. Gestión de bibliotecas y utilidades 7.1 Bibliotecas estáticas y compartidas 7.2 Bibliotecas dinámicas T8. Monitorización y análisis de prestaciones 8.1 Métricas de rendimiento 8.2 Herramientas de evaluación de rendimiento 8.3 Herramientas de monitorización de Linux
Actividades formativas, metodología a utilizar y régimen de tutorías
1. Clases magistrales de teoría 1 ECTS (PO a, c, e) - Presentación de los conceptos teóricos de la asignatura - Para facilitar su desarrollo los alumnos tendrán textos básicos de referencia de teoría y de problemas que les permitirán completar y profundizar en aquellos temas en los cuales estén más interesados. 2. Proyectos 1.5 ECTS (PO a, c, d, e, g, k) - Se desarrollarán varios proyectos durante el curso. Parte de los mismos se harán en laboratorios con apoyo del profesor. - Los estudiantes tienen que analizar los requisitos y ofrecer una solución correcta - Los proyectos se harán en grupos de 2 estudiantes para promover el trabajo en equipo 3. Resolución de ejercicios por parte del profesor 1 ECTS (PO a, c, e) - Solución de ejercicios en clase con participación de los alumnos 4. Trabajo del alumno 2 ECTS. (PO a, c, e, k) - Estudio para comprender los conceptos teóricos - Resolución de los ejercicios propuestos 5. Exámenes 0.5 ECTS (PO a, c, e, g) - Examen final
Sistema de evaluación
  • Peso porcentual del Examen Final 40
  • Peso porcentual del resto de la evaluación 60

Bibliografía básica
  • A. Hoover. System Programming with C and Unix. Pearson. 2009
  • Bjarne Stroustrup. Programming: Principles and Practice using C++. Addison-Wesley. 2009
  • Michael Kerrisk. The Linux Programming Interface. A Linux and UNIX System Programming Handbook. William Polock. 2010
Recursos electrónicosRecursos Electrónicos *
Bibliografía complementaria
  • Bjarne Stroustrup. The C++ Programming Language. Addison-Wesley. 2013
  • G. R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley. 1999
  • L. L. Beck. System Software: An Introduction to Systems Programming. Pearson . 1996
  • M. Barr. Programming Embedded Systems in C and C++. O'Reilly Media. 1999
  • Nicolai M. Josuttis. The C++ Standard Library. Addison-Wesley. 2012
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


El programa de la asignatura podría sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.


Dirección web para más información: https://www.uc3m.es/ss/Satellite/Grado/es/Detalle/Estudio_C/1371212562160/1371212987094/Grado_en_Ingenieria_Informatica