Última actualización: 25/04/2019


Curso Académico: 2019/2020

Arquitectura de Sistemas
(14072)
Titulación: Grado en Ingeniería de Sonido e Imagen (214)


Coordinador/a: IBAÑEZ ESPIGA, MARIA BLANCA

Departamento asignado a la asignatura: Departamento de Ingeniería Telemática

Tipo: Obligatoria
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:

Rama de Conocimiento: Ingeniería y Arquitectura



Materias que se recomienda haber superado
Programación y Programación de sistemas
Competencias que adquiere el estudiante y resultados del aprendizaje.Más información en este enlace
1. El estudiante debe ser capaz de diseñar un sistema software utilizando el lenguaje de programación C con ciertas nociones de concurrencia. El sistema debe contener estructuras de datos no triviales, gestión dinámica de memoria y utilizar técnicas de ingeniería para traducir un conjunto de restricciones de alto nivel, derivadas de un hipotético escenario industrial, en una aplicación robusta. 2. El estudiante debe ser capaz de utilizar con soltura las siguientes herramientas utilizadas en entornos industriales: un compilador con las opciones para generar diferentes versiones para depuración y analizar los mensajes que se obtienen mientras se desarrolla una aplicación, un entorno de desarrollo integrado para implementar el sistema software, un programa de control de versiones para manejar los flujos de desarrollo, un compilador cruzado para crear versiones de una aplicación, y herramientas de análisis del comportamiento de memoria en una aplicación. 3. El estudiante debe ser capaz de: trabajar de forma efectiva en un equipo en la ejecución de un proyecto consistente en el diseño de una aplicación software para un dispositivo móvil, generar ideas de forma colaborativa en un equipo y optimizar su rendimiento para cumplir con los requisitos del proyecto, y dividir las tareas de forma efectiva entre los miembros del equipo. 4. El estudiante debe ser capaz de: aprender de forma autónoma, manipular las diferentes fuentes de información, generar información concisa sobre las tareas conseguidas, manejar el tiempo de trabajo personal, y presentar de forma efectiva los resultados derivados de su trabajo.
Descripción de contenidos: Programa
El programa está dividido en los siguientes bloques: 1. El lenguaje de programación C 1.1. Estructuras de datos básicas y construcciones de flujo 1.2. Estructura de una aplicación C. 1.3. El pre-procesador, división de ficheros, y creación de ejecutables 1.4. Manipulación de punteros. 2. Gestión de memoria dinámica en C 2.1. Estructuras de datos dinámicas 2.2. Fugas de memoria 2.3. Herramientas para detectar fugas de memoria 3. Arquitectura de la plataforma Linux 3.1. Kernel, procesos y sistema de ficheros. 3.2. Principales bibliotecas 3.3. Concurrencia 4. Diseño del proyecto mediante trabajo en equipo 4.1. Resolución de conflictos 4.2. Desarrollo del proyecto
Actividades formativas, metodología a utilizar y régimen de tutorías
Las actividades utilizadas para verificar las competencias y destrezas en el curso son (seguidas por la referencia a los objetivos del programa): - Ejercicios sobre los siguientes temas: diseño de las estructuras de datos más apropiadas para una funcionalidad en una aplicación móvil, escribir fragmentos de código para manipular estructuras de datos, lectura/escritura de campos de las estructuras, datos sobre los procesos, etc; calculo de la cantidad de memoria ocupada por diferentes estructuras de datos (OP: a). - Durante las sesiones de laboratorio se escriben, compilan, enlazan y ejecutan fragmentos de código con las diferentes opciones del compilador para incluir información de depuración, definir constantes, etc. Se analiza la corrección de estos fragmentos de código con el depurador (OP: b). - Durante las sesiones de laboratorio se escriben fragmentos de código para crear, destruir y manipular estructuras de datos utilizando memoria dinámica. Los estudiantes también dividen la funcionalidad del programa requerido entre múltiples funciones de las que escriben su código (OP: c). - Durante un período de ocho semanas, los estudiantes se dividen en equipos de cuatro o cinco miembros que deben ejecutar un proyecto consistente en el diseño de una aplicación software con múltiples hitos, entregables y objetivos (OP: d). - Escribir el acta detallada de las reuniones del equipo con las acciones propuestas y las conclusiones obtenidas. Intercambiar información con los miembros del equipo utilizando chats, foros, email. Explicar los requisitos derivados de las especificaciones de trabajo en un tema (OP: g). - Búsqueda de documentos auxiliares para completar la información que se estudia en un tema. En su informe final, deben mencionar las fuentes de información utilizadas (OP: i). - Uso de las siguientes herramientas: máquinas virtuales, compilador, entorno de desarrollo integrado, controlador de versiones y emulador en las sesiones de laboratorio (OP: k). Durante estas actividades la plantilla docente revisa el trabajo de los estudiantes en la clase, supervisa las sesiones de laboratorio, responde a las preguntas en el foro del curso, mantiene una hora de tutoría semanal en el despacho y convoca tutorías con múltiples alumnos cuando lo considera oportuno.
Sistema de evaluación
  • Peso porcentual del Examen Final 40
  • Peso porcentual del resto de la evaluación 60
Bibliografía básica
  • Félix García Carballeira. El lenguaje de programación C : diseño e implementación de programas. Prentice Hall.
  • Félix García Carballeira. Problemas resueltos de programación en lenguaje C. Tomson Paraninfo.
Bibliografía complementaria
  • Varios autores. Maemo Diablo Training Material (http://maemo.org/development/training/). .

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