Humberto Ortiz-Zuazaga
Office: NCL A-159
Telephone: 787-764-0000 x7430
Web page:
Office hours: Mondays and Fridays from 9:00 to 11:00 AM or by appointment.


In this course fundamental aspects of high-level programming languages, including data objects, operations, sequence control, data control, storage management, syntax, and semantics are presented. Also, the students are exposed to different language paradigms (e.g. imperative, parallel, functional, rule-based (logic), and object-oriented languages). The course gives hands on experience and allows students to develop moderate-level programs in various programming languages, one for each paradigm.

Number of hours/credits

3 hours per week, 3 credits


CCOM 3034 - Data Structures

Course objectives

  1. Prepare an oral presentation about a high level programming language.
  2. Understand the syntax and semantics of at least three programming languages.
  3. Understand how languages are designed and implemented.
  4. Recognize the models of language design (imperative, applicative, ruled-based, and object oriented) and their common characteristics.
  5. Evaluate which programming language is more suitable for solving specific problems.
  6. Write programs on at least three of the programming languages representing the different models of language design.
  7. Address the issue that knowing a language is more than knowing its syntax.
  8. Understand the role of computer hardware in implementing language semantics.
  9. The student will study independently a seminal or current research paper

Course schedule

Class will meet Monday and Wednesday, 1:00-2:20 PM in A-143.

Instructional strategies

The professor will discuss each topic, students will complete a practical exercise for each topic discussed in class.

In addition, students must prepare an oral report on a programming language (Objective 1), and read a research paper (Objective 9). The professor will provide a list of papers and pointers to lists of papers in the next section, and students will select a programming language and paper, and present to the class.

Instructional resources

This website with all the course lectures and supplemental materials and references. Additional material is available on the CCOM Moodle:

You will need version 5.3 or newer of DrRacket.

For this class, we will also be programming in pyret. You should install pyret on your own machine. Reference material on pyret is available online.

One of the course objectives (#9) is to read a seminal or current programming language research paper (and #1 is to present to the class). Students can refer to a list of suggested readings, or may select a paper on their own.


Programming and Programming Languages, 2013 edition by Shriram Krishnamurthi. We will start class with Chapter 13. You will be responsible for Chapters 1-4 and the Language Reference.

Evaluation strategy

  1. Attendance, 5% final grade
  2. Quizzes, 25% final grade
  3. Homework, 45% final grade
  4. Student reports, 25% final grade


  1. CFWAE - A simple functional interpreter.
  2. CFWAE++ - Desugar an extended CFWAE with objects, variables.
  3. depython - Not a real assignment, but we looked at the internals of python and compared them to CFWAE.

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.