Programming Languages


G22.2110 Summer 1998


Project - Part I


Imperative Programming Languages


Due date: 06/29/98




As this course studies the design of programming language features and looks at several categories of programming languages, it becomes relevant to investigate the interoperation of application components written in several programming languages. Software applications involving components written in various programming languages are referred to as "heterogeneous". The most common approach to supporting the implementation of heterogeneous applications is to design programming language mappings to an underlying distributed computing framework (i.e., an Object Request Broker) that facilitates interoperation. The implementation of programming language mappings can be complex and requires, at the very least, a thorough understanding of programming language design concepts.


The goal of this project is to gain some exposure to the programming language design issues involved in supporting and implementing heterogeneous applications. Instead of building a heterogeneous program from scratch, this project will build upon a partially working distributed application implemented using C as the imperative Programming Language. The proposed application is a partial (and intentionally "buggy") solution to last semesterís programming project for this course.


The project assignment for this semester is as follows:


  1. Read and understand the specifications for the past semester project available at by following the links to Courses, Previous Semesters, Spring98, G22.2110, and project1.

  3. Configure the environment variables and modify your path and shell initialization script as suggested, so that you can use the Inter-Language Unification (ILU) system which has already been downloaded and installed.

  5. Make a copy of the sample solution to last semesterís programming project from "/spunky.a/adjunct/jcf/project1/solution" into a separate directory under your home directory, build the application using the given makefile (i.e., type "make"), and run the sample application (i.e., you will need to start the server component in the background by running "CourseRegistration-server &", and then invoke "CourseRegistration-client".)

  7. Write a "report" that: (a) explains what the sample application does, (b) summarizes the C programming language binding features which are being used (refer to the ILU documentation explaining the C programming language binding design), and (c) points out a few of the limitations, and bugs of the sample application.

  9. Fix one (or more for extra credit) of the "bugs" or limitations you found and documented in question 4 above.

  11. Modify the IDL specification to add a new interface member to one of the interfaces (student, courses, or faculty), and make proper modifications to the program to manipulate the added functionality.

  13. Study the ILU documentation for the C++ and Java bindings, and summarize how you would go at writing a new component in either language and make it interoperate with the server component being used as part of this project.

  15. Extra credit: implement a simple C++ or Java component that interoperates with the sample server component (which you may or may not have modified).



As part of your answers to the various questions above, please provide complete listings and documentation for the project and turn them in by the project deadline. Please provide a readable path on the CS department sun network to facilitate the testing and grading of your working programs by the TA.