GRADO EN INGENIERÍA DE LA SALUD FUNDAMENTOS DE PROGRAMACIÓN 1. Coordinadores Juan Falgueras Cano (Universidad de Málaga) José C. Riquelme Santos (Universidad de Sevilla) 2. Objetivos del programa de la asignatura: Los objetivos de la asignatura consisten en la adquisición de las siguientes capacidades. A) Generales Capacidad para diseñar sistemas, dispositivos y procesos para su uso en aplicaciones médicas, de atención sanitaria o biológicas. Capacidad para identificar, formular y resolver problemas dentro de contextos amplios y multidisciplinares en los campos de la ingeniería y las ciencias de la salud, mediante la integración de conocimientos y la participación en equipos multidisciplinares. Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para comunicar y transmitir los conocimientos y conclusiones en el ámbito de la ingeniería de la salud, a público especializado y no especializado, de un modo claro y preciso. B) Específicos Capacidad para comprender y dominar los conceptos básicos de la algorítmica y los lenguajes de programación, y su aplicación para la resolución de problemas propios de la ingeniería. Capacidad para desarrollar programas robustos. 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. 3. Contenido: A) Boques temáticos I. Conceptos básicos II. Estructuras de control III. Subprogramas IV. Tratamientos iterativos sobre arrays V. Registros, cadenas y ficheros de texto VI. Introducción a la programación orientada a objetos (OO) VII. Diseño de tipos en Java
B) Temas I. Conceptos básicos 1. Conceptos básicos 1.1 Presentación de la asignatura. Conceptos de informática 1.2 Sistema operativo, compiladores 1.3 Algoritmo 1.4 Estructura de un programa C 1.5 Tipos simples, variables, constantes y enumerados 1.6 Expresiones, prioridad de operadores y conversión de tipos 1.7 Codificación de datos, entrada/salida II. Estructuras de control 2. Estructuras de control 2.1 Arrays, definición, creación y acceso 2.2 Estructuras de decisión if; if-else; switch; if anidados Ejemplos de estructuras de selección 2.3 Estructuras iterativas, while, do-while, for Ejemplos de algoritmos iterativos III. Subprogramas 3. Subprogramas 3.1 Diseño estructurado y modular 3.2 Declaración de subprogramas y su interfaz 3.3 Precondiciones y postcondiciones de algoritmos 3.4 Ámbitos de visibilidad 3.5 Tipos de parámetro (in, out e in-out) en C/C++ 3.6 Punteros 3.7 Ejemplos y ejercicios de subprogramación IV. Tratamientos iterativos sobre arrays 4. Tratamientos iterativos sobre arrays 4.1 Arrays y subprogramas 4.2 Esquemas existe, paratodo, contador, suma 4.3 Operaciones básicas con arrays unidimensionales: búsqueda y ordenación V. Registros, cadenas y ficheros de texto 5. Cadenas de caracteres, estructuras y ficheros 5.1 Estructuras o registros 5.2 Subprogramas y estructuras 5.3 Ejercicios con estructuras 5.4 Cadenas. Operaciones básicas 5.5 Tipos y gestión de ficheros 5.6 Uso de ficheros de texto VI. VII. Introducción a la programación orientada a objetos (OO) 6. Conceptos de POO Interfaz, clase, objeto Atributos y métodos Paquete Tipos básicos y envoltura en Java Variables, constantes y expresiones (diferencias con C) Diseño de tipos en Java 7. Tipos y expresiones en Java Concepto de identidad e igualdad Tipos inmutables Tipo genérico 8. Diseño de tipos Propiedades de un tipo (simples, derivadas, individuales, compartidas, modificables, ) Concepto de Object Métodos equals, tostring, compareto, hashcode, clone 9. Arrays, String, List y Set en Java
4. Competencias referidas a cada contenido. Tal y como se establece en la materia Informática del módulo de Formación básica de la memoria VERIFICA, las competencias de esta asignatura deben perseguir las siguientes competencias del título: COMPETENCIAS GENERALES CG04 Capacidad para diseñar sistemas, dispositivos y procesos para su uso en aplicaciones médicas, de atención sanitaria o biológicas. CG06 Capacidad para identificar, formular y resolver problemas dentro de contextos amplios y multidisciplinares en los campos de la ingeniería y las ciencias de la salud, mediante la integración de conocimientos y la participación en equipos multidisciplinares. CG08 Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. CG10 Capacidad para comunicar y transmitir los conocimientos y conclusiones en el ámbito de la ingeniería de la salud, a público especializado y no especializado, de un modo claro y preciso. COMPETENCIAS ESPECÍFICAS CB03 Capacidad para comprender y dominar los conceptos básicos de la algorítmica y los lenguajes de programación, y su aplicación para la resolución de problemas propios de la ingeniería. CB04 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. Puede observarse que las competencias de la asignatura, descritas en los objetivos de la misma, persiguen la adquisición de las competencias del título anteriores. Para ello, las competencias específicas de la asignatura se concretan en los siguientes resultados de aprendizaje, todos ellos relacionados con las competencias específicas: RA01 Diseño de programas mediante entornos de desarrollo adecuados en cualquier plataforma RA02 Utilizar entornos y herramientas de desarrollo con los que implementar los algoritmos diseñados con un lenguaje de programación concreto. RA03 Inclusión de elementos lógicos e inteligentes en el comportamiento de los programas RA04 Identificar, localizar y corregir los errores que puedan aparecer en las soluciones obtenidas para los problemas planteados. RA05 Implementar, probar y depurar programas en un lenguaje orientado a objetos RA06 Organización del código en funciones específicas reutilizables con objetivos claros RA07 Construcción de estructuras de datos iterativas RA08 Análisis y uso de información soportada en cadenas de caracteres, estructuras y ficheros
Bloque Tema RA01 RA02 RA03 RA04 RA05 RA06 RA07 RA08 I 1 X X II 2 X X III 3 X X X IV 4 X X X X V 5 X X X X X VI 6 X X X X X X X 7 X X X X VII 8 X X X X X 9 X X X X X X 5. Bibliografía (autor, título) y recursos para el seguimiento de la asignatura. Bibliografía básica: Savitch, Walter. Resolución de problemas con C++. Pearson Educación, 5a Edición 2007. Joyanes Aguilar, Luis. Programación en C++. Algoritmos, estructuras de datos y objetos. McGraw Hill, 2a Edición 2006 F. Durán, F. Gutiérrez y E. Pimentel. Programación Orientada a Objetos con Java Thomson, 2007. K. Arnold, J. Gosling y D. Holmes. El lenguaje de programación Java. Addison-Wesley, 2001. Bibliografía complementaria: Deitel and Deitel. Cómo programar en C++. Prentice-Hall Frank M. Carrano, Janet J. Pri. Walls and Mirrors. Data abstraction and problem solving with C++. 4th Ed. Addison-Wesley 6. Evaluación: Sistema de evaluación y calificación. La evaluación de las competencias asociadas a la asignatura se establecerá mediante la entrega de las prácticas que se planteen en las sesiones de laboratorio durante el desarrollo del curso, la realización de, al menos, una prueba parcial práctica y la realización de un examen final. Para poder superar la asignatura, se deberán entregar las prácticas que se planteen a lo largo del curso y alcanzar la valoración mínima que se establezca en la prueba final. La ponderación de la evaluación intermedia podrá suponer hasta un 30% de la calificación final, para la que se tendrán en cuenta las prácticas entregadas y la valoración obtenida en las pruebas. 7. Metodología docente. La metodología de trabajo girará en torno a los siguientes bloques de actividades formativas: Clases magistrales de introducción y desarrollo de la teoría que compone la asignatura Clases prácticas en pizarra sobre realización de problemas y ejercicios Desarrollo de prácticas en laboratorio Trabajos en grupo o individuales Tutorías en grupo e individuales Estudio autónomo del alumno de los contenidos teóricos y prácticos de la asignatura En las clases de teoría el alumno irá conociendo los diferentes conceptos de la asignatura, que serán llevados a la práctica tanto en las clases de problemas en pizarra como en las clases de prácticas en laboratorio, con la utilización del lenguaje de programación C++ y Java en el
Bloque Tema Grupo Grande Grupo Reducido Total entorno de desarrollo. Para las clases de laboratorio se formarán grupos reducidos de alumnos con objeto de conseguir una interacción profesor-alumno más estrecha. Por otro lado, el alumno debe afianzar todos los conocimientos y prácticas adquiridos en las clases presenciales mediante el estudio y la resolución de problemas de forma autónoma. Las clases magistrales de teoría se desarrollarán en la modalidad de grupo grande, y supondrán una dedicación de 24 horas para cada estudiante. La resolución de problemas en pizarra y el desarrollo de prácticas de laboratorio se realizarán principalmente en grupos reducidos, aunque en algunos casos, se impartirán en grupo grande. La estimación es que cada estudiante desarrollará esta actividad durante 30 horas en grupo reducido y 6 horas en grupo grande. Teniendo en cuenta que las actividades de evaluación pueden suponer un total de 10 horas, las tutorías y el trabajo autónomo del estudiante supondrán una dedicación adicional de 80 horas. Se pondrá especial atención a que la distribución de los contenidos y la propuesta de ejercicios y prácticas permita una dedicación equilibrada del estudiante, de forma que en cada semana, éste dedique 4 horas a actividades presenciales y alrededor de 6 horas en trabajo autónomo y tutorías. 8. Actividades programadas. Las actividades formativas con carácter presencial se distribuyen en clases magistrales de teoría, clases de problemas, clases prácticas en laboratorio, entregas de prácticas y pruebas de evaluación. La planificación temporal de los dos últimos tipos de actividad se desprende del apartado 11. Para el resto de actividades presenciales, la siguiente tabla muestra la dedicación por temas I 1 2 4 6 II 2 2 2 4 III 3 2 2 4 IV 4 4 4 8 V 5 4 4 8 VI 6 2 3 5 7 2 3 5 VII 8 2 3 5 9 2 3 5 Otras 8 2 10 30 30 60 9. Grupos para realizar las actividades docentes (número de Grupo Grande y de Grupo Reducido, y horas impartidas en cada grupo). 1 Grupo Grande (30 horas presenciales para cada estudiante) 2 Grupos Reducidos (30 horas presenciales para cada estudiante) 10. Horarios de realización de las actividades docentes (para cada grupo) 10.1 Universidad de Málaga El horario para la realización de actividades docentes se corresponde con el establecido por la E.T.S. Ingeniería Informática de la Universidad de Málaga: lunes de 10:45 a 12:30, martes de 12:45 a 14:30 y miércoles de 8:45 a 10:30. Prioritariamente, la sesión de los lunes se corresponderá con los grupos grandes (clases de teoría y problemas), y las sesiones de martes y miércoles se dedicarán a prácticas en grupos reducidos. No obstante, por necesidades de organización docente, esta distribución puede ofrecer algunas modificaciones. Al comienzo de
la asignatura, se informará a los estudiantes de la planificación semanal detallada, siempre de acuerdo al horario establecido por el centro responsable de las enseñanzas. 10.2 Universidad de Sevilla El horario para la realización de actividades docentes se corresponde con el establecido por la E.T.S. Ingeniería Informática de la Universidad de Sevilla: miércoles de 8:30 a 10:30 y viernes de 10:30 a 12:30. Prioritariamente, la sesión de los miércoles se corresponderá con los grupos pequeños (clases de problemas y laboratorio), y las sesiones de los viernes se dedicarán a los grupos grandes (básicamente teoría). No obstante, por necesidades de organización docente, esta distribución puede ofrecer algunas modificaciones. Al comienzo de la asignatura, se informará a los estudiantes de la planificación semanal detallada, siempre de acuerdo al horario establecido por el centro responsable de las enseñanzas. 11. Fechas de evaluación (exámenes y/o pruebas). La evaluación se realizará mediante la entrega de prácticas, la realización de una actividad específica de evaluación y un examen final. Las fechas, de acuerdo con la organización docente establecida por los centros de la Universidad de Málaga y de Sevilla son las siguientes: Entrega de prácticas: Al finalizar cada sesión de laboratorio, los estudiantes deberán entregar, a través del campus virtual, la solución a la que se haya llegado de la práctica propuesta. El estudiante tendrá oportunidad de volver a entregar una solución más elaborada de la práctica antes de la siguiente sesión. Examen de febrero (primera convocatoria ordinaria): 10 de febrero de 2012, 9:30 Examen de septiembre (segunda convocatoria ordinaria): 13 de septiembre de 2012, 9:30 12. Firma de actas. Juan Falgueras Cano (Universidad de Málaga) José C. Riquelme Santos (Universidad de Sevilla) 13. Calendario, horarios y lugares de realización de pruebas y/o exámenes para la evaluación (en coordinación con los centros responsables de la organización de las titulaciones). Examen de febrero (primera convocatoria ordinaria): 10 de febrero de 2012 (laboratorios del Departamento de Lenguajes y Ciencias de la Computación de la UMA y por determinar en la US) Examen de septiembre (segunda convocatoria ordinaria): 13 de septiembre de 2012 (laboratorios del Departamento de Lenguajes y Ciencias de la Computación de la UMA y por determinar en la US) 14. Actividades de movilidad. No se ha programado ninguna.