Cursos disponibles

NOMBRE: ALGORITMOS Y ESTRUCTURAS DE DATOS.

HRS./SEM.: 4

Objetivo: 

Estudiar métodos de diseño de algoritmos y de desarrollo de programas. Conocer los principales algoritmos y estructuras de datos, incluyendo el análisis informal de su desempeño.


1.     Recursividad. Dividir para reinar, nociones de análisis de algoritmos, planteamiento y resolución de ecuaciones de recurrencia, programación dinámica, conceptos de orientación a objetos.

2.     Estructuras de datos básicas. Arreglos, punteros, listas enlazadas, árboles.

3.     Tipos de datos abstractos. Concepto de encapsulamiento, listas, pilas, colas.

4.     Grafos. Representación y recorrido, árbol cobertor mínimo, distancia mínima.

5.     Diccionario. Implementaciones simples, árboles de búsqueda binaria, árboles AVL, árboles 2-3, árboles B, árboles digitales, skip lists, hashing.

6.     Ordenamiento. Cota inferior, quicksort, heapsort, bucketsort, mergesort, ordenamiento externo.

7.     Búsqueda en texto. Método de fuerza bruta, Knuth & Morris & Pratt,, Boyer & Moore.

8.     Algoritmos probabilísticos.

 

Bibliografía.

 

[1]. M. A. Weiss, Data structures and problem solving using Java, Addison & Wesley, 1998.

[2]. U. Manber, Introduction to algorithms: a creative approach, Addison & Wesley, 1989.

[3]. T. Cormen, C. Leiserson y R. Rivest, Introduction to algorithms, MIT Press, 1990.

[4]. D. Knuth, The art of computer programming, vol. 1 y 3, Addison & Wesley, 1998.

 

 

Técnicas de enseñanza sugeridas

Exposición oral

(

X

)

Exposición audiovisual

(

 

)

Ejercicios dentro de clase

(

X

)

Seminarios

(

 

)

Lecturas obligatorias

(

 

)

Trabajos de investigación

(

 

)

Prácticas en taller o laboratorio

(

 

)

Prácticas de campo

(

 

)

Otras: Empleo de programas de cómputo

(

X

)

 

Elementos de evaluación sugeridos

Exámenes parciales

(

X

)

Exámenes finales

(

X

)

Trabajos y tareas fuera del aula

(

X

)

Participación en clase

(

X

)

Asistencia a prácticas

(

 

)

Otras:

(

 

)

 

 


 

Nombre de la materia

Programación de computadoras

Clave

CI1P01

Horas teoría/semana

4

Horas práctica/semana

2

Duración semanas

32

Total de horas anuales

192

Número de créditos

24

Prerrequisitos

Ninguno

 

Objetivo: Desarrollar en el estudiante la habilidad de programar computadoras utilizando el lenguaje de programación C y estructuras de datos básicas.

 

Temario:

Horas

1. Introducción a la programación de computadoras

2

2. Elementos básicos de programación en C

38

3.  Programación avanzada en C

40

4. Análisis de algoritmos

32

5. Estructuras de datos básicas

40

6. Algoritmos

40

Total

160

 

1. Introducción a la programación de computadoras. Historia de C: orígenes, estandarización y lenguajes basados en C. Ventajas y desventajas de C.

 

2. Elementos básicos de programación en C. Fundamentos de C. Entrada y salida con formato. Expresiones. Instituciones de selección. Ciclos. Tipos básicos. Arreglos. Funciones. Organización del programa.

 

3. Programación avanzada en C. Apuntadores. Apuntadores y arreglos. Cadenas. El preprocesador. Escritura de programas grandes. Estructuras, uniones y enumeraciones. Usos avanzados de apuntadores. Diseño del programa. Programación de bajo nivel. Manejo de archivos. Proyecto de programación.

 

4. Análisis de algoritmos. Principios de análisis de algoritmos. Funciones de crecimiento. Notación O grande. Recurrencias básicas. Ejemplos de análisis de algoritmos.

 

5. Estructuras de datos básicas. Tipos de datos abstractos. Arreglos. Listas ligadas. Pilas. Colas. Árboles. Árboles binarios. Árboles de búsqueda binaria. Colas con prioridad. Tablas Hash. Grafos.

6. Algoritmos.  Algoritmos de búsqueda. Algoritmos de ordenamiento. Algoritmos de cadenas. Técnicas de diseño de algoritmos: algoritmos de fuerza bruta, algoritmos glotones, algoritmos de divide-conquista, programación dinámica, backtracking, branch and bound, etc. Proyecto de programación.

 

Bibliografía básica:

-       King, K.N. C Programming a Modern Approach. Second Edition. W. W. Norton. 2008.

-       Hemant Jain. Problem Solving in Data Structures & Algorithms Using C. Hermant Jain, 2016.

-       Sedgewick, Roberto. Algorithms in C. Third edition. Addison-Wesley. 1998.

 

Bibliografía complementaria:

-       Kernighan, Brian W.; Ritchie, Dennis M. El lenguaje de programación C. Segunda edición. Pearson. 1991.

 

Sugerencias didácticas:

Exposición oral

X

Uso de plataformas educativas

X

Exposición audiovisual

X

Lecturas obligatorias

X

Ejercicios dentro de clase

X

Trabajo de investigación

X

Ejercicios fuera de clase

X

Prácticas de laboratorio

X

Seminarios

 

Búsqueda especializada en internet

X

Uso de software especializado

X

Uso de redes sociales con fines académicos

X

 

Sugerencias de evaluación:

Exámenes parciales

X

Elaboración de informes técnicos o proyectos

X

Exámenes finales

X

Participación en clase

X

Tareas fuera del aula

X

Asistencia a prácticas

X

 

 

 

Perfil profesional de quienes pueden impartir la asignatura:

Licenciatura en ingeniería en computación. Deseable haber realizado estudios de posgrado, contar con experiencia docente o haber participado en cursos o seminarios de iniciación en la práctica docente.