El campo de la computación cuántica ha trascendido el ámbito puramente físico para consolidarse como una disciplina de las ciencias de la computación. El desarrollo de lenguajes de programación adecuados es fundamental para abstraer la complejidad del hardware cuántico y permitir el diseño de algoritmos escalables.
El módulo cubre desde los paradigmas imperativos basados en circuitos hasta la programación funcional cuántica, el quantum switch, los lenguajes gráficos y la lógica cuántica computacional, con un cierre sobre el estado del arte y los desafíos abiertos del área.
Circuitos cuánticos
Modelo imperativo de programación cuántica, compuertas y secuenciación.
Prog. funcional cuántica
Tipos lineales, estados cuánticos como datos, control clásico sobre datos cuánticos.
Quantum switch
Construcción que supera los límites del control clásico, orden indefinido de operaciones.
ZX-calculus
Lenguaje gráfico para razonar sobre procesos cuánticos. Completo y universal.
Control cuántico
Superposición del orden de ejecución de operaciones cuánticas.
Lógica cuántica comp.
Sistemas de tipos y verificación formal de programas cuánticos.
BLOQUE 1 · 1.5 hs Circuitos cuánticos y el modelo imperativo
Representación de algoritmos mediante secuencias de compuertas.
Limitaciones expresivas del enfoque basado en circuitos.
Introducción a lenguajes de bajo nivel como OpenQASM y su relación con el modelo de circuito.
Comparación con el modelo clásico: similitudes y diferencias estructurales.
BLOQUE 2 · 1.5 hs Programación funcional cuántica: tipos, estados y control clásico
Tipos lineales y la restricción de no-clonación: por qué los tipos clásicos no alcanzan.
Representación de estados cuánticos como datos de programa.
El modelo de control clásico con datos cuánticos: medición como bifurcación.
Introducción a lenguajes funcionales cuánticos: Quipper, Proto-Quipper, QML.
Semántica denotacional de programas cuánticos con efectos de medición.
BLOQUE 3 · 1.5 hs Límites del control clásico: quantum switch y control cuántico
El quantum switch: superposición del orden causal de operaciones.
Ventajas computacionales del control cuántico sobre el control clásico.
Dificultades semánticas: ¿cómo dar significado a un programa con control cuántico del flujo?
Modelos teóricos para capturar el control cuántico: categorías y teoría de procesos.
Lenguajes con soporte para control cuántico: estado del arte y limitaciones actuales.
BLOQUE 4 · 1.5 hs Lenguajes gráficos: fundamentos y aplicaciones del ZX-calculus
Introducción al ZX-calculus: nodos Z (verdes), X (rojos), aristas y reescritura de diagramas.
Reglas de reescritura: fusión, copia, pi y Euler.
Completitud y universalidad del ZX-calculus: todo circuito cuántico tiene una representación en ZX.
Aplicaciones: simplificación de circuitos, corrección de errores, transpilación y optimización.
Herramientas: PyZX para trabajar con diagramas ZX en Python.
Extensiones: ZW-calculus, lenguajes gráficos para computación cuántica continua.
BLOQUE 5 · 1.5 hs Lógica cuántica computacional y verificación de programas
Tipos cuánticos: sistemas de tipos que garantizan el uso correcto de los recursos cuánticos.
El cálculo lambda cuántico (Selinger & Valiron): bases formales de los lenguajes funcionales cuánticos.
Lógica lineal y su relación con el no-clonado y el no-borrado cuántico.
Semántica de modelos de prueba y verificación automática de propiedades cuánticas.
Estado del arte en proof assistants para computación cuántica.
BLOQUE 6 · 1.5 hs Estado del arte, desafíos abiertos y discusión final
La brecha entre la teoría y la práctica: ¿qué funciona hoy en hardware real?
Desafíos abiertos en semántica, tipos y verificación para computación cuántica.
Rol del área en el ecosistema cuántico: compiladores, optimizadores y herramientas de desarrollo.
Perspectivas de investigación: quantum lambda calculus, lenguajes para corrección de errores, control cuántico.
Discusión abierta: preguntas, líneas de trabajo y oportunidades para informáticos en el área.
Clases teórico-prácticas – Análisis de papers PyZX (Python)OpenQASM 3Q# · Quipper · Proto-QuipperDiscusión crítica
Al finalizar el módulo, el estudiante será capaz de:
Identificar las diferencias entre el paradigma imperativo basado en circuitos y el enfoque funcional en computación cuántica.
Interpretar diagramas de ZX-calculus como representación semántica de procesos cuánticos.
Reconocer los desafíos al integrar control clásico sobre datos cuánticos y las limitaciones actuales.
Evaluar el estado actual de los lenguajes de programación cuántica frente a las necesidades de la investigación e identificar oportunidades para informáticos en el área.
