Download FUNDAMENTOS DE LA PROGRAMACIÓN Grado en Sistemas de

Document related concepts

Programación funcional wikipedia , lookup

Rust (lenguaje de programación) wikipedia , lookup

Lisp wikipedia , lookup

Scheme wikipedia , lookup

Axiom wikipedia , lookup

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.