Algorítmica

La asignatura Algorítmica (cat: Algorismia; eng: Algorithmics) es una asignatura obligatoria de la especialidad de Computación del Grado en Ingeniería Informática impartido por la FIB.

Este blog funciona como web auxiliar de las herramientas disponibles en la Web de la FIB. Los avisos y notas se publicarán en el Racó. La información general (temario, método de evaluación, ...) está disponible en la Guía Docente de la asignatura.

martes, 11 de octubre de 2011

Un nuevo blog y anotación de PDFs en Crocodoc

Un compañero de la asignatura, Siegfried Gevatter, me envia un link a su blog, donde mantiene sus apuntes de EDA y de otras asignaturas. Gracias Siegfried!
Si alguien más se anima, podemos ir recopilando una lista de enlaces a páginas web  de interés para la asignatura, como el blog de Siegfried, a través de este blog o en la página de Facebook de la asignatura.

Recientemente he descubierto un sitio web llamado Crocodoc en el que se pueden guardar documentos (al estilo de Google Docs o Dropbox) con la particularidad de que permite hacer anotaciones. Estoy experimentando con esta nueva herramienta y mi idea es intentar poneros mis correcciones a vuestros ejercicios on-line. El procedimiento vendría a ser así: 1) un estudiante me envia un documento PDF con su solución a un ejercicio; 2) yo lo cargo en Crocodoc.com y le hago anotaciones: 3) Crocodoc me proporciona una URL aleatoria para el documento anotado y yo le envío esa URL al estudiante via email; 4) el estudiante accede al documento anotado mediante la URL desde cualquier navegador.

Así que si recibís un mensaje mío (desde alg-at-lsi.upc.edu) con una URL a un documento en Crocodoc.com ya sebéis de que va ...

viernes, 7 de octubre de 2011

Un ritmo endiablado de trabajo

Yo confiaba en poder ir generando apuntes o transparencias sobre los diferentes temas a medida que avanzara el curso, y así lo explicaba en una entrada del blog. ¡Qué optimismo infundado! Preparar unos buenos apuntes o transparencias requiere tiempo y cuidado, y con mis obligaciones actuales a duras penas conseguiré preparar e impartir correctamente mis clases e ir evaluando los diferentes ejercicios, prácticas, etc. de los estudiantes.

Por suerte hay material escrito abundante, sean libros, transparencias de otras asignaturas, tutoriales, etc.
que pueden "suplir" el que no pueda ofrecerles unos apuntes/transparencias en condiciones y específicos de la asignatura a mis alumnos. Podría decir que esto es para que ejerciten las competencias de "Trabajo Autónomo" y "Uso Solvente de las Fuentes de Información", pero no cuela :)

martes, 20 de septiembre de 2011

Repaso de Conceptos Algorítmicos Básicos (2)

Pinchando en los enlances podéis descargaros las transparencias sobre análisis de algoritmostransparencias sobre heaps y heapsort que he preparado para el primer capítulo del temario.  En breve, confío en tener transparencias para los otros temas que trataremos a lo largo del curso.

Siguiendo con el tema de animaciones, applets, etc. podéis visitar  esta página Web con descripciones de los heaps, sus algoritmos y simulaciones interactivas. Una búsqueda en Internet "applet heap" o "applet heapsort" os conducirá a ésta y otros cientos de páginas que ilustran los algoritmos que hemos visto en clase. Si sólo buscáis los términos "heap" o "heapsort" encontraréis descripciones en pseudocódigo, Java, C++, etc.

lunes, 19 de septiembre de 2011

Animaciones interactivas sobre árboles binarios de búsqueda

Un applet (escrito con Flash) que muestra el funcionamiento de los AVLs. Con las opciones puede ponerse o quitar el sonido, reducir o eliminar los "rebotes" durante las inserciones, consultas, etc. y, lo más interesante, mostrar el factor de equilibrio asociado a cada nodo.

Otros applets sobre diversas variantes de árboles binarios de búsqueda, incluyendo los standard (BSTs), los podéis encontrar aquí.

jueves, 8 de septiembre de 2011

Vídeos docentes ... o no?

Quizás me anime a preparar videos para algunos temas de la asignatura. Quizás no. El mayor problema para este proyecto es el escaso tiempo del que dispongo. Y la elaboración de un video docente de calidad exige bastante tiempo.

En YouTube podéis encontrar una infinidad de videos con sesiones de teoria de todo tipo de  materias, incluyendo las que nos ocupan en esta asignatura. P.e. los videos del curso Introduction to Algorithms del prestigioso MIT (el enlace es a la primera sesión del curso; hasta el minuto 17 el profesor Leiserson explica a sus alumnos detalles "logísticos" del curso y se pueden saltar. Otras muchas universidades, la UPC también, distribuyen materiales docentes audiovisuales grauitamente en Internet.

Además de animaros a usar estos recursos (de paso: pueden seros útiles para mejorar vuestro nivel de inglés) para estudiar la asignatura, pueden inspiraros para el trabajo que tendréis que presentar a final de curso. Además del breve resumen escrito, tendréis que preparar un material complementario y una de las opciones posibles es elaborar un pequeño video (de 10-15 minutos).

Entre tanto, y a falta de videos docentes :-P, os dejo aquí una transparencias sobre Ánalisis de Algoritmos (PDF, 126.1 KB).

martes, 19 de julio de 2011

Repaso de Conceptos Algorítmicos Básicos

En el primer tema de la asignatura repasaremos conceptos y técnicas básicos tales como
el análisis del caso peor, la notación asintótica, el esquema de divide y vencerás, y algunas
técnicas de análisis de algoritmos recursivos. También haremos un repaso de algunas
estructuras de datos fundamentales: los árboles de búsqueda (estándar y balanceados),
las tablas de dispersión (hash) y los heaps. Por último recordaremos la terminología sobre grafos que después usaremos a lo largo del curso, y veremos los esquemas de recorridos en anchura (breadth-first search) y profundidad  (depth-first search) en grafos.

Cientos de applets y animaciones en la web nos ayudan a visualizar algunos de los algoritmos y estructuras de datos que repasaremos en este tema, p.e. este applet para el recorrido en profundidad.

Si encontráis applets y animaciones interesantes podéis compartir el link añadiéndolo en un comentario.

sábado, 25 de junio de 2011

Algunos documentos

Los siguientes enlaces os permiten descargaros las colecciones de problemas de
Introducción a los Esquemas Algorítmicos (IEA) y de Análisis y Diseño de Algoritmos (ADA), dos antiguas asignaturas de la Ingeniería en Informática, muy afines a Algorítmica.
A lo largo del curso trabajaremos con ejercicios de estas colecciones.

También podéis descargaros una versión preliminar pero bastante
completa del libro Algorithms (PDF, 1.9 MB), escrito por S. Dasgupta, C.H. Papadimitriou y U.V. Vazirani. Este libro es una de las referencias de la bibliografía básica de la asignatura.

martes, 7 de junio de 2011

De la Wikipedia

Wikipedia es siempre un buen punto de comienzo. Buscando "algorithm" o "algorithmics" en la Wikipedia en inglés encontramos el siguiente texto:


Algorithm
From Wikipedia, the free encyclopedia


To comply with Wikipedia's guidelines, the introduction of this article may need to be rewritten. Please discuss this issue on the talk page and read the layout guide to make sure the section will be inclusive of all essential details. (April 2011).


Flow chart of an algorithm (Euclid's algorithm) for calculating the greatest common divisor (g.c.d.) of two numbers a and b in locations named A and B. The algorithm proceeds by successive subtractions in two loops: IF the test B ≤ A yields "yes" (or true) (more accurately the number b in location B is less than or equal to the number a in location A) THEN the algorithm specifies B ← B - A (meaning the number b - a replaces the old b). Similarly IF A > B THEN A ← A - B. The process terminates when (the contents of) B is 0, yielding the g.c.d. in A. (Algorithm derived from Scott 2009:13; symbols and drawing style from Tausworthe 1977).
In mathematics and computer science, an algorithm (i /ˈælɡərɪðəm/) is an effective method expressed as a finite list[1] of well-defined instructions[2] for calculating a function.[3] Algorithms are used for calculation, data processing, and automated reasoning.
Starting from an initial state and initial input (perhaps null),[4] the instructions describe a computation that, when executed, will proceed through a finite [5] number of well-defined successive states, eventually producing "output"[6] and terminating at a final ending state. The transition from one state to the next is not necessarily deterministic; some algorithms, known as randomized algorithms, incorporate random input.[7]"