ALGORITMOS Y ESTRUCTURAS DE DATOS

Planificación de la asignatura de ALGORITMOS Y ESTRUCTURAS DE DATOS de 2º de Ingeniería Técnica en Informática de Gestión para su adecuación al Espaci...
4 downloads 2 Views 60KB Size
Planificación de la asignatura de ALGORITMOS Y ESTRUCTURAS DE DATOS de 2º de Ingeniería Técnica en Informática de Gestión para su adecuación al Espacio Europeo de Enseñanza Superior

I. INTRODUCCIÓN II. CONTEXTO III. MÉTODO DE TRABAJO (planificación) IV. DISEÑO DE LA ASIGNATURA (GUÍA DOCENTE) 1.

2. 3. 4. 5.

6. 7. 8.

9.

Identificación 1.1. De la asignatura 1.2. Del profesorado Presentación Conocimientos previos Competencias Contenidos 5.1. Sobre los conocimientos 5.2. Sobre las competencias 5.3. Objetivos formativos de cada tema Metodología docente Temporalización o cronograma Evaluación 8.1. Evaluación del aprendizaje 8.1.1 Esquema tradicional de evaluación (punto de partida) 8.1.2 Nuevo esquema de evaluación (esquema tradicional + añadidos) Bibliografía 9.1 Bibliografía básica 9.2 Bibliografía complementaria

IV. DISEÑO DE LA ASIGNATURA (GUÍA DOCENTE)

I. INTRODUCCIÓN Con el ánimo de responder a la necesidad de promover la convergencia entre los sistemas nacionales de educación superior de la Unión Europea, y teniendo en cuenta la importancia de un desarrollo armónico del Espacio Europeo de Educación Superior antes del año 2010, ante la demanda de una serie de mejoras en los sistemas educativos de los estados de la Unión Europea que permitan una formación óptima de los estudiantes y su integración en un mercado laboral unificado y sin fronteras, es necesario acercarse cuanto antes a la metodología que la nueva situación implica. Para aproximarse a dicho propósito, la Universidad de Murcia lanzó la Convocatoria para el desarrollo de experiencias de innovación educativa en el contexto de la convergencia europea para el curso 2006-2007, dentro de la cual se sitúa el marco de trabajo de este documento.

II. CONTEXTO La Facultad de Informática de la Universidad de Murcia no es ajena a la necesidad de la adaptación de sus planes de estudio al Espacio Europeo de Educación Superior. De hecho, durante las últimos tres cursos se han llevado a cabo experiencias piloto de cursos completos y de asignaturas individuales o en grupo, e incluso para el curso 20072008 se va a continuar en la misma línea con proyectos de tipo A y B. En este contexto, durante el curso 2006-2007, nos acogimos a la convocatoria de la Universidad de Murcia referida anteriormente, en su modalidad B, para trabajar con la asignatura Algoritmos y Estructuras de datos: Carácter Temporalidad Créditos LRU Alumnos

Troncal Anual 6 teóricos + 6 prácticos 154

III. MÉTODO DE TRABAJO El trabajo a realizar consistía en los siguientes apartados: •

1. Creación de equipos docentes con participación de profesores, estudiantes y, en su caso, personal de administación y servicios de la Universidad de Murcia, para el desarrollo de materias o conjuntos de asignaturas concretas.



2. Elaboración de guías docentes de titulación, asignaturas y unidades didácticas en una o varias áreas, bajo el prisma de la metodología ECTS.



3. Diseño de materiales en relación al ECTS.



4. Actividades no presenciales, desarrollo de materiales y estrategias para la integración y aplicación de las TIC a las nuevas metodologías docentes en la titulación.



5. Acciones encaminadas a la formación, motivación, difusión e información del profesorado, del personal de administración y servicios y del alumnado en nuevas metodologías docentes, tanto generales como específicas, de las respectivas áreas o grupos de áreas de conocimiento.

Para poder llevar a cabo la planificación anterior, se conformó al comienzo del curso 2006-2007 el grupo de trabajo, formado por los siguientes profesores: Norberto Marín Pérez (coordinador), Domingo Giménez Cánovas y Jesualdo Tomás Fernández Breis; también se incluyeron en dicho grupo a tres alumnos con experiencia en proyectos piloto en cursos anteriores: Javier Serrano Esteban, Lidia Sánchez Sánchez y Eva María Brocal Sánchez.

Se han mantenido periódicamente reuniones durante todo el curso, evitando, evidentemente, los periodos de exámenes. El objetivo que se marcó desde el principio fue preparar el material necesario para la docencia en la asignatura con el propósito de procurar su adaptación a la metodología ECTS. Se contaba con el texto guía que se elaboró durante el curso 2002-2003 y se ofreció a los alumnos al siguiente curso. A partir de él se ha elaborado la Guía Docente, que se incluye en este documento partiendo del modelo propuesto por la Universidad de Murcia para tal fin. Durante el primer trimestre del curso, se llevó a cabo una labor de recopilación de material, tanto documentos oficiales como relativos a experiencias piloto desarrolladas con anterioridad en asignaturas y áreas de conocimiento paralelas a las implicadas en nuestra asignatura y de utilidad como modelo y fuente de ideas y sugerencias. Durante el segundo trimestre se elaboraron y confeccionaron competencias, objetivos, unidades didácticas, planificaciones temporales, metodologías docentes y métodos de evaluación. Durante el tercer trimestre se ha estudiado la viabilidad y empleo de nuevas tecnologías y herramientas software para la mejora de la docencia. En concreto se ha estudiado la viabilidad del uso de una aplicación software, Mooshack, empleada en los ACM Contest (concursos internacionales de programación organizados por la ACM, Association for Computing Machinery), para corrección automática de ejercicios. Se va a utilizar durante el curso 2007-2008. También se tiene presente la posible utilización de otra aplicación, Moodle. Además, por supuesto, se cuenta con la página web de la asignatura. En realidad, no se puede decir que en cada periodo temporal nos hayamos ceñido a desarrollar exclusivamente lo que estaba planificado. Ha habido un proceso de realimentación conforme se iban recopilando nuevos materiales o nuevas experiencias. Durante el curso hemos asistido a las I Jornadas Nacionales sobre adaptación de la Universidad de Murcia al Espacio Europeo de Educación Superior: Proyectos de Innovación Educativa los días 11 y 12 de diciembre de 2006, a las II Jornadas Nacionales sobre el Espacio Europeo de Educación Superior. Presente y futuro de la Convergencia Europea los días 23 y 24 de abril de 2007, a la conferencia titulada Adaptación al Espacio Europeo de Educación Superior en la Escuela de Informática, impartida en la Facultad de Informática por la Subdirectora de Innovación Educativa de ETS de Ingeniería Informática de la Universidad de Málaga, y a las JENUI (XIII Jornadas de Enseñanza Universitaria de la Informática) desarrolladas en Teruel del 16 al 18 de julio de 2007, así como a diversas reuniones con la Vicerrectora de Convergencia Europea y con los coordinadores de proyectos piloto de otros centros. Finalmente, y con todo lo anterior, se ha elaborado este informe que solo pretende dar un pequeño paso adelante hacia la convergencia europea en cuanto experiencia enriquecedora y previsora de lo que se avecina inminentemente.

IV. DISEÑO DE LA ASIGNATURA (GUÍA DOCENTE) 1. Identificación 1.1 De la asignatura Nombre de la signatura Código Curso / Grupos Tipo Créditos LRU Estimación del volumen de trabajo del alumno (ECTS)* Duración

ALGORITMOS Y ESTRUCTURAS DE DATOS 05BH Segundo / 1 Troncal 6 Teóricos + 6 Prácticos 10 Anual

1.2 Del profesorado Nombre y apellidos (Coordinador) Área/ Departamento Despacho y Facultad dónde se ubica. Teléfono Correo electrónico y página web

Norberto Marín Pérez Lenguajes y Sistemas Informáticos / DIS 2.27 Facultad de Informática 968 36 46 37 [email protected] http://dis.um.es/~nmarin/

Horario de atención al alumnado Nombre y apellidos Área/ Departamento Despacho y Facultad dónde se ubica. Teléfono Correo electrónico y página web

Domingo Giménez Cánovas Lenguajes y Sistemas Informáticos / DIS 2.03 Facultad de Informática 968 36 46 11 [email protected] http://dis.um.es/~domingo/

Horario de atención al alumnado Nombre y apellidos Área/ Departamento Despacho y Facultad dónde se ubica. Teléfono Correo electrónico y página web

Alberto Pérez Vela Lenguajes y Sistemas Informáticos / DIS 2.16 Facultad de Informática 968 39 85 26 [email protected] http://dis.um.es/~albertopv/

Horario de atención al alumnado Nombre y apellidos Área/ Departamento Despacho y Facultad dónde se ubica. Teléfono Correo electrónico y página web Horario de atención al alumnado

Juan José Meroño Sánchez Lenguajes y Sistemas Informáticos / DIS 2.23 Facultad de Informática 968 36 46 46 [email protected] http://dis.um.es/~jjmerono/

2. Presentación Los algoritmos y las estructuras de datos constituyen los dos pilares básicos de la programación. Esta asignatura se puede ver como una continuación natural de la asignatura de programación de primer curso. Partiendo de una base previa en los principios de la programación, se intenta desarrollar en los alumnos las habilidades de resolución de problemas, con herramientas como los esquemas algorítmicos, el razonamiento inductivo, la descomposición modular, la aplicación de procesos metódicos, y en general el pensamiento algorítmico. Los conocimientos adquiridos en la asignatura resultan fundamentales en todas las asignaturas posteriores donde se requieran conocimientos de programación.

3. Conocimientos previos Se supone que el alumno domina los conceptos esenciales de programación, y conoce las estructuras de datos fundamentales estudiadas en primer curso. En concreto, es imprescindible que los alumnos hayan aprobado la asignatura 05BD - Metodología y Tecnología de la Programación. Asimismo, deben saber programar con soltura en un lenguaje imperativo estructurado. También es necesario un dominio suficiente de los conceptos y destrezas matemáticas de primer curso.

4. Competencias Transversales/Genéricas - Capacidad de análisis y síntesis. - Capacidad de organización y planificación. - Comunicación oral y escrita. - Conocimientos de informática relativos al ámbito de estudio. - Resolución de problemas. - Toma de decisiones. - Razonamiento crítico. - Compromiso ético. - Habilidades en las relaciones interpersonales. - Trabajo en equipo. - Aprendizaje autónomo. Específicas de la asignatura En el siguiente apartado sobre los contenidos se incorporan las competencias y objetivos específicos asociados a cada tema en particular. De esta manera, creemos que es más claro.

5. Contenidos

5.1 Sobre los conocimientos

5.1.1 Programa de Teoría Parte I. Estructuras de Datos. Tema 1. Abstracciones y especificaciones Tema 2. Conjuntos y diccionarios Tema 3. Representación de conjuntos mediante árboles Tema 4. Grafos Parte II. Algorítmica Tema 1. Análisis de algoritmos Tema 2. Divide y vencerás Tema 3. Algoritmos voraces Tema 4. Backtracking Tema 5. Ramificación y poda

5.1.2 Programa de Prácticas Las prácticas consistirán en el análisis, diseño, implementación y prueba de algunos problemas de algoritmos y de estructuras de datos, usando el lenguaje de programación C++ sobre Linux. Para ello se impartirán dos seminarios: - Seminario 1: Programación en C (8 horas) - Seminario 2: Programación en C++ (6 horas) Además, se impartirá un seminario, cuya participación será opcional, que servirá para la realización voluntaria de una práctica sobre los contenidos del tema 1 (Abstracciones y especificaciones), que eliminará la materia correspondiente para el examen: - Seminario de especificaciones algebraicas (2 horas)

5.2 Sobre las competencias El objetivo fundamental de la asignatura es el siguiente: ser capaz de analizar, comprender y resolver una amplia variedad de problemas computacionales, diseñando e implementando soluciones eficientes y de calidad, como resultado de la aplicación de un proceso metódico.

5.3 Objetivos formativos de cada tema Parte I. Estructuras de Datos. Tema 1. Abstracciones y Especificaciones • Reconocer la importancia de la abstracción –no solo en programación, sino como un mecanismo fundamental de la capacidad intelectual humana– y conocer los mecanismos y tipos de abstracciones que aparecen en programación. • Concienciarse de la necesidad de desarrollar especificaciones del software que sean útiles y precisas, entendiendo la especificación como un punto de acuerdo entre el usuario y el implementador de una abstracción. • Conocer algún lenguaje de especificación formal de TAD y aplicarlo en la especificación de los TAD estudiados en la asignatura. En particular, conocer el método algebraico, basado en el uso de axiomas, y el constructivo, basado en la definición de precondiciones y poscondiciones. Tema 2. Conjuntos y diccionarios • Familiarizarse con la notación y terminología de los tipos de datos abstractos conjunto, diccionario y bolsa, siendo consciente de la importancia y ubicuidad de estos tipos en el desarrollo de programas. • Ser capaz de diseñar, implementar y analizar estructuras de representación no arbóreas para los tipos conjunto y diccionario, adaptadas a las necesidades específicas de cada aplicación. • Conocer la estructura de datos de tablas de dispersión, sus distintas variantes y los factores que influyen en su eficiencia. • Concienciarse de la importancia del factor eficiencia, en cuanto a tiempo de ejecución y uso de memoria, en el diseño e implementación de estructuras de datos. • Comprender la independencia entre la idea de datos almacenados y estructura de acceso a esos datos, a través del estudio de estructuras duales o múltiples. Tema 3. Representación de conjuntos mediante árboles • Entender y conocer un conjunto de técnicas eficientes de representación de conjuntos y diccionarios mediante estructuras arbóreas, como los árboles trie, AVL y B. • Comprender la necesidad de usar mecanismos de equilibrado o balanceo para conseguir eficiencia en las distintas representaciones arbóreas. • Adquirir la habilidad de evaluar las necesidades de representación de una aplicación específica, tomando decisiones justificadas sobre las estructuras de representación más adecuadas. • Ser capaz de diseñar e implementar tipos de datos usando las estructuras estudiadas en este tema, realizando las adaptaciones que cada aplicación concreta requiera.

Tema 4. Grafos • Familiarizarse con la notación y terminología usada en teoría de grafos, incluyendo tipos de grafos, propiedades, conceptos y problemas típicos sobre grafos. • Ser capaz de diseñar e implementar una estructura para el tipo de datos grafo –en sus distintas variantes–, usando listas y matrices de adyacencia. • Analizar las ventajas e inconvenientes de las representaciones de grafos mediante listas y matrices de adyacencia, y su influencia en la eficiencia de los algoritmos sobre grafos estudiados. • Conocer y comprender el funcionamiento de una amplia variedad de algoritmos clásicos sobre grafos (tales como los algoritmos de Prim, Kruskal, Dijkstra, Floyd y Warshall), razonando sobre las ideas subyacentes y analizando su complejidad computacional. • Adquirir la habilidad de usar los algoritmos estudiados como herramientas para la resolución de problemas en un contexto genérico, a través de la transformación de un problema de interés en un problema sobre grafos. • Ser capaz de diseñar algoritmos para resolver nuevas clases de problemas sobre grafos. Parte II. Algorítmica Tema 1. Análisis de algoritmos • Concienciarse de la importancia del estudio de los recursos consumidos por un algoritmo y del interés de hacerlo antes de la implementación, entendiendo que para cada aplicación puede variar lo que sea considerado un recurso crítico. • Saber determinar en función de qué parámetros está dado el tamaño de un problema y qué otros factores afectan al consumo de recursos. • Comprender, distinguir y relacionar los conceptos de eficiencia, complejidad computacional y tiempo de ejecución de un algoritmo, en los casos mejor, peor y promedio. • Conocer y usar correctamente y con soltura las notaciones de complejidad O, omega, y o-pequeña, comprendiendo su significado, utilidad y limitaciones. • Conocer las cotas de complejidad que aparecen más frecuentemente en el estudio de algoritmos, así como la relación entre los órdenes de estas funciones. • Saber calcular el tiempo de ejecución, el orden de complejidad y el uso de memoria de una gran variedad de tipos de algoritmos, usando las técnicas básicas de conteo de instrucciones y de memoria. • Repasar el concepto de recursión y las cuestiones ligadas a la construcción de algoritmos recursivos. • Ser capaz de analizar algoritmos recursivos, aplicando los resultados del análisis en comparación de algoritmos, evaluación de resultados experimentales y predicción de tiempos de ejecución.

• • • •

Conocer y saber aplicar la técnica del polinomio característico para la resolución de ecuaciones recurrentes lineales y homogéneas, y su extensión a algunos casos no homogéneos o no lineales. Conocer algunas técnicas alternativas para la resolución de ecuaciones de recurrencia no lineales. Comprender el papel de las condiciones iniciales en la resolución de las ecuaciones de recurrencia, determinando justificadamente cuáles deben ser usadas en cada caso. Identificar las ecuaciones recurrentes más frecuentes en el estudio de algoritmos y los órdenes de complejidad a los que dan lugar.

Tema 2. Divide y vencerás • Comprender los fundamentos de la técnica de diseño de algoritmos basada en divide y vencerás, identificando su estructura en algunos algoritmos ya conocidos. • Conocer tanto las ventajas como las limitaciones en la aplicación de la técnica de divide y vencerás. • Ser capaz de valorar la posibilidad y conveniencia de aplicar divide y vencerás sobre cierto problema, entendiendo que puede existir más de una forma en que la técnica sea aplicada. • Analizar el tiempo de ejecución de los algoritmos de divide y vencerás, al menos para el peor caso. • Conocer la influencia del tamaño del caso base en el tiempo de ejecución, resolviendo problemas de obtención de tamaños óptimos del caso base. Tema 3. Algoritmos voraces • Comprender los fundamentos de la técnica de diseño de algoritmos voraces o de avance rápido, identificando su estructura en varios de los algoritmos sobre grafos ya estudiados. • Conocer una variedad de algoritmos voraces, adquiriendo la capacidad de aplicar avance rápido para problemas nuevos, determinando si su aplicación es posible y adecuada. • Valorar la importancia de diseñar heurísticas de selección adecuadas, como un medio para obtener buenos algoritmos voraces. • Demostrar formalmente la optimalidad de algunos algoritmos voraces, usando reducción al absurdo y análisis de casos. • Conocer la utilidad de la técnica de avance rápido en la resolución no óptima o aproximada de problemas complejos, analizando el compromiso exactitud/complejidad que se plantea. Tema 4. Backtracking • Comprender los fundamentos de la técnica de diseño de algoritmos basada en backtracking, razonando sobre la idea subyacente de recorrido implícito en árbol de soluciones. • Ser consciente de la gran flexibilidad que ofrece backtracking en cuanto a distintos tipos de árboles, problemas a resolver y esquemas (recursivos o no recursivos) para su implementación.

• • •

Identificar distintos tipos de problemas que se pueden resolver por backtracking, adquiriendo la capacidad de aplicarlo en problemas nuevos, determinando si su aplicación es posible y adecuada. Saber analizar el orden de complejidad de los algoritmos de backtracking, siendo capaz, al menos, de dar cotas superiores del tiempo de ejecución en el peor caso. Tomar conciencia de la necesidad de usar diferentes estrategias para reducir la complejidad computacional implícita en los algoritmos de backtracking.

Tema 5. Ramificación y poda • Comprender los fundamentos de la técnica de diseño de algoritmos de ramificación y poda, entendiéndola como una generalización de la idea de recorrido implícito en árbol de soluciones. • Distinguir y relacionar las técnicas de backtracking y ramificación y poda, analizando cuando puede ser preferible una u otra para un problema dado. • Ser capaz de aplicar ramificación y poda en problemas nuevos, comprendiendo la importancia de la heurística en la resolución eficiente de problemas de alto coste computacional. • Entender las implicaciones del compromiso que se plantea en el cálculo de cotas para una solución parcial: cálculo preciso pero lento o rápido pero inexacto. • Saber diseñar y utilizar de métodos aproximados (como, por ejemplo, heurísticas voraces) como ayuda en la resolución de problemas por ramificación y poda.

6. Metodología docente El método docente utilizado en la asignatura incluirá las siguientes actividades: •



• •

La lección magistral, como el método más ampliamente utilizado en el desarrollo de las clases de teoría; aunque no por ello el único. La asistencia es muy aconsejable, puesto que se llevarán a cabo actividades no contempladas en otros materiales, como el establecimiento de los contenidos mínimos necesarios para superar la asignatura (concepto de objetivos mínimos, ver apartado 8 evaluación). Las clases de problemas, utilizadas como un modo de apoyar la consolidación de los conocimientos teóricos. Los enunciados se entregarán de forma anticipada, y la resolución se realizará por parte de los alumnos, con la supervisión del profesor. La participación activa en las clases de problemas generará puntuación extra. Los seminarios o laboratorios cerrados, usados para la presentación y desarrollo de las actividades prácticas bajo una guía y supervisión directa del profesor. En concreto, se utilizarán para la enseñanza de los lenguajes C y C++. Las prácticas o laboratorios abiertos, que permiten el trabajo autónomo de los alumnos en la elaboración de las prácticas, de manera no presencial, aunque



supervisada con cierta periodicidad (concepto de esquema tutorizado de realización de prácticas). Las tutorías, como un medio para complementar las restantes actividades, ofreciendo un apoyo directo e individualizado de los alumnos. El profesor podrá citar a los alumnos para la realización de tutorías periódicas de seguimiento del trabajo realizado.

7. Temporalización o cronograma Programa de teoría

ALGORITMOS Y ESTRUCTURAS DE DATOS PARTE I: ESTRUCTURAS DE DATOS Tema 0. Estructuras de datos y algoritmos Tema 1. Abstracciones y especificaciones Tema 2. Conjuntos y diccionarios Tema 3. Representación de conjuntos mediante árboles Tema 4. Grafos PARTE II: ALGORÍTMICA TÉCNICAS DE ANALISIS Tema 1. Análisis de algoritmos TÉCNICAS DE DISEÑO Tema 2. Divide y vencerás Tema 3. Algoritmos voraces Tema 4. Backtracking Tema 5. Ramificación y poda

Tiempo (horas) 60 30 1 6 7 7 9 30 10 10 20 5 5 6 4

Mínimo (horas) 53 27 0 5 6 7 9 26 9 9 17 4 4 5 4

Programa de prácticas Tiempo presencial (horas) ALGORITMOS Y ESTRUCTURAS DE DATOS 28 SEMINARIOS DE PROGRAMACIÓN 14 Seminario 1. Programación en C 8 Seminario 2. Programación en C++ 6 Seminario 3. Especificaciones formales algebraicas 2* PRÁCTICAS DE PROGRAMACIÓN 6 Práctica 1. Análisis y diseño de estructuras de datos 3 Práctica 2. Eficiencia, evaluación y predicción 3 PRÁCTICAS DE PIZARRA 8 * No se suman al total, al tratarse de prácticas optativas.

Dedicación alumnos (horas aprox.) 100

4* 100 60 40

Créditos equival. (aprox.) 6 1,4 0,8 0,6 3,8 2,3 1,5 0,8

8. Evaluación 8.1 Evaluación del aprendizaje En este curso académico, en que la asignatura se encuentra inmersa en un plan piloto de adaptación al EEES, se utilizará en esquema mixto de evaluación del aprendizaje, en el que se toma como punto de partida el esquema tradicional y, sobre él, se añaden formas novedosas de evaluación. En el apartado 7.1.1 se detalla el esquema tradicional, y en el 7.1.2 las novedades añadidas en el mixto. 8.1.1 Esquema tradicional de evaluación (punto de partida) La nota final de la asignatura será un promedio entre la nota total de prácticas y la nota total del examen. La nota total de prácticas contará un 50% y la de examen un 50%. Ambas partes deben estar aprobadas por separado. Teoría Se realizarán dos exámenes parciales eliminatorios, en la modalidad teórico-práctico. La nota total del examen se obtendrá promediando las notas de ambos parciales. El primer parcial corresponde a la parte de estructuras de datos y contará un 50% en el total. El segundo parcial corresponde a la parte de análisis y diseño de algoritmos y contará un 50%. Para obtener el promedio, se requiere que la nota de cada parcial sea como mínimo de 4 sobre 10. Prácticas La nota total de prácticas será un promedio de la nota obtenida en las distintas prácticas de la asignatura. Para calcular el promedio, cada una de las partes (por separado) debe tener como mínimo un 5 sobre 10. En otro caso las prácticas se consideran no aprobadas. La evaluación de las prácticas se concretará cuando se entregue a los alumnos el enunciado de las mismas. 8.1.2 Nuevo esquema de evaluación (esquema tradicional + añadidos) •

Se realizarán dos exámenes parciales, en la modalidad teórico-práctico. La nota total del examen se obtendrá promediando las notas de ambos parciales. El primer parcial corresponde a la parte de estructuras de datos y contará un 50% en el total. El segundo parcial corresponde a la parte de análisis y diseño de algoritmos y contará un 50%. Para obtener el promedio, se requiere que la nota de cada parcial sea como mínimo de 4 sobre 10. El aprobado global en teoría se establece en 5.



Se mantendrá la nota de un parcial aprobado hasta la convocatoria de septiembre incluida. Se aprueba un parcial con una nota mínima de 5 sobre 10.



La superación de la práctica opcional de especificaciones algebraicas supone eliminar la materia correspondiente para el examen.



Para la superación de las prácticas podrá haber varios esquemas de trabajo posibles:

a)

Se realizarán dos prácticas con carácter obligatorio, similares para todos los alumnos: Práctica 1: Implementación y manejo de estructuras de datos. Práctica 2: Eficiencia, evaluación y predicción. Es necesario realizar ambas prácticas y aprobarlas por separado (nota mínima un 5 sobre 10). Cabría la posibilidad de que esas prácticas pudieran descomponerse en subapartados, referidos cada uno de ellos a cada uno de los temas de teoría.

b)

Se propondrán diferentes prácticas a cada alumno, que deberán versar sobre los contenidos de la materia teórica de la asignatura. Dependiendo de la modalidad del trabajo, se establecerán los requisitos para su superación.



Además se podrían proponer diferentes sistemas complementarios de evaluación de la materia teórica (prácticas, trabajos opcionales relativos a determinados temas de la asignatura...). En su caso, la superación de cada trabajo opcional conllevaría la superación de la materia teórica del tema correspondiente.



Los alumnos podrán obtener hasta un punto, a sumar a la nota de teoría (una vez aprobada la asignatura), mediante la resolución de problemas en la pizarra en clases de problemas. Esta puntuación adicional no es contabilizada como satisfacción de objetivos mínimos del examen.



Adicionalmente y como actividad voluntaria (aunque muy recomendable para los estudiantes), se preparará a los alumnos para participar en el concurso internacional de programación ACM International Collegiate Programming Contest. Para ello se ofrecerá un curso de promoción educativa (“Preparación para el concurso Internacional ACM de programación para estudiantes universitarios”) y un concurso de programación (Olimpiadas Murcianas de Programación) a nivel local. Los alumnos ganadores recibirán como premio la participación en el concurso internacional (SWERC'2008) con los gastos pagados, siempre que ello sea factible. A la nota final de la asignatura (una vez aprobada) se le sumará 0,5 puntos a aquellos alumnos que hayan realizado el curso de promoción educativa y, por consiguiente, hayan participado en la Olimpiadas de Programación.



Si se aprueba una de las dos partes de la asignatura (teoría o prácticas), se conservará la nota de dicha parte hasta que se logre superar la parte pendiente.

9. Bibliografía

9.1 Bibliografía básica • • •

Ginés García Mateos, Joaquín Cervera López, Norberto Marín Pérez y Domingo Giménez Cánovas. «Algoritmos y Estructuras de Datos, Volumen I: Estructuras de Datos». Diego Marín, 2003. Domingo Giménez Canovas, Joaquín Cervera López, Ginés García Mateos y Norberto Marín Pérez. «Algoritmos y Estructuras de Datos, Volumen II: Algoritmos». Diego Marín, 2003. A.V. Aho, J.E. Hopcroft y J.D. Ullman. «Estructura de datos y algoritmos». Addison-Wesley, 1988.

9.2 Bibliografía complementaria •

Brassard, G.; Bratley, P.: Fundamentos de algoritmia. Prentice-Hall, 1998.



Weiss, M.A.: Estructuras de datos y algoritmos. Addison-Wesley, 1995.



Martí, M.; Ortega, Y.; Verdejo, A.: Estructuras de datos y métodos algorítmicos: ejercicios resueltos. Prentice Hall, 2004.



Baase, S.; Van Gelder, A.: Computer algorithms. Introduction to Design and Analysis. Addison-Wesley, 2000.



Cormen, T.H.; Leierson, C.E.; Rivest, R.L.; Stein, C.: Introduction to algorithms, second edition. The MIT Press, 2001.



Wirth, N.: Algoritmos y estructura de datos. Prentice-Hall, 1987.



Heileman, G.L.: Estructuras de Datos, Algoritmos y Programación orientada a Objetos. McGraw-Hill, 1997.



Hoorobeek, I.V.: Algebraic Specifications. From Many-Sorted Algebras to a Practical Specification Language. K.U. Leuven, Dept. of Computer Science, 1985.



Joyanes, L.; Zahonero, I.: Estructura de datos. McGraw-Hill, 1998.



Mehlhorn, K.: Data Structures and Algorithms. Springer-Verlag, 1984.



Peña, R.: Diseño de programas. Formalismo y abstracción. Prentice-Hall, 1997.

• •

Kernighan, B.W., Ritchie, D.M.: El lenguaje de programación C. PrenticeHall, 1991. Stroustrup, B.: El lenguaje de programación C++. Addison Wesley, 1998.

V. CONCLUSIONES Entendemos y consideramos que este trabajo realmente no está del todo concluido. A lo largo del nuevo curso 2007-2008, seguiremos trabajando en ello en un proyecto piloto tipo B, lo que permitirá aplicar lo anterior, siempre abierto a nuevas ideas y opciones.