Inf143 PDF
Inf143 PDF
Inf143 PDF
1. Problema
El estudio de los desafíos que representan los problemas sobre todo reales es un camino eficiente para
mejorar las habilidades en algoritmos y programación. Muchos de estos problemas reales se encuentran
precisamente en los sitios del juez en línea, al alumno que resuelva estos problemas y encare la forma de
evaluación de estos sitios, le permitirá mejorar la destreza en la programación.
2. Objeto de la Materia
3. Objetivos generales
Se presenta en primera instancia los estilos de programación existentes además de realizar una revisión
de los sitios de juez existentes. Seguidamente se repasa la complejidad espacial de algoritmos para
posteriormente comparar estos algoritmos y ver cuál es el más eficiente. Luego se estudia la
especificación de programas y la programación por contratos para intentar formalizar el acuerdo entre el
programador y el analista de sistemas. Finalmente se hace una revisión de diferentes problemas reales
existentes los cuales se encuentran en diferentes temas de la matemática y la computación.
4. Competencias
El estudiante aprende a desarrollar programas reales, tomando en cuenta la optimización de los recursos de
tiempo y espacio de programación.
5. Programa Sintético
6. Contenidos Analíticos
Tema 1. Estilo de programación. Consideraciones para resolver los problemas de las páginas:
http://acm.uva.es/problemset o http://www.programming-challenges.com
Tema 2. Análisis de algoritmos. Notación O(n), asintótica condicional, omega, theta. Análisis de
estructuras de control y de recurrencia.
Tema 3. Matemáticas. Clase Big Integer del Java. Combinatoria. Teoría de números.
Tema 4. Procesamiento de Cadenas. Solución con Librerías. Algoritmo de Knuth-Morris-Pratt.
Emparejamiento de Cadenas (String Matching).
Tema 5. Codificación con miras a la prueba. Especificación de programas. Aplicaciones de las
invariantes. Diseño por contratos. Prueba estática y dinámica (JML).
Tema 6. Búsqueda y clasificación. Algoritmos de búsqueda. Algoritmos de Ordenación. Comprobación
experimental del O(n). Problemas.
Tema 7. Estructura de Datos. Estructuras elementales. Tablas hash. Problemas.
Tema 8. Recorrido de Grafos. Flood Fill - Etiquetando/Coloreando los Componentes Coloreados.
Ordenación Topológica (de un grafo a cíclico dirigido). Verificando Grafos bipartitos.
Tema 9. Programación Dinámica. Introducción. Ejemplos clásicos. Ejemplo no clásicos. Procesamiento de
cadenas con programación dinámica. Técnicas avanzadas de programación dinámica.
7. Modalidad de Evaluación
8. Métodos y Medios
9. Bibliografía