Guía Docente 2017/2018 - ucam.edu · operativos, bases de datos y programas informáticos con...

12
hola Universidad Católica San Antonio de Murcia – Tlf: (+34) 968 278 160 [email protected] – www.ucam.edu Guía Docente 2017/2018 Fundamentos de Programación II Fundamentals of Programming II Grado en Ingeniería Informática Presencial

Transcript of Guía Docente 2017/2018 - ucam.edu · operativos, bases de datos y programas informáticos con...

hola

Universidad Católica San Antonio de Murcia – Tlf: (+34) 968 278 160 [email protected] – www.ucam.edu

Guía Docente 2017/2018

Fundamentos de Programación II Fundamentals of Programming II

Grado en Ingeniería Informática

Presencial

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

1

ÍndiceFundamentos de Programación II ...................................................................................... 2

Breve descripción de la asignatura ................................................................................... 2

Requisitos Previos .............................................................................................................. 2

Objetivos .............................................................................................................................. 2

Competencias y resultados de aprendizaje ...................................................................... 3

Metodología ......................................................................................................................... 4

Temario ................................................................................................................................. 4

Relación con otras materias del plan de estudios ............................................................ 7

Sistema de evaluación ........................................................................................................ 7

Bibliografía y fuentes de referencia ................................................................................... 8

Web relacionadas ................................................................................................................ 9

Recomendaciones para el estudio ..................................................................................... 9

Material didáctico ................................................................................................................ 9

Tutorías .............................................................................................................................. 10

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

2

Fundamentos de Programación II Módulo: Formación Básica.

Materia: Informática. Carácter: Formación Básica. Nº de créditos: 4,5 ECTS. Unidad Temporal: 1er Curso – 2º Semestre. Profesor/a de la asignatura: Baldomero Imbernón Tudela Email: [email protected] Horario de atención a los alumnos/as: Martes de 16:00 a 18:00. Fuera de este horario se pueden atender tutorías a petición del alumno. Preferiblemente se pedirán las citas por el campus virtual, pero se puede poner también por correo electrónico.

Profesor coordinador de curso: Magdalena Cantabella Sabater Profesor coordinadora de módulo: Jesús Antonio Soto Espinosa.

Breve descripción de la asignatura Esta asignatura es la continuación de Fundamentos de programación I. Se centra en establecer las estructuras de datos necesarias para almacenar la información que luego será tratada por los diferentes algoritmos.

Brief Description

This subject establishes the basic principles of programming. Allows students to learn concepts such as algorithms, programming languages, variables, structured programming and make basic programs with a few requirements. Establishes the basis for related subjects.

Requisitos Previos Para cursar esta asignatura es necesario que el alumno haya cursado y superado la asignatura Fundamentos de Programación I. Los conocimientos que en esta asignatura se imparten son fundamentales para que el alumno pueda realizar un correcto aprendizaje de los contenidos desarrollados en esta asigantura.

Objetivos 1. Conocer e identificar las principales estructuras de datos, tanto lineales como no lineales,

incluidas aquellas que se establecen en memoria secundaria. 2. Realizar programas avanzados con tipos abstractos de datos.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

3

3. Calcular la complejidad algorítmica de un determinado código.

Competencias y resultados de aprendizaje Competencias transversales

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

T2 - Capacidad de organización y planificación.

T4 - Resolución de problemas.

T5 - Toma de decisiones.

T6 - Trabajo en equipo.

T11 - Razonamiento crítico.

T14 - Aprendizaje autónomo.

T16 - Creatividad e innovación.

T19 - Motivación por la calidad.

T21 - Capacidad de reflexión.

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.

FB5 - Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.

Resultados de aprendizaje RA 1.3.6. Realizar programas mediante el paradigma de la programación estructurada aplicando esquemas algorítmicos avanzados y estructuras de datos complejas.

RA 1.3.7. Analizar, especificar e implementar estructuras de datos, tanto lineales como no lineales, desde la perspectiva de los TAD para la resolución de problemas utilizando la más apropiada, en función de los recursos necesarios.

RA 1.3.8. Determinar la complejidad, en tiempo y en espacio, teórica y empírica, de algoritmos; incluyendo algoritmos recursivos.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

4

Metodología

Metodología Horas Horas de trabajo presencial

Horas de trabajo no presencial

Clases en el aula 13.5

45 horas (40 %) Prácticas 17.1

Evaluación 5.4

Tutorías 9.0

Estudio personal 25.5

67,5 horas (60 %)

Actividades de aprendizaje virtual

6.3

Realización de ejercicios, presentaciones, trabajos y casos prácticos

23.1

Lecturas recomendadas y búsqueda de información

12.5

TOTAL 112,5 45 67,5

Temario

Programa de la enseñanza teórica Tema 1. Ficheros.

1. Librería estándar de C.

2. Operaciones básicas con ficheros: Apertura, lectura, escritura, renombrado, borrado y cierre.

3. Ficheros de texto.

4. Ficheros binarios. Posicionamiento.

Tema 2. Punteros.

1. Definición.

2. Declaración de punteros.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

5

3. Operadores.

a. El operador referencia: &

b. El operador indirección: *

4. Asignación de punteros.

5. Punteros como argumentos.

6. Proteger argumentos.

7. Devolver punteros.

Tema 3. Punteros y arrays.

1. Aritmética de punteros.

2. Uso de punteros para el procesamiento de arrays.

3. Uso del nombre de array como puntero.

4. Arrays como argumentos.

5. Punteros y arrays multidimensionales.

Tema 4. Programación modular y documentación de código fuente

1. Programación modular en C

a. Archivos de cabecera

b. Archivos de implementación

c. Variables globales

2. Documentación de código en C

a. Introducción a Doxygen

b. Añadir comentarios al código

c. Generación automática de documentación

Tema 5. Listas.

1. Listas versión estática

2. Lista versión cursor.

3. Listas dinámicas

a. Lista simple con cabecera

b. Lista simple sin cabecera

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

6

c. Lista circular

d. Lista doblemente enlazada

e. Lista circular doblemente enlazada

Tema 6. Pilas.

1. Versión estática.

2. Versión dinámica.

Tema 7. Colas.

1. Versión estática.

2. Versión dinámica.

Tema 8. Árboles.

1. Estructuras dinámica.

2. Recorrido.

a. Previo.

b. Simétrico

c. Posterior.

2. Operaciones básicas:

a. Insertar

b. Pertenece

c. Encontrar

d. Padre de

e. Borrar

Tema 9. Grafos.

1. Versión estática.

2. Versión dinámica.

3. Algoritmos sobre grafos:

a. Dijkstra.

b. Floyd.

c. Warshall.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

7

Tema 10. Complejidad.

a. Conceptos básicos.

b. Notaciones asintóticas.

c. Ecuaciones de recurrencia.

Programa de la enseñanza práctica Práctica 1. Entrada/salida con ficheros en C.

Práctica 2. Uso de punteros, operaciones asociadas y uso como argumentos de funciones. Uso conjunto de punteros y arrays multidimensionales. Memoria dinámica y funciones asociadas. Elaboración de programas modulares. Documentación de programas con doxygen.

Práctica 3. Uso de la estructura de datos lineales (listas, pilas y colas) sobre una supuesto práctico real.

Práctica 4. Uso de la estructura de datos no lineales (árboles y grafos) sobre una supuesto práctico real.

Práctica 5. Cálculo de complejidad de distintos algoritmos de programación.

Relación con otras materias del plan de estudios La asignatura de Fundamentos de programación II está muy relacionada con la asignatura de Fundamentos de programación I, ya que es la continuación directa. También está íntimamente relacionada con Algoritmia.

En menor medida y en el área de la programación, también está ligada a asignaturas como Programación Orientada a Objetos, Desarrollo de aplicaciones distribuidas I y II.

También se relacionan conceptos de otras áreas de conocimiento y que son impartidos en asignaturas como Fundamentos de computadores e Ingeniería del software I.

Sistema de evaluación - Prueba parcial: 35% del total de la nota.

Se evaluarán los conocimientos acerca del manejo de ficheros, punteros, modularidad de programas y manejo de listas (temas 1 a 4).

- Prueba final: 35% del total de la nota.

Se evaluarán los conocimientos sobre estructuras de datos lineales, no lineales y complejidad algorítmica (temas 5 a 10).

- Evaluación de prácticas y problemas: 30% del total de la nota.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

8

De las 5 prácticas propuestas, se deberán entregar al menos 4. En caso de entregar todas las prácticas que se proponen, se realizará media con las 4 mejores notas obtenidas por el alumno. La ponderación a aplicar será equitativa (cada práctica tiene un peso del 25%). El profesor se reserva el derecho de mantener una entrevista personal con el alumno al finalizar la última práctica.

El alumno superará la asignatura cuando la media ponderada sea igual o superior a 5 puntos y tenga una nota de, al menos, 4 puntos en todas las partes que componen el sistema de evaluación cuya ponderación global sea igual o superior al 20%.

Si el alumno tiene menos de un 4 en alguna de las partes cuya ponderación sea igual o superior al 20%, la asignatura estará suspensa y deberá recuperar esa/s parte/s en la siguiente convocatoria dentro del mismo curso académico. La/s parte/s superada/s en convocatorias oficiales (Febrero/Junio) se guardarán para las sucesivas convocatorias que se celebren en el mismo curso académico.

En caso de que no se supere la asignatura en la Convocatoria de Septiembre, no contarán las partes aprobadas para sucesivos cursos académicos.

El sistema de calificaciones (RD 1.125/2003. de 5 de septiembre) será el siguiente:

0-4,9 Suspenso (SS)

5,0-6,9 Aprobado (AP)

7,0-8,9 Notable (NT)

9,0-10 Sobresaliente (SB)

La mención de “matrícula de honor” podrá ser otorgada a alumnos que hayan obtenido una calificación igual o superior a 9,0. Su número no podrá exceder del 5% de los alumnos matriculados en una materia en el correspondiente curso académico, salvo que el número de alumnos matriculados sea inferior a 20, en cuyo caso se podrá conceder una sola matrícula de honor.

Bibliografía y fuentes de referencia Bibliografía básica

• Khamtane Ashok. Programming in C. Ed. Pearson. 2012.

• Rodríguez Artalejo, M., Antonio Gonzalez Caldero, P., Gomez Martin, M.A., González Calero, P.A. Estructuras de datos. Un enfoque moderno. UCM. 2011.

• Ferraris Llanos, R. D. Fundamentos de Informática y Programación en C. Ed. Paraninfo. 2010.

• Peña Basurto, M.A., Cela Espín, J.M. Introducción a la Programación en C. Edición UPC. 2010.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

9

• Joyanes, L. Fundamentos de Programación. Ed. McGraw-Hill, 2008.

Bibliografía complementaria • Schildt, H. C. Manual de referencia. Ed. McGraw-Hill, 2007.

• García, F., Fernández, J., Carretero, J., Calderón, A. Ed. El lenguaje de programación C. Prentice Hall. 2004.

• Kernighan B.W., Ritchie, D.M. El lenguaje de programación C.2ª ed. Ed. Prentice Hall. 1991.

• Joyanes, L., Zahonero, I. Programación en C. Libro de problemas. Ed. McGraw-Hill. 2002.

• Joyanes, L., Zahonero, I., Fernández, M. y Sánchez, L. Estructura de datos. Libro de problemas. Ed. McGraw-Hill. 1999.

• Márquez, F.M. UNIX. Programación avanzada. 3ª ed. Ed. Ra-Ma. 2004.

Web relacionadas American National Standards Institute – ANSI (www.ansi.org)

International Organization for Standadization (http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=57853)

C programming and C++ programming. http://www.cprogramming.com/

Recomendaciones para el estudio Se trata de una asignatura donde es fundamental para el alumno llevar la asignatura al día, debido a la interrelación existente entre los temas que la forman. El abandono de la asignatura durante una temporada podría dificultar el seguimiento de la misma posteriormente.

Se recomienda que el alumno trabaje semanalmente los ejercicios propuestos por el profesor, con el fin de asimilar los conocimientos de forma paulatina. Además de los recursos facilitados por el profesor, es sumamente importante que los alumnos hagan uso de las referencias bibliográficas básicas para reforzar los contenidos tratados en clase.

Por tratarse de una asignatura de carácter práctico, es fundamental el uso del ordenador, tanto para la elaboración de las prácticas y ejercicios, como para el refuerzo de los conocimientos y conceptos teóricos aprendidos. Material necesario

Material didáctico Aplicaciones

Para las prácticas de esta asignatura se necesita instalar algún programa que permita el desarrollo, compilación y ejecución de programas desarrollados en lenguaje C. Se recomienda el uso de Code::Blocks, el cuál es descargable gratuitamente a través del siguiente enlace:

http://www.codeblocks.org/downloads

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

10

Es un entorno de desarrollo multiplataforma disponible para entornos Windows 200/XP/Vista/7/8, Linux 32/64 bits y Mac OS X.

Si el alumno lo prefiere, puede utilizar cualquier otro programa que ofrezca la funcionalidad necesaria para desarrollar los ejercicios prácticos de esta asignatura, como Eclipse o Dev-C++. No obstante es importante tener presente que en los laboratorios se encuentra instalada la herramienta Code::Blocks y los exámenes se desarrollarán haciendo uso de la misma.

Adicionalmente, para la generación automática de código, haremos uso de la herramienta Doxygen. Se puede descargar gratuitamente a través del siguiente enlace:

http://www.stack.nl/~dimitri/doxygen/

El software es ligero y no existen requisitos mínimos para su instalación. Además, se ofrece en diversas versiones, tanto 32-bit y 64-bit, válidas para sistemas tipo Linux, Windows o Mac OS X.

Material Además de la bibliografía recomendada en esta guía docente (básica y complementaria), en el apartado de Recursos del Campus Virtual, el estudiante dispondrá de recursos adicionales que le servirán de apoyo al proceso de aprendizaje. Dicho material se ofrecerá organizado por temas, de acuerdo con la organización de contenidos detallada anteriormente. Concretamente se pondrán a disposición del alumno los siguientes recursos:

• Apuntes sobre cada tema, indicando conceptos relevantes y ejemplos de uso.

• Enlaces de interés que permitan la ampliación de información sobre los temas.

• Ejemplos de programas donde se apliquen distintas técnicas de programación.

• Para cada estructura de datos estudiada en la asignatura, se facilitarán librerías con funcionalidad básica que puedan ser empleadas en la resolución de ejercicios prácticos.

• Ejercicios para practicar los conocimientos tratados en cada tema.

Tutorías En la asignatura se establecen los siguientes mecanismos de tutorización:

• Sesiones de tutorías: en el horario de atención de los alumnos semanal indicado anteriormente, el profesor atenderá dudas de los alumnos de forma presencial o por vía telefónica. En la medida de lo posible, dada la naturaleza de los contenidos impartidos, se recomienda que los alumnos opten por la tutorización presencial pues facilita la atención y resolución de dudas planteadas sobre los programas desarrollados.

• Correo electrónico y/o mensajes privados: se atenderán dudas puntuales planteadas a través de medios telemáticos como el correo electrónico y la herramienta del Campus Virtual “Mensajes Privados”. Preferiblemente, se recomienda el uso del Campus Virtual. Este tipo de tutorización se realizará diariamente, con un compromiso de respuesta en menos de 48 horas lectivas desde la recepción del mismo.

Fundamentos de Programación II

Fundamentos de Programación II - Tlf: (+34) 902 102 101

11

• Foros: los foros sirven para fomentar la resolución de dudas en la asignatura de forma colaborativa entre los alumnos. Se crearán diversos temas en el foro donde discutir distintos aspectos de interés, tales como unidades temáticas, prácticas, ejercicios, etc. Este mecanismo de tutorización permite a los estudiantes generar debates sobre los distintos planteamientos e intervenciones que se realicen. El profesor moderará las discusiones surgidas a través de los foros, reorientando las discusiones hacia el propósito formativo.