Download FUNDAMENTOS DE LA PROGRAMACIÓN Grado en Sistemas de
Document related concepts
Transcript
FUNDAMENTOS DE LA PROGRAMACIÓN Grado en Sistemas de Información Universidad de Alcalá Curso Académico 2010/11 Curso 1º – Cuatrimestre 1º GUÍA DOCENTE Nombre de la asignatura: Código: Titulación en la que se imparte: Departamento y Área de Conocimiento: FUNDAMENTOS DE LA PROGRAMACION 780003 SI CIENCIAS DE LA COMPUTACION Carácter: Créditos ECTS: FORMACION BASICA 6 Curso: 1º Profesorado: Horario de Tutoría: Idioma en el que se imparte: Español 1. PRESENTACIÓN La asignatura Fundamentos de la Programación pretende introducir a los alumnos en las técnicas de resolución de problemas, de tipo general, mediante el empleo de la programación estructurada así como la comprensión de la teoría subyacente al procesado de lenguajes de programación. Prerrequisitos y Recomendaciones Debido a que la asignatura constituye el primer contacto con la programación, no se necesita ningún conocimiento previo sobre el tema. Es recomendable haber cursado matemáticas en Bachillerato. 2. COMPETENCIAS Esta asignatura, y de forma más amplia la materia de la que forma parte, desarrolla en el alumno las siguientes competencias: Competencias de la materia 1. Conocer el concepto de dato como representación y medida de elementos del mundo real. 2. Conocer y exponer la estructura física y lógica de datos que representan números, caracteres, registros, ficheros. 3. Conocer los conceptos de clase, tipo abstracto de datos y objeto. 4. Conocer los fundamentos de la orientación a objetos y ser capaz identificar las diferencias entre la representación basada en objetos y los modelos de flujo de datos. 5. Desarrollar la habilidad de crear soluciones algorítmicas a problemas y ser capaz de representarla como programa u objetos. 6. Conocer la estrategia de implementación descendente (topdown). 7. Ser capaz de realizar una implementación mediante objetos 8. Conocer el diseño modular y los conceptos cohesión y acoplamiento. 9. Alcanzar una visión de sistema de la verificación y validación. 10. Conocer entornos de programación, herramientas de desarrollo y entornos gráficos de desarrollo, variados 11. Conocer los conceptos y técnicas de la manipulación de ficheros mediante ejemplos simples. 12. Conocer los conceptos de las estructuras abstractas de datos y su uso en programas y aplicaciones. 13. Conocer técnicas de desarrollo, diseño, prueba y depuración aplicadas a problemas. 14. Conocer las capacidades y limitaciones de los lenguajes de programación más comunes. 15. Comprender los conceptos relacionados con la complejidad de los algoritmos, relacionados determinadas estructuras de datos y saber estimar esa complejidad y contrastar las propiedades de diferentes estructuras. Competencias genéricas: Desarrollar aptitudes para la comunicación oral y escrita Desarrollar capacidad de análisis y síntesis Desarrollar capacidad para la toma de decisiones Desarrollar métodos para la autoorganización y planificación del trabajo individual. Desarrollar métodos para el trabajo en equipo. Motivación por la calidad Competencias específicas: Conocer y exponer la estructura física y lógica de datos que representan números, caracteres, registros, ficheros. Desarrollar la habilidad de crear soluciones algorítmicas a problemas y ser capaz de representarla como programa. Conocer el concepto de dato como representación y medida de elementos del mundo real. Conocer la estrategia de implementación descendente (top-down). Conocer el diseño modular y los conceptos cohesión y acoplamiento. Alcanzar una visión de sistema de la verificación y validación. Conocer entornos de programación, herramientas de desarrollo. Conocer técnicas de desarrollo, diseño, prueba y depuración aplicadas a problemas. Conocer las capacidades y limitaciones de los lenguajes de programación más comunes. Describir la evolución de los lenguajes de programación los diferentes paradigmas disponibles hoy día y sus principales características. Describir las distintas fases y algoritmos utilizados en la traducción y generación de código desde el programa fuente al ejecutable, incluidas las consideraciones en la traducción de código dependiente e independiente de la máquina. Introducir los conceptos de optimización de código, incluyendo las distintas posibilidades en la elección de código intermedio y fases de optimización. Introducir los conceptos de tipos, ámbito y su comprobación (compatibilidad), en el procesamiento de lenguajes de programación. Comprender el concepto de tipo de dato y ser capaz de identificar las características principales de un sistema de tipos. 3. CONTENIDOS Fundamentos de programación: Introducción, sintaxis y semántica de los lenguajes de programación de alto nivel; variables, tipos, expresiones y asignaciones; I/O básica; estructuras de control iterativas y condicionadas; funciones y paso de parámetros; descomposición estructurada. Estructuras de datos fundamentales: Representación máquina de datos (bits, bytes y palabras; representación de datos numéricos y bases; representación de cadenas de caracteres); tipos primitivos; vectores; cadenas y procesado de cadenas. Registros Metodología del desarrollo del Software y Algoritmos y resolución de problemas: diseño estructurado; testeo; estrategias de resolución de problemas; el papel de los algoritmos en el proceso de resolución de problemas; implementación de estrategias para algoritmos; depuración de código; el concepto y las propiedades de los algoritmos. Recursión: concepto de recursión; clasificación de la recursión: transformación de algoritmos recursivos; ejemplos clásicos (torres de Hanoi). Programación de los contenidos Unidades temáticas Total horas, clases, créditos o tiempo de dedicación(*) Temas Fundamentos de programación Fundamentos de programación 16 horas Estructuras de datos fundamentales Estructuras de datos fundamentales 18 horas Metodología del desarrollo del Software y Algoritmos y resolución de problemas Metodología del desarrollo del Software y Algoritmos y resolución de problemas 14 horas Recursión Recursión 8 horas (*) Incluyen PEC (Pruebas de Evaluación Continua) 4. METODOLOGÍAS DE ENSEÑANZA-APRENDIZAJE. ACTIVIDADES FORMATIVAS La asignatura Fundamentos de la programación se organiza como una asignatura cuatrimestral de 6 ECTS (150 horas). En el proceso de enseñanza-aprendizaje de los contenidos anteriormente reseñados se emplearán las siguientes actividades formativas: Clases Teóricas presenciales. Clases Prácticas: resolución de problemas presenciales. Prácticas en Laboratorio presenciales. Tutorías: individuales y/o grupales. Además, en función de la naturaleza de las distintas partes de la materia objeto de estudio, se podrán utilizar, entre otras, las siguientes actividades formativas: Elaboración de trabajos con responsabilidad individual pero con gestión de la información como equipo. Puesta en común de la información, problemas y dudas que aparezcan en la realización de los trabajos. Organización y realización de jornadas públicas con presentaciones orales y discusión de resultados. Utilización de Plataforma de Aula Virtual. Actividades presenciales: 1. En el aula: exposición y discusión de los conocimientos básicos de la asignatura. Planteamiento y resolución teórica de ejercicios y supuestos relacionados. Orientadas a la enseñanza de las competencias específicas de la asignatura, especialmente las relacionadas con los conocimientos básicos y las técnicas de programación imperativa. 2. En el laboratorio: planteamiento y desarrollo de ejercicios prácticos que permitan solventar problemas y analizar hipótesis y contribuyan al desarrollo de la capacidad de análisis de resultados, razonamiento crítico y comprensión de los métodos de resolución planteados. Servirán como base para la adquisición de las competencias genéricas descritas en el apartado 2. Actividades no presenciales: 1. Análisis y asimilación de los contenidos de la materia, resolución de problemas, consulta bibliográfica, preparación de trabajos individuales y grupales, realización de exámenes presenciales y autoevaluaciones. Orientadas especialmente al desarrollo de métodos para la autoorganización y planificación del trabajo individual y en equipo. 2. Tutorías: asesoramiento individual y en grupos durante el proceso de enseñanzaaprendizaje, bien en forma presencial o a distancia. Número de horas totales: La asignación de horas a las distintas actividades formativas, incluyendo los exámenes es la siguiente: Clases presenciales de Teoría y problemas:28 Número de horas presenciales:60 Clases presenciales de Laboratorio: 28 Evaluación final:4 Número de horas del trabajo propio del estudiante: 90 Totales Tutorías y Trabajo del alumno 150 horas Materiales y recursos Bibliografía de referencia sobre la asignatura. Ordenadores personales. Entornos de desarrollo y manuales de uso de los mismos. Conexión a Internet. Plataforma de Aula Virtual y manuales de uso de las mismas. Proyectores. 5. EVALUACIÓN El sistema de calificación se ajustará al RD 1125/2003 por el cual se regula el sistema de créditos ECTS. Los estudiantes tendrán la opción de evaluación continua mediante las Pruebas de Evaluación Continua (PEC) distribuidas a lo largo del cuatrimestre. Además, los estudiantes que no se acojan o superen la evaluación continua, podrán optar a una Evaluación Final. La evaluación continua servirá en cualquier caso como evaluación formativa durante el proceso de enseñanza-aprendizaje. La evaluación de la adquisición de competencias tendrá en cuenta, entre otros, los siguientes criterios de evaluación: - Dominio de los contenidos básicos - Resolución de problemas - Aplicación y transferencia de los contenidos - Interés y motivación en la realización de las tareas y prácticas El sistema de evaluación continua que se propone se compone de: Pruebas escritas de carácter teórico/ practico, pudiendo ser de carácter eliminatorio, relativas a los conocimientos impartidos que se podrán realizar en el aula/laboratorio o a través de la Plataforma e-Learning puesta a disposición del alumno. El primer día de clase se expondrán los criterios de calificación particulares de la asignatura. 6. BIBLIOGRAFÍA Bibliografía Básica GARCÍA MOLINA, F., MONTOYA DATO, J. y otros. Una Introducción a la Programación: Un enfoque algorítmico. Ed. Thomson Paraninfo. 2005. JOYANES AGUILAR, L. Programación en Pascal. Ed. McGraw-Hill. 2006. GONZALEZ DE LENA ALONSO, M. T., Introducción a la programación: Problemas resueltos. Ed. Universitaria Ramón Areces. 2005. SÁNCHEZ, M. A., Programación estructurada y Fundamentos de la Programación. Ed. Díaz de Santos, 1996. CALDERÓN MATEOS, A., CARRETERO PÉREZ;, J. y otros, Programación en lenguajes estructurados. Ed. Paraninfo. 2008. LÓPEZ ROMÁN, L., Programación estructurada. Un enfoque algorítmico. Ed. Alfaomega Grupo Editor. 2003. QUERO CATALIN, E. Programación en lenguaje estructurado. Ed. Paraninfo, 2001. KERNIGHAN BRIAN W., PIKE R., La Práctica de la Programación. Ed. Prentice Hall. JOYANES AGUILAR, L., RODRÍGUEZ BAENA, L., FERNÁNDEZ AZUELA, M. Fundamentos de la Programación. Libro de Problemas en Pascal y Turbo Pascal. Ed. McGraw Hill. TRIGO ARANDA, V., CAMACHO MONTES, A. Programación en Turbo Pascal 7. Ed. Paraninfo, 1995 Bibliografía Complementaria BRASSAD,G., BRANTLY,P. Algorítmica. Ed Masson. AHO, A., HOPCROFT, J., ULLMAN, J. Estructuras de Datos y Algoritmos. Ed. Addison-Wesley, 1998. KERNIGHAN BRIAN W., PIKE R., La Práctica de la Programación. Ed. Prentice Hall. AHO, HOPCROFT, ULLMAN, Estructuras de datos y algoritmos. Ed. Addison Wesley. GOLDSCHLAFER, LISTER. Introducción moderna a la ciencia de la computación. Un enfoque algorítmico. Ed. Prentice Hall. PEÑA MARÍ, R., Diseño de Programas: Formalismo y Abstracción. Ed. Pearson Educación. 2005.