UNIDAD 1. Introducción al Lenguaje Python
Introducción. Tipos de datos básicos. Control del flujo de programas. Branching. Iteraciones. Funciones. Recursión. Módulos y Packages: uso y creación. Manejo de Archivos. Estructuras de datos: Tuplas. Listas. Cadenas. Diccionarios. Conjuntos. Testing y Debuging. Excepciones. Aserciones. Clases y programación orientada a objetos. Tipos abstractos de datos. Herencia. Polimorfismo.
UNIDAD 2. Nociones de complejidad, técnicas algorítmicas, estructuras y graficación de datos
Introducción a la complejidad algorítmica. Clases de complejidad. Comparaciones de las clases de complejidad. Algoritmos de búsqueda. Búsqueda lineal y usando indirección para acceder a los elementos. Búsqueda binaria y aprovechamiento de supuestos. Algoritmos de ordenamiento. Mergesort. Aprovechamiento de funciones como parámetros. Ordenamiento en Python. Manejo de datos y gráficos en Python. Ejemplos.
UNIDAD 3. Python en el Contexto de los Problemas Clásicos de Optimización*
Problema de la Mochila. Algoritmos Greedy. Problemas de optimización en grafos. Caminos mínimos. Cliques. Min Cut. Algoritmos Depth-First Search y Breadth-First Search. Programación Dinámica. Secuencia de Fibonacci. Problema de la Mochila 0/1. Programación Dinámica y Divide y Conquista.
UNIDAD 4. Python en el Contexto de Inteligencia Artificial*
Nociones e introducción al Aprendizaje Automático. Aprendizaje Supervisado. Regresión lineal. Cuadrados Mínimos. Interpretación estadística. Aprendizaje No Supervisado. Vector de Características. Distancia Métrica. Clustering. Algoritmo de Clustering K-Means.