Você está na página 1de 4

ESCUELA COLOMBIANA DE INGENIERÍA

ASIGNATURA Teoría de la programación


.Código mnemónico TPRO

V OBJETIVOS

 Aprender a especificar, diseñar derivando y verificar algoritmos (tanto iterativos


como recurrentes) que cumplan con las especificaciones dadas.
 Aprender a diseñar y construir algoritmos correctos y también eficientes
temporal y espacialmente estimando sus respectivas medidas de eficiencia
temporal y espacial.
 Conocer y aplicar las técnicas y problemas conocidos por la comunidad
informática para resolver y diseñar soluciones de otros problemas algorítmicos
que surgen en la práctica de la programación.

VI JUSTIFICACIÓN

La corrección y eficiencia de los sistemas informáticos son dos propiedades


fundamentales para la construcción profesional del software (sistemas de programas
de computador). La derivación de algoritmos en sus modalidades transformativa y
predicativa son metodologías bien conocidas que han sido usadas con éxito para
desarrollar de manera correcta nuevos e importantes algoritmos así como también
para presentar de manera más racional algoritmos ya conocidos. Fueron respectiva e
independientemente desarrolladas por Edsger W. Dijkstra y Eric Hehner como
consecuencia de la definición formal y lógica de un lenguaje de programación y de
la búsqueda de una metodología para el desarrollo preciso de programas
secuenciales y concurrentes.

II. REQUISITOS ACADÉMICOS (nombres y códigos mnemónicos de las asignaturas requisito):

Matemáticas discretas (MDIS)


Programación modular imperativa (PIMO)

III. INTENSIDAD SEMANAL (en horas)

Clase 3.0
Laboratorio 0.0
.Estudio 6.0
Total 9.0
CRÉDITOS
ACADÉMICOS: 3

VII BIBLIOGRAFÍA

Referencias principales:
1. Bohórquez Villamizar, Jaime. Diseño de algoritmos. Primera Edición. Editorial
de la Escuela Colombiana de Ingeniería. 2006.

Otras referencias:
1. Balcázar, J.L. Programación Metódica. McGraw Hill. 1993.
2. Brassard G., P. Bratley. Fundamentals of Algorithms, Prentice Hall. 1996.
3. Cardoso, R. Verificación y Desarrollo de Programas. Ediciones Uniandes.
Bogotá, 1991.
4. Cohen, E. Programming in the 1990’s. Springer Verlag, New York, 1990.
5. Cormen, T.H., C.E. Leiserson, R.L. Rivest. Introduction to Algorithms, MIT
Press, Mc Graw Hill. 1990.
6. Dijkstra, E.W. A Discipline of Programming. Prentice Hall. 1976.
7. Dijkstra, E.W., W.H.J. Feijen [1984] A Method of Programming, Addisson
Wesley.
8. Dijkstra, E.W. (ed.) Formal Developments of Programs and Proofs, Addisson
Wesley. 1990.
9. Feijen, W.H.J., A.J.M. van Gasteren, D. Gries, J. Misra. Beauty is our Business:
A Birthday Salute to Edsger Dijkstra, Springer Verlag. 1990.
10. Gries, D. The Science of Programming. Springer Verlag, New York, 1981.
11. Gries, D., F.B. Schnider. A Logic Approach to Disctrete Math, Springer Verlag.
1993.
12. Harel D. Algorithmics, Addisson Wesley, 1987.
13. Kaldewaij, A. Programming: The Derivation of Algorithms. Prentice Hall
International, London, 1990.
14. Manber, U. Introduction to Algorithms, Addisson Wesley. 1989.
15. Polya G. Mathematics and Plausible Reasoning, Volume I: Induction and
Analogy in Mathematics, Princeton University Press. 1954.

VIII CONTENIDO PROGRAMÁTICO RESUMIDO

Especificación. Derivación de programas iterativos y recurrentes. Eficiencia de


algoritmos. Técnicas avanzadas de derivación. Métodos generales de diseño de
algoritmos. Divide y vencerás. Métodos voraces. Programación dinámica.

VI. CONTENIDO DETALLADO

1. Introducción.
¿Por qué una ciencia de programación? Especificación.
2. Derivación de programas iterativos y recurrentes simples.
Derivación de ciclos a partir del invariante. Derivación de programas recurrentes.
Subprogramas: comandos modulares.

IX Concepto de eficiencia de un algoritmo


Nociones básicas. Conceptos de tiempo en peor caso y caso promedio. Análisis y
estimación de tiempo en peor caso. Estimación por consideración de algunas ecuaciones
de recurrencia usuales.

3. Técnicas avanzadas de derivación de algoritmos.


Fortalecimiento de invariantes. Balance de información. Corrección de
programas que modifican arreglos.

X Métodos generales de diseño de algoritmos


Elementos de un problema algorítmico: Divide y vencerás.

4. Métodos Voraces.
Principios generales de optimización de algoritmos. Arboles generadores de
costo mínimo. Caminos de costo o distancia mínimos.

5. Programación dinámica
Planteo general. Producto óptimo de matrices. Problema del morral.
Rutas óptimas en un grafo.

XI METODOLOGÍA

Este curso se apoya en el método de enseñanza de la lógica cálculativa y las


matemáticas discretas (tal como lo hacen los cursos LCAL y MDIS) con principios
explícitos y complementarios de solución de problemas inspirados por las técnicas
de razonamiento plausible de Polya. Además pretende enriquecer los principios y
heurísticas para derivar algoritmos de acuerdo con el estilo calculativo de
programar basado en las teorías de corrección de programas de E. Dijkstra y E.
Hehner. Estos principios permitirán al programador proponer soluciones
algorítmicas en términos de especificaciones lógicas e invariantes de ciclos así
como interpretar los cálculos que realiza para obtener su programa,
proporcionándole (además de métodos de cálculo), guías para seleccionar las
manipulaciones de fórmulas apropiadas para lograr llevar a cabo su tarea. Así
mismo, las técnicas clásicas de diseño de algoritmos (algoritmos voraces, divida y
conquiste, programación dinámica, etc.) serán enriquecidas por este enfoque en
consideración a su corrección y diseño formal.
Los estudiantes deben leer y preparar por anticipado los temas de acuerdo con el
programa de estudios. Se espera y estimula una participación muy activa en clase en
la presentación y discusión de los temas. Las tareas son el medio para desarrollar
destrezas de escritura matemática, y preparan para enfrentar las preguntas de los
exámenes. El curso se considera como un proceso que dura un semestre, donde las
oportunidades de aprender y demostrarlo son múltiples, los criterios de evaluación
responden a la evidencia de haber aprendido los diferentes temas.

XII EVALUACIÓN

Evaluaciones. Se realizan principalmente como una serie de tareas cortas y


frecuentes para evaluar (no confundir con calificación) su comprensión y
aprendizaje. Se devuelven revisadas y corregidas lo más pronto posible. Su
desempeño se registra para evaluar su progreso, pero solamente su cumplimiento,
puntualidad y constancia inciden en la calificación (derecho a equivocarse para
aprender).

Calificación Se realizan tres exámenes parciales además de un examen final que en


conjunto definen el 70% de la calificación. El cumplimiento y constancia con las
evaluaciones así como la participación en clase se consideran para generar el 30%
restante de la calificación.

Exámenes Se recomienda no faltar a los exámenes programados por ningún motivo.


Las ausencias sólo podrán ser justificadas por razones de peso demostradas. La
ausencia de todas maneras tendrá consecuencias pues cualquier alternativa que se
plantee será en general más exigente que la prueba original.

Você também pode gostar