ICOM 4029 – Compiler Construction (Fall 2008)

Techniques involved in the analysis of source languages and the generation of efficient object codes with emphasis on the components of a compiler.

Información General

Prontuario del Curso (PDF)
Bosquejo del Curso (PDF)

Conferencias (Lunes 1:30 – 3:10 CID 201)

Lecture 1: Course Overview, PL History, PL Design (PPT, PDF)
Lecture 2: Overview of the COOL Language (PPT, PDF)
Lecture 3: Lexical Analysis (PPT, PDF)
Lecture 4: Introduction to Syntactic Analysis (PPT, PDF)
Lecture 5: Top-Down Parsing (PPT, PDF)
Lecture 6: Bottom-up Parsing (PPT, PDF)
Lecture 7: Static Semantic Analysis (PPT,PDF)
Lecture 8: Runtime Environments (PPT, PDF)
Lecture 9: Code Generation I (PPT, PDF)
Lecture 10: Operational Semantics of COOL (PPT, PDF)


The lectures on this course are based on (very) slight variations of the slides used by Prof. George Necula for the CS 164 course offered at the University of California Berkeley.  Professor Necula kindly granted us permission to use his materials.  Thanks!


- Examen Parcial 1: TBA (Temas, Práctica, Solución, Estadísticas)
- Examen Parcial 2: 3 de diciembre de 2008 S-203  (Temas, Practica, Solución, Estadísticas)
- Examen Final:       18 de Diciembre de 2008 7:30 AM (Temas, Práctica, Solución, Estadísticas)

Ejemplos de Codigo en Lenguaje Assembly

Class Examples (MIPS Source Files)

Asignaciones de Programacion

Programming Assignment 1. A COOL Stack Machine. Due September 16 11:59 PM. (PDF)
Programming Assignment 2. COOL Lexer. Due September 29 11:59 PM. (PDF)
Programming Assignment 3. COOL Parser. Due October 11 11:59 PM. (PDF)
Programming Assignment 4. COOL Semantic Analyzer. (DOC, PDF)
  1. Part A Due October 25 11:59 PM
  2. Part B Due November 8 11:59 PM
Programming Assignment 5. COOL Code Generator. (DOC, PDF)
  1. Part A Due November 22 11:59 PM
  2. Part B Due December 6 11:59 PM

Schedule for ALL programming assignments (PDF)


Laboratory 1. Writing and running Cool code (PDF)
Laboratory 2. Lexical Analysis (PDF)
Laboratory 3. Finite Automata Continued and PS2 (PDF)
Laboratory 4. PAs 1 & 2 (PDF)
Laboratory 5. Syntactic Analysis (PDF)
Laboratory 6. Syntactic Analysis Continued (PDF)
Laboratory 7. Semantic Analysis (PDF)
Laboratory 8. Semantic Analysis Continued (PDF)

Correo Electrónico

icom4029-profs (profesor(es))
icom4029-students (todos los estudiantes)(subscribe)
icom4029-forum (staff y estudiantes)


Linux Distribution of the Cool Support Code (cool-linux.tar.gz)
Emacs for Windows (download)
.emacs File (download)
SPIM Simulator (home site, windows version)
UC Berkeley  SPIM including SPIM for Mac OS (home site, macOS X)
X Server for Windows (download)

Lecturas Sumplementarias

Cool Manual (PDF)
Tour of the Cool Support Code (PDF)
Easy I Quick Reference Sheet (PDF)
“The Nature of Computing”. Bienvenido Velez. COMPEL 2002 Plenary Talk. (PDF)
“An Overview of Information Theory” Bell Labs. (PDF)
“Assemblers, Linkers and the SPIM Simulator”. This is Appendix A of Hennessy & Patterson, Computer Organization and Design: The Hardware/Software Interface. Coutersy of Morgan Kaufmann Publishers.

RFC 1855: Netiquette Guidelines. ABSTRACT: This document provides a minimum set of guidelines for Network Etiquette (Netiquette) which organizations may take and adapt for their own use. As such, it is deliberately written in a bulleted format to make adaptation easier and to make any particular item easy (or easier) to find. It also functions as a minimum set of guidelines for individuals, both users and administrators. This memo is the product of the Responsible Use of the Network (RUN) Working Group of the IETF.

SPIM/MIPS Instruction Set Sheet (PlainText)

Enlaces de referencia

Web site del curso CS 164 de University of California Berkeley by George Necula (Spring 2004)

Web site del libro de Patterson y Hennessy “Computer Organization: The Hardware Software Interface”.

Evaluación de la clase por los estudiantes

Evaluación del curso por los estudiantes durante el examen parcial I (PDF)

Si descubres algún enlace útil para la clase  avísame para colocarlo aquí.