Programa

Fundamentación

Los profesionales en Estadística y Ciencia de Datos necesitan contar con habilidades avanzadas de programación, que les permitan abordar problemas complejos y desarrollar soluciones eficientes y robustas.

La asignatura Programación 2 introduce a los estudiantes a conceptos y prácticas avanzadas de la programación, incorporando herramientas y paradigmas que resultan fundamentales para el desarrollo profesional en Estadística y Ciencia de Datos.

La asignatura profundiza en los principales paradigmas de programación (imperativo, orientado a objetos y funcional), promoviendo el desarrollo de soluciones estructuradas, reutilizables, robustas y escalables. Además, se abordan conceptos fundamentales de estructuras de datos y algoritmos, relevantes para el diseño y análisis de programas eficientes, así como para la comprensión de la complejidad computacional. Se focaliza en el lenguaje Python, ampliamente utilizado en la industria y la academia por su versatilidad, su ecosistema de librerías y su capacidad para integrarse con diversas tecnologías.

Dictada en el segundo cuatrimestre del primer año, Programación 2 completa los contenidos del área de Fundamentos Computacionales en el Ciclo de Formación Técnica en Estadística y Ciencia de Datos, iniciada en el primer cuatrimestre con Programación 1. De este modo, consolida las competencias informáticas de los estudiantes y los prepara para afrontar asignaturas más avanzadas y desafíos profesionales que requieren un dominio sólido de la programación. Asimismo, fomenta buenas prácticas de desarrollo de código, el uso eficiente de los recursos computacionales y el pensamiento crítico en la resolución de problemas.

Objetivos

Que los estudiantes logren:

  • analizar problemas computacionales y formular soluciones algorítmicas adecuadas;
  • implementar esas soluciones mediante el desarrollo de programas en Python, seleccionando estructuras de datos apropiadas y evaluando la eficiencia de los algoritmos involucrados;
  • identificar y aplicar los principales paradigmas de programación (imperativo, orientado a objetos y funcional) cuando resulte adecuado, integrándolos de manera coherente y ponderando sus ventajas y limitaciones;
  • utilizar e integrar módulos y librerías que permitan extender, organizar y mejorar las funcionalidades de sus programas.

Contenidos

Unidad 1: Introducción a Python
Lenguaje Python y su ecosistema. Uso de la interfaz Positron. Sintaxis de Python. Expresiones. Variables y asignaciones. Tipos de datos elementales. Operadores numéricos, de comparación y lógicos. Funciones. Ejecución condicional de código. Bucles definidos y no definidos. Listas, tuplas y diccionarios. Uso de código externo. Módulos y librerías. Librería estándar de Python. Instalación y gestión de librerías. Noción de ambiente virtual. Scripting. Lectura y escritura de archivos de texto plano.
Unidad 2: Programación orientada a objetos
Principios fundamentales. Objetos, clases e instancias. Atributos y métodos. Encapsulamiento. Propiedades públicas y privadas. Atributos y métodos de clase. Herencia. Polimorfismo. Sobrecarga de operadores. Excepciones a medida.
Unidad 3: Programación funcional
Principios fundamentales. Funciones como ciudadanos de primera clase. Funciones puras. Funciones anónimas. Closures. Recursión. Funciones de orden superior: map, filter, reduce. Comprensiones como alternativas idiomáticas a map y filter. Aplicación parcial de funciones. Decoradores. Evaluación estricta y no estricta. Evaluación perezosa (lazy) e inmediata (eager). Generadores. Iterables e iteradores.
Unidad 4: Estructuras de datos lineales y análisis de algoritmos
Concepto de estructuras de datos y algoritmos. Complejidad computacional y notación Big O. Arreglos. Operaciones básicas sobre arreglos: lectura, búsqueda, inserción y eliminación. Búsqueda lineal y binaria. Estructuras lineales: pilas, colas, listas enlazadas y listas doblemente enlazadas. Operaciones básicas sobre estructuras lineales. Algoritmos de ordenamiento: bubble sort, insertion sort, selection sort, quick sort y merge sort.
Unidad 5: Estructuras de datos no lineales
Concepto y representación de estructuras no lineales. Árboles: terminología, tipos y operaciones básicas. Recorridos de árboles. Grafos: definición, representaciones y operaciones básicas. Recorridos de grafos.