> For the complete documentation index, see [llms.txt](https://cc4.gitbook.io/cc4/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cc4.gitbook.io/cc4/master.md).

# Compiladores

![Photo Credit: openclassroom.stanford.edu ](/files/-Lo7KsLB1u1vpu06j467)

## Requisitos

* Tener claros los conceptos de CC1, CC2 y CC3.
* Tener claros los conceptos de Informática 3.
* Tener habilidad para programar en Java.

## Descripción

Este es un curso introductorio al diseño de lenguajes de programación y a la implementación de sus compiladores e intérpretes. En el proceso, haremos una exploración general al diseño de lenguajes de programación y su impacto en la implementación de los mismos. Durante este semestre, nos enfocaremos en un lenguaje particular: Classroom Object Oriented Language (**COOL**).

## Objetivos

Uno de los objetivos de este curso es explorar la estructura de los lenguajes de programación y considerar alternativas a características familiares en lenguajes de programación. Estudiaremos además el problema de la traducción de lenguajes de alto nivel a formas que pueda ejecutar la máquina, utilizando el lenguaje COOL como lenguaje de alto nivel y RISC-V como lenguaje ensamblador. La implementación de un compilador se hace por varias razones:

* Aprender técnicas que se aplican a muchas clases de problemas fuera del ámbito de un compilador,
* Obtener una mejor comprensión de las herramientas que utilizamos cuando programamos y los costos de los programas que escribimos.
* Para obtener experiencia construyendo y validando un problema de ingeniería sustancialmente complejo.

## Libro de Texto

![](/files/-Lo7LHbXe4RH5svHVhMM)
