Universidad Pública de Navarra



Año Académico: 2016/2017 | Otros años:  2015/2016  |  2014/2015  |  2013/2014  |  2012/2013 
Graduado o Graduada en Ingeniería Informática por la Universidad Pública de Navarra
Código: 240205 Asignatura: PROGRAMACIÓN
Créditos: 6 Tipo: Básica Curso: 1 Periodo: 2º S
Departamento: Ingeniería Matemática e Informática
Profesorado:
GONZALEZ DE MENDIVIL MORENO, JOSE RAMON (Resp)   [Tutorías ] CORDOBA IZAGUIRRE, ALBERTO   [Tutorías ]
DIAZ NOAIN, MIKEL   [Tutorías ]

Partes de este texto:

 

Módulo/Materia

El módulo/materia en el que se encuentra la asignatura de Programación, dentro del plan de estudios, es el módulo de Informática. Éste consta de 18 ECTS repartidos en tres asignaturas: Informática (6 ECTS), Programación (6 ECTS) y Estructura de Computadores (6 ECTS). Este es un módulo de carácter básico para la formación de los futuros graduados en Ingeniería Informática.

Subir

Descripción/Contenidos

La programación, es decir la construcción de programas, representa el núcleo de la informática. Todos los métodos y herramientas de la informática tienen como objeto o sujeto a los programas y el trabajo de un informático siempre guarda alguna relación con su construcción o manejo. La programación es un proceso complejo ya que envuelve una gran cantidad de tareas con aspectos muy diversos. En esta asignatura se presentan técnicas y herramientas para las fases de la programación de diseño y codificación. En las clases de teoría se presentan diversas técnicas para la construcción de algoritmos iterativos y recursivos, así como la aplicación de técnicas de descomposición funcional. En las clases de prácticas (laboratorio) se aprende y practica con un lenguaje de programación. El objetivo es aprender a construir programas, por ahora sencillos, de calidad, esto es, programas correctos, fáciles de leer y de entender, flexibles y eficientes.

Contenidos de Programación:

Especificación de algoritmos. Estructuras algorítmicas básicas. Acciones y funciones.

Diseño descendente. Diseño de algoritmos iterativos. Diseño de algoritmos recursivos.

Modularidad.

Subir

Descriptores

Especificación de programas. Diseño de programas. Técnicas de verificación y prueba de programas. Medidas de complejidad. Técnicas de derivación de algoritmos y programas. Descomposición funcional y modular. Diseño de programas recursivos.

Subir

Competencias genéricas

Competencias Básicas:

CB3- Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.

CB4- Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.

Competencias Generales:

G8- Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse a nuevas situaciones.

G9- Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión.

T1- Capacidad de análisis y síntesis.

T3- Comunicación oral y escrita.

T4- Resolución de problemas.

T8- Aprendizaje autónomo.

T9- Creatividad.

Subir

Competencias específicas

FB3- Capacidad para comprender y dominar los conceptos básicos de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería.

FB4- 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.

Subir

Resultados aprendizaje

Los Resultados de Aprendizaje que va a alcanzar con esta asignatura se resumen a continuación:

 

(RA1) Diseñar, realizar, evaluar y verificar programas que realicen tareas básicas de cálculo y entrada/salida, utilizando las construcciones típicas de los lenguajes de programación imperativa.

(RA2) Escribir, compilar, ejecutar y probar programas de pequeño tamaño.

(RA3) Analizar y construir algoritmos utilizando técnicas y métodos adecuados.

(RA4) Evaluar la complejidad de un algoritmo dado.

(RA5) Aplicar las técnicas de descomposición funcional para dividir un programa en pequeñas piezas.

(RA6) Utilizar librerías.

(RA7) Organizar y mantener pequeños programas y sus unidades componentes.

 

Subir

Metodología

Se imparten clases magistrales (MD1-Método expositivo) hasta un total de 20 horas presenciales en el aula. En estas clases se imparte la teoría de la asignatura utilizando el proyector y la pizarra. Se presentan ejemplos de aplicación de la teoría mediante problemas concretos. Se propondrán al estudiante colecciones de problemas que pueden resolver de forma autónoma y cuya realización es fundamental para asimilar los conceptos de la asignatura. Se imparten clases prácticas hasta un total de 34 horas presenciales en el aula. En estas clases se resuelven ejercicios propuestos (MD2-Resolución de ejercicios y problemas) (14 horas), se codifican en un lenguaje de programación y se realizan pruebas sobre los programas (20 horas). A lo largo del semestre se realizarán 4 pruebas de evaluación (MD3-Evaluación de competencias), 3 de ellas corresponden a la evaluación continua de la teoría/práctica (2 horas), la cuarta prueba corresponde a la recuperación (1 hora). La evaluación de las prácticas de laboratorio se realizará de forma continua a lo largo del semestre mediante entregas de prácticas y ejercicios puntuables. En la evaluación de prácticas se tiene en cuenta la asistencia y se requiere un mínimo de asistencia a las prácticas para superar este apartado. La recuperación corresponde a un examen de prácticas (1 hora). Finalmente, para completar la teoría/práctica se propondrá la elaboración de un trabajo.

En todo momento se anima a los estudiantes a asistir a las tutorías en grupos muy reducidos para que reciban orientación en la realización de los ejercicios y las prácticas (MD4-Orientación).

 

En la siguiente tabla se indican las horas asignadas a cada actividad formativa y su carácter presencial:

 

Actividad formativa

Horas

Presencialidad

A1- Clases magistrales

20

100

A2- Preparación de presentaciones de trabajos, proyectos, etc.

10

0

A3- Aprendizaje basado en problemas y/o casos en grupos reducidos.

14

100

A4- Sesiones prácticas en grupos reducidos.

20

100

A5- Tutorías en grupos muy reducidos.

2

100

A6- Actividades de evaluación.

4

100

A7- Estudio autónomo.

30

0

A8- Elaboración de trabajos y/o proyectos y escritura de memorias.

11

0

A9- Programación / experimentación u otros trabajos en ordenador de laboratorio.

25

0

A10- Resolución de problemas, ejercicios y otras actividades de aplicación.

14

0

Total

150

 

Subir

Evaluación

Resultados de aprendizaje

Criterios

Actividad de evaluación

Peso

Rec

 

Contenidos Teórico/Prácticos

RA1

RA3

RA4

RA5

Comprensión de los conocimientos teóricos y su aplicación a la resolución de problemas algorítmicos correctos

Capacidad de análisis y síntesis.

Respuesta en tiempo, forma y adecuación de contenidos.

Aplicación de los conocimientos en casos prácticos

Capacidad de comunicación correcta y precisa

Exámenes a lo largo del semestre.

Elaboración de un trabajo y su presentación.

50%

Si

Hasta el 90%

 

Contenidos Prácticos

RA2

RA3

RA5

RA6

RA7

Aplicación de los conocimientos de teoría al desarrollo de programas correctos con criterios de calidad exigidos a este nivel

Aplicación de los conocimientos en la práctica 

Creatividad, capacidad de análisis y síntesis

Respuesta en tiempo, forma y adecuación de contenidos.

Capacidad de comunicación correcta y precisa

Asistencia

Participación activa en clase de prácticas y pruebas durante las prácticas.

Entregas de informes de prácticas.

Control de firmas de asistencia

50%

Si

Hasta el 60%

 

 

Cada parte N1: contenidos teórico/prácticos y N2: contenidos prácticos tendrá una nota entre 0 y 10 puntos. La nota final de la asignatura N se obtiene atendiendo al siguiente procedimiento:

N= min(N1, N2) si N1<4,5 o N2 <4,5

N= (N1+N2)/2  si N1>=4,5 y N2>=4,5

 

Superarán la asignatura los estudiantes cuya nota final N sea mayor o igual que 5,0.

En la recuperación se puede recuperar hasta el 75% del total de la asignatura, N1 hasta 9 puntos y N2 hasta 6 puntos. La nota final N se obtiene atendiendo al procedimiento anterior.

Subir

Temario

Programa de Teoría.

Tema 1. Especificación de algoritmos. 1.1. Variables: declaración y tipos. 1.2. Introducción a la especificación. 1.3. Lógica de predicados. 1.4. Cuantificadores y sustituciones. 1.5. Elementos de una especificación. 1.6. Reglas de consecuencia.

Tema 2. Estructuras algorítmicas básicas. 2.1. Instrucción continuar. 2.2. Instrucción de asignación. 2.3. Composición secuencial de instrucciones. 2.4. Composición alternativa de instrucciones. 2.5. Composición iterativa de instrucciones. 2.6. Introducción a la eficiencia de algoritmos.

Tema 3. Derivación formal de algoritmos. 3.1. Derivación de instrucciones simples. 3.2. Derivación de bucles a partir de invariantes. 3.3. Deducción de invariantes: elección de una conjunción. 3.4. Deducción de invariantes: sustitución de expresiones. 3.5. Deducción de invariantes: reforzamiento de invariantes. 3.6. Deducción de invariantes: invariantes para la recursividad. Ejercicios del Tema 3.

Tema 4. Acciones y funciones. 4.1. Acciones y funciones. 4.2. Llamadas a acciones. 4.3. Clases de parámetros. 4.4. Declaración de acciones. 4.5. Declaración de funciones. 4.6. Diseño descendente.

Tema 5. Diseño de algoritmos iterativos. 5.1. Acceso directo: tablas. 5.2. Esquema de recorrido en tablas. 5.3. La instrucción para-hasta-hacer. 5.4. Esquema de búsqueda en tablas. 5.5. Búsqueda con centinela. 5.6. Búsqueda dicotómica. 5.7. Ordenación por inserción. 5.8. Ordenación por selección. 5.9. Eficiencia de algoritmos iterativos. 5.10. Diseño descendente. Ejercicios del Tema 5.

Tema 6. Diseño de algoritmos recursivos. 6.1. Introducción a la recursividad. 6.2. Funciones recursivas. 6.3. Método de diseño. 6.4. Evaluación de complejidad. 6.5. Inmersión de especificaciones. Ejercicios del Tema 6.

Tema 7. Modularidad. 7.1. Motivación. 7.2. Criterios. 7.3. Declaración de módulos. 7.4. Ejemplos.

Programa de prácticas.

Sesión  1. Codificación de algoritmos en Pascal.

Sesión 2. Derivación de algoritmos I.

Sesión 3. Derivación de algoritmos II.

Sesión 4. Acciones y funciones.

Sesión 5. Derivación de algoritmos III.

Sesión 6. Derivación de algoritmos IV.

Sesión 7. Diseño de algoritmos iterativos I: Tablas.

Sesión 8. Diseño de algoritmos iterativos II: Búsquedas y recorridos.

Sesión 9. Diseño de algoritmos iterativos III: Ordenación.

Sesión 10. Funciones recursivas I.

Sesión 11. Funciones recursivas II.

Sesión 12. Funciones recursivas III.

Sesión 13. Módulos.

Sesión 14. Ejercicio práctico.

Subir

Bibliografía

Acceda a la bibliografía que el profesorado de la asignatura ha solicitado a la Biblioteca.


Bibliografía básica

- Castro, Cucker, y otros. Curso de programación. McGraw-Hill, 1993.

- R. Peña. Diseño de programas. Formalismo y abstracción. 3ª Ed. Prentice-Hall, 2004.

- M. Kaldewaij. Programming: the derivation of algorithms. Prentice-Hall , 1990.

Bibliografía (prácticas)

- Leestma, Nyhoff. Programación en Pascal (4ª ed.). Prentice-Hall, 1999.

Otros recursos

- Manuales de FreePascal (User’s Guide, Programmer’s Guide, Reference Guide, Standard Units Reference Manual) http://www.freepascal.org/docs/

- Manual del depurador de programas ddd. http://www.gnu.org/manual/ddd/pdf/ddd.pdf

Material docente

En  https://miaulario.unavarra.es se encuentran entre otros materiales:

- Trasparencias que se utilizan en las clases.
- Colecciones de enunciados de ejercicios.
- Guiones de las prácticas.

- Normas de estilo para la elaboración de las prácticas.

- Criterios de corrección de teoría y de prácticas.

Subir

Idiomas


Castellano

Subir

Lugar de impartición

Campus de Arrosadía, Pamplona

Subir