Skip to content

1. Inicio

Fran Ibarra edited this page Feb 3, 2025 · 1 revision

Información del curso

A lo largo del este curso, el estudiante desarrollará técnicas para diseñar, implementar, ejecutar y evaluar herramientas de software que resuelvan problemas algorítmicos a partir de especificaciones detalladas. El estudiante será capaz de desarrollar construcciones avanzadas de programación orientada a objetos y estructuras de datos fundamentales, construir código robusto, construir interfaces gráficas, y utilizar conceptos como threading, serialización y paso de mensajes.

Objetivos

  1. Comprender y aplicar técnicas básicas de mantención de código incluyendo uso de guía de estilo, modularización y sistemas de manejo de versiones (Git).

  2. Inferir un modelo de objetos para resolver problemas realistas e implementar esta solución usando técnicas de programación orientada a objetos (OOP).

  3. Utilizar y diseñar objetos iterables para resolver problemas de programación.

  4. Conocer el Paradigma de Programación Funcional a través de las herramientas de Python.

  5. Comprender y aplicar el concepto de threading para la modelación de problemas de concurrencia.

  6. Construir interfaces gráficas funcionales utilizando módulos apropiados.

  7. Utilizar técnicas para construir código robusto en un programa, como las formas de manejo de excepciones, entre otros.

  8. Utilizar el concepto de serialización para construir codificadores y decodificadores.

  9. Comprender y aplicar infraestucturas y tecnicas básicas para crear y mantener aplicaciones distribuidas, asegurando el intercambio de datos y su persistencia, entre otros.

  10. Conocer diferentes herramientas, prácticas y/o algoritmos actuales en el contexto de desarrollo de software.

  11. Comprender los resultados obtenidos al ejecutar pruebas unitarias.

Contenidos

Fundamentos de programación

  • Estructuras de datos básicas:
    • Tuplas
    • Named tuples
    • Stacks
    • Colas
    • Diccionarios
    • Sets
    • Empaquetado y desempaquetado de datos.
  • Programación Orientada a Objetos:
    • Objetos
    • Herencia
    • Polimorfismo
    • Clases Abstractas
  • Iterables:
    • Objetos iterables
    • Objetos iteradores
    • Generadores
    • Listas ligadas
  • Programación funcional
    • Paradigma
    • Funciones de mapeo, filtro y reducción
  • Manejo de errores
    • Análisis de errores
    • Tipos de excepciones
    • Levantamiento y control de excepciones

Herramientas de programación

  • Técnicas básicas de mantención de código:
    • Concepto y uso de herramientas de sistemas de manejo de versiones.
    • Uso de guías de estilo
    • Modularización
  • Threading:
    • Concepto de pseudo-paralelismo
    • Creación y sincronización de threads
    • Concurrencia
  • Interfaces Gráficas:
    • Introducción a las interfaces gráficas usando PyQt5.
    • Uso de señales para la comunicación backend y frontend.
  • I/O:
    • Manejo de bytes
    • Serialización binaria
    • Serialización en formato JSON
  • Networking:
    • Protocolos y arquitecturas de comunicación
    • Sockets
    • Modelo cliente-servidor
    • Intercambio de información
    • Sistemas distribuidos
  • Aplicaciones en Python:
    • Web Services
    • Consumo y generación de una API REST.
    • Expresiones Regulares

Bibliografía

Este curso cuenta con un libro oficial titulado Advanced Programming in Python, que se puede comprar a través de Amazon.

Información adicional acerca del libro:

  • Autores: Karim Pichara & Christian Pieringer
  • Idioma: inglés
  • Formato: paperback de 392 páginas
  • ISBN-10: 1548000892
  • ISBN-13: 978-1548000899