CCOM 4087 Compiler Design


| Name | Humberto Ortiz-Zuazaga | | Office | NCL A-150 | | Laboratory | NCL A-158 | | Telephone | 787-764-0000 x7430 | | email | | | Web page | | | Office hours | Monday, Wednesday 8:00-9:30 AM | | | Tuesday, Thursday 3:30-5:00 PM | | | or by appointment |


Introduction to compiling, structure of simple one-step compilers: syntax and lexical analysis, parsing, introduction to type checking, intermediate code generation, introduction to code generation and optimization. Discussion about tools for compilers design (e.g. Lex and Yacc).


High Level Programming Languages (CCOM 4029)


  • Introduction to compiling

  • Simple one pass compilers

  • Lexical analysis

  • Symbol tables

  • Parsing

  • Syntax directed translation

  • Introduction to type checking and run time environment

  • Intermediate code generation

  • Introduction to code generation and code optimization

  • Discussion of tools in compiler design


  1. Understand how the design of a compiler requieres most of the knowledge acquired during their study

  2. Develop a firm and enlightened grasp of concepts learned earlier in their study like higher level programming, assemblers, automata theory, and formal languages, languages, languages specifications, data structure and algorithms, operating systems and computer architecture

  3. Develop an in–depth knowledge of major topics in compiler design.

  4. Develop a fundamental understanding of various stages of compiling.

  5. Apply the ideas, the techniques, and the knowledge acquired for the purpose of other software design

  6. Develop fundamental knowledge of language specifications using context free grammars (CFG).

Course Schedule

Class will meet Tuesdays and Thursdays from 10:00 to 11:30 AM in NCL A-141. In UPR-RP attendance is compulsory.

Instructional resources

The course will be hosted on the CCOM Moodle. Register and stay tuned for our polls and forum postings.


The text for the course will be Modern Compiler Implementation in ML by Andrew Appel.

Students with no functional programming experience will probably need an additional text on Standard ML. I can suggest the free textbook by Andrew Harper of CMU Introduction to Standard ML, or the books ML for the Working Programmer or Elements of ML Programming.


We will be writing our compiler in the functional programming language Standard ML. Several implementations are available, I recommend Standard ML of New Jersey. Check your package manager, or download the newest version.


Students work will be evaluated on a 100% basis with the standard curve.

  • Participation in course forums (online, classroom), 5% final grade
  • Homework, 25% final grade
  • Two partial exams, 50% final grade
  • Compiler project, 20% final grade

Reasonable accomodations for students

Students with disabilities properly registered with the Office of Affairs for Persons with Disabilities Oficina de Asuntos para la Persona con Impedimento (O.A.P.I.) should notify the professor at the start of the semester. The professor will make reasonable accommodations to support the student, in consultation with OAPI.