CCOM 4029 - High Level Programming Languages

Course Announcement


Humberto Ortiz-Zuazaga
Office: NCL A-159
Telephone: 787-764-0000 x7430
Web page:
Office hours: Mondays and Thursdays 11:00 AM - 12:00 PM


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.

We wil be utilizing many of the resources provided by our textbook author, Dr. Shrinam Krishnamurthi, for his PL Online course. In particular, he has videotaped all his lectures and made them available online. See the table below for the schedule of lectures and topics, we will be covering the topics in roughly chronological order, with a few exceptions.

Lectures TopicReadingObjective
Lecture 0Learn racket

Work your way through the Quick Introduction. Do sections 1-9; you can (and probably should) skip 10 and 11.

Next, the Racket guide. Go through sections 1-4. (Not very interesting, but the more you know about the language before you begin, the better.)

2, 5, 6
Lecture 1 Role of programming languages

Chapter 1

2, 3, 4
Lecture 2 Language description: syntactic structure, interpretation Chapter 2, Chapter 3 Chapter 4 2, 3, 7
Lecture 3Elements of functional programmingChapter 53
Lecture 2012-09-12Environments: dynamic and lexical scopeChapter 63, 4
Lecture 2012-09-14Lambda and closuresChapter 73, 4
Lecture 2012-09-17 Structures and variables, recursion Chapter 8, Chapter 9 2, 3, 4, 7
Lecture 2012-09-21, Lecture 2012-09-24Objects!Chapter 102, 3, 4, 5 ,7
Lecture 2012-10-05 Object-oriented programming Section 10.3 2, 3, 4, 5, 6
Lecture 2012-09-26, Lecture 2012-09-28Automatic memory managementChapter 113, 7, 8
Lecture 2012-10-01 Representing data and functions Chapter 12 3, 7
Lecture 2012-10-03Syntactic macrosChapter 133
Lecture 2012-10-10, Lecture 2012-10-12, Lecture 2012-10-15 Lecture 2012-10-19 Concurrent programming Chapter 14 3, 4, 6
Lecture 2012-10-22, Lecture 2012-10-24, Lecture 2012-10-26 Program invariants: static typing Chapter 15 (Sections 15.1-15.2) 3
Lecture 2012-10-31 Polymorphic functions Section 15.3.1 2, 3, 4, 5, 6, 7
Lecture 2012-11-02 (Starting at minute 12), Lecture 2012-11-05 Type inference Section 15.3.2 2, 3, 7
Lecture 2012-11-12 Assertions and contracts and blame. Chapter 16 3, 4, 5, 6
The Lambda Lecture It's lambdas all the way down. 2, 3, 4, 5, 6, 7

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 (not yet packaged in Ubuntu), and the plai-typed language. x86_64 Ubuntu users can install the 32bit ubuntu flavor and then install ia32-libs, or install the 64bit Debian version.

This term we will be using Piazza for class discussion. The system is highly catered to getting you help fast and efficiently from classmates, the TA, and myself. Rather than emailing questions to the teaching staff, I encourage you to post your questions on Piazza. If you have any problems or feedback for the developers, email

Find our class page at:

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


"Programming Languages: Application and Interpretation" Second edition. by Shriram Krishnamurthi.

The author has graciously permitted me to make a cached copy of the textbook, in case of problems with the Internet.

Evaluation strategy:
  1. Quizzes, 10% final grade
  2. Small Project, 25% final grade
  3. Large Project, 40% final grade
  4. Student reports, 25% final grade

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.

Troglodita approved!

Humberto Ortiz Zuazaga

Most recent change: 2013/3/29 at 13:28
Generated with GTML