Taller 09:00 – 12:00 Presencial 📍 Bariloche

Módulo 2

Fundamentos de lenguajes de programación para computación cuántica.

DA Dr. Alejandro Díaz Caro 📅 Jueves 24 de septiembre de 2026
Resumen del módulo
El curso presenta ideas básicas de los lenguajes de programación para computación cuántica, en los paradigmas de control clásico y cuántico. Aborda la intersección entre la teoría de lenguajes, la lógica y la computación cuántica, proporcionando las bases para comprender cómo las estructuras de control y los formalismos gráficos —como el ZX-calculus— definen el futuro de la programación en este paradigma.

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.

Objetivo
Dar un panorama general de los fundamentos de lenguajes para computación cuántica, los últimos desarrollos del campo y las dificultades que actualmente se investigan.
Identificar las diferencias fundamentales entre el paradigma imperativo basado en circuitos y el enfoque funcional en computación cuántica.
Interpretar diagramas de ZX-calculus como una representación semántica de procesos cuánticos.
Reconocer los desafíos teóricos y prácticos al integrar control clásico sobre datos cuánticos.
Evaluar el estado actual de los lenguajes de programación cuántica frente a las necesidades de la investigación en el área.
Conceptos clave del módulo

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.

Contenidos
El módulo se desarrolla en dos días, cada uno con tres bloques de 1.5 horas, avanzando desde los fundamentos paradigmáticos hasta los desafíos abiertos del campo.
Día 1 — Paradigmas y Control
BLOQUE 1 · 1.5 hs Circuitos cuánticos y el modelo imperativo
El modelo de circuito cuántico como paradigma imperativo de programación.

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
El paradigma funcional aplicado a la computación cuántica.

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: QuipperProto-QuipperQML.

Semántica denotacional de programas cuánticos con efectos de medición.
Día 2 — Semántica y Desafíos
BLOQUE 3 · 1.5 hs Límites del control clásico: quantum switch y control cuántico
¿Qué ocurre cuando el orden de aplicación de operaciones se convierte en dato 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
Motivación: ¿por qué un lenguaje gráfico para la computación cuántica?
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
El problema de la verificación: ¿cómo garantizar la corrección de un programa cuántico?
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
Panorama actual de los lenguajes de programación cuántica: Qiskit, Cirq, Q#, Quipper, OpenQASM 3.
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.
Metodología
El módulo consta de 9 horas de exposición teórico-práctica. Se combinan clases magistrales con discusiones guiadas sobre los papers y problemas abiertos del campo. El énfasis está en la comprensión conceptual profunda de los formalismos y en el análisis crítico del estado actual de los lenguajes cuánticos.

Clases teórico-prácticas – Análisis de papers PyZX (Python)OpenQASM 3Q# · Quipper · Proto-QuipperDiscusión crítica

Resultados Esperados

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.

Criterios de aprobación
Los criterios específicos de evaluación serán informados durante el dictado del módulo. La asistencia es condición necesaria para la acreditación y emisión del certificado co-titulado UNRN–UNAHUR.
Asistencia mínima requerida: 80%
Bibliografía
Nielsen, M. A. & Chuang, I. L. (2010). Quantum Computation and Quantum Information. Cambridge University Press. (Capítulos introductorios sobre circuitos)
Coecke, B. & Kissinger, A. (2017). Picturing Quantum Processes: A First Course in Quantum Theory and Diagrammatic Reasoning. Cambridge University Press. (Para ZX-calculus)
Selinger, P. (2004). Towards a quantum programming language. Mathematical Structures in Computer Science, 14(4).
Selinger, P. & Valiron, B. (2009). Quantum Lambda Calculus. En: Semantics Techniques in Quantum Computation. Cambridge University Press.
Artículos seleccionados sobre quantum control flow. — material actualizado proporcionado durante el curso.

Disertantes