No sé nada sobre la teoría del aprendizaje formal, pero puedo hablar sobre los demás.
No creo que haya demasiados requisitos previos reales. Obviamente, debe sentirse cómodo con el lenguaje de programación normal y las ideas del compilador : AST, análisis estático básico, transformaciones de programas, etc. Principalmente lo que cubrirías en un curso de compiladores.
También necesitará algunos conceptos básicos de la teoría de CS : lenguajes formales, autómatas y computabilidad. La teoría de la complejidad, sin embargo, no es relevante la mayor parte del tiempo.
Luego un poco de matemática. La parte más importante es la temida “madurez matemática”: hay que sentirse cómodo con el pensamiento formal y las pruebas. Además de esto, probablemente querrás la teoría básica de conjuntos y la lógica formal.
- ¿Qué tan centrales son las pruebas y el conocimiento de las técnicas de prueba para el tema de las matemáticas?
- ¿Sería posible codificar el lenguaje de las leyes para que una computadora pueda compilar y luego razonar sobre ellas?
- ¿Por qué es interesante el isomorfismo de Curry-Howard?
- ¿Cómo se traduciría a lógica la frase en inglés “no haga A y B”?
- ¿Te parece más claro en Lojban?
Dada esta base, puede recoger todo lo demás a medida que avanza. Dependiendo de lo que le interese, puede terminar con muchas más matemáticas (teoría de categorías, álgebra universal, más lógica de la que puede mover un palo …), pero nada de eso se requiere con anticipación.
Puede aprender sobre estos temas en la mayoría de los programas de posgrado de CS. Para el fin más teórico de las cosas (es decir, semántica y teoría de tipos), las mejores escuelas son probablemente Cambridge y CMU. Para cosas más aplicadas (es decir, solucionadores SMT, verificación automática) Berkeley y MIT parecen particularmente buenos