The Use of Mediation and Ontology Technologies for Software Component Information Retrieval Component Based Development aims at constructing software through the inter-relationship between pre-existing components . However , these components should be bound to a specific application domain in order to be effectively reused . Reusable domain components and their related documentation are usually stored in a great variety of data sources . Thus , a possible solution for accessing this information is to use a software layer that integrates different component information sources . We present a component information integration data layer , based on mediators . Through mediators , domain ontology acts as a technique/formalism for specifying ontological commitments or agreements between component users and providers , enabling more accurate software component information search . Component Based Development -LRB- CBD -RRB- -LSB- 1 -RSB- aims at constructing software through the inter-relationship between pre-existing components , thus reducing the complexity , as well as the cost of software development , through the reuse of exhaustively tested components . Building new solutions by combining components should improve quality and support rapid development , leading to a shorter time-to-market . At the same time , nimble adaptation to changing requirements can be achieved by investing only in key changes of a component-based solution , rather than undertaking a major release change . For these reasons , component technology is expected by many to be the cornerstone of software production in the years to come . According to Jacobson , Griss and Jonsson -LSB- 1 -RSB- , the effectiveness of component reuse depends on the connectiveness among them and their binding to specific application domains . The connectiveness is one of the most discussed problems in CBD -LSB- 6 , 12 -RSB- . Approaches that deal with component interfaces 1 -LRB- one of premises for connection between components -RRB- focus on their capability to provide and request services . Although this interface aspect is important in a CBD approach , other problems arise when trying to connect components . The connectiveness also depends on the execution environment , the heterogeneity of components , the distance between them and the architecture that controls their connections -LSB- 1 , 5 , 12 -RSB- . The architecture that governs the connections between components also depends on the application domain . Therefore , reuse possibilities increase when components are bound to domain concepts . As stated by Krueger -LSB- 1 -RSB- , while retrieving reusable software components , it is advantageous to use a terminology that is familiar to the domain . This approach diverges from other software component retrieval proposals , such as the Agora System -LSB- 6 -RSB- that bases the search only on the component interfaces , covering solely the component connectiveness problem , and the RIG initiative -LSB- 10 -RSB- that presents an approach for domain repository integration with minor user transparency and without web access . Suppose that , in a typical component retrieval scenario , a software developer wants to find software components to use in the construction of an application under development . If he does not know any other specialized service that provides information about components , the natural search space will be the Internet . Now , consider that this developer has no knowledge about the available components . Thus , the following actions are necessary to discover software components that satisfy his needs : 1 . To locate information about components that can be stored in distributed repositories . This could be typically done through an Internet search engine that takes as input a few keywords and returns a list of relevant resource descriptions that might be available in these repositories . The success of this task directly depends on the interest of the repository administrators in publicizing their data and the precision of the user while providing the keywords . 2 . To determine usability of search results . Due to the complexity in the analysis of component usefulness -LRB- i.e. , considering the component domain , functionality and connection possibilities based on architecture decisions -RRB- , the 1 An interface of a component can be seen as a component 's part that defines its access points . These points allow clients -LRB- components themselves -RRB- to access services provided by the component -LSB- 12 -RSB- . Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page . To copy otherwise , or republish , to post on servers or to redistribute to lists , requires prior specific permission and/or a fee . SSR ' 01 , May 18-20 , 2001 , Toronto , Ontario , Canada . Copyright 2001 ACM 1-58113-358-8 / 01/0005 ... $ 5.00 . 19 information that is available at the component site is probably not enough . Thus , a naive Internet approach will not cope with the complexity of software component retrieval . The previous actions require an engine that combines the following three characteristics : -LRB- i -RRB- Distribution and Heterogeneity software components can be distributed and use different kinds of storage ; -LRB- ii -RRB- Domain Ontology - to organize component repositories within a domain in order to ease its search ; -LRB- iii -RRB- Software Component Information Evolution to insert new information -LRB- including legacy information -RRB- . However , as stated before , current software component retrieval proposals either lack from heterogeneity or domain ontology . On the other hand , many database projects -LSB- 3,4,7,8,9 -RSB- are particularly concerned with distribution , heterogeneity -LRB- and ontology -RRB- found in legacy databases . These projects are known as `` multi-database '' or Heterogeneous and Distributed Data Base Systems -LRB- HDDS -RRB- -LSB- 4 -RSB- . One solution found in HDDS is the use of mediators 2 -LSB- 2 -RSB- combined with ontology -LSB- 14 -RSB- to integrate , identify and retrieve related legacy databases . Ontology in this context can be defined as a vocabulary of terms and the relationship between them . For each term , a definition must be created , using an informal description , some concrete examples in the domain , and also a formal specification of the relationships between terms , thus forming a semantic network . We believe that the HDDS technologies can be adapted to handle software component repositories in the place of legacy databases . Mediators can represent and integrate domain information repositories -LRB- distributed and/or heterogeneous -RRB- . Metadata found in mediators can describe the repositories of components , presenting the domain , their semantics , software architecture and interfaces . Usually a query engine is available in HDDS and therefore ad hoc queries over this metadata can be used to analyze the available components . The organization of mediators with ontology drives the user search along heterogeneous vocabulary . Therefore , our main objective is to present a software component information retrieval engine named Odyssey Mediation Layer -LRB- OML -RRB- that combines the connectiveness of components and the domain concept approach . We address both issues through the adoption of mediation -LSB- 2 -RSB- and ontology -LSB- 14 -RSB- technologies , respectively . Our approach is motivated by a project that is being conducted in the Legislative House domain . There are several applications that can benefit from reusable information within this domain and from other related ones , such as justice domain , criminal domain , among others . Our users are not specialists in the latter domains , only in the Legislative domain . However , it is important that relevant reusable information from all related domains can be presented to them , particularly when they are not aware of its existence . Most components of legislative process applications can be reused from the legislative domain -LRB- e.g. , Proposal Creation , Legislature Evaluation , Council Members referee , among others -RRB- , but sometimes it is worth looking at components from other related domains such as justice domain . Our retrieval engine is able to identify and suggest components from other related 2 According to Wiederhold -LSB- 2 -RSB- , mediators are modules that encompass layers of mediation services , connecting bases of heterogeneous and distributed data -LRB- producers -RRB- to information systems -LRB- consumers -RRB- . domains in the same way as it suggests components from the Legislative domain . With our retrieval engine , the user search can rely on a controlled vocabulary -LRB- ontology -RRB- composed of domain terms that are familiar to him . Thus , the search is more focused and executed over relevant available component information repositories . Besides , the usefulness of the retrieved components is supported by the bindings between ontology terms and related components . This binding is accomplished by domain specialists together with domain engineers during a domain engineering process -LSB- 5 , 17 -RSB- thus enforcing the biding precision . In order to address these issues , the retrieval engine organizes component information repositories within domain ontologies while preserving its original characteristics of distribution and heterogeneity , all in a flexible way . The main contribution of our proposal is to provide an approach for accessing software components through the use of ontologies and mediators . Our innovative aspect is to provide flexibility , transparency and accuracy in software component information retrieval . In order to present our approach , the paper is organized as follows : Section 2 discusses the novelties of our proposal with related works ; Section 3 details the architecture of Odyssey Mediation Layer ; Section 4 shows a component retrieval example ; and Section 5 presents our concluding remarks . In a broader approach , several information retrieval systems use semantic brokering with respect to their resources . These systems include SIMS -LSB- 3 -RSB- , TSIMMIS -LSB- 4 -RSB- , InfoMaster -LSB- 7 -RSB- , and Information Manifold -LSB- 8 -RSB- . These systems work in the definition of some sort of common vocabulary -LRB- similar to an ontology -RRB- to define objects in their domain . Individual information sources that contain these objects describe constraints on objects that they can provide , in terms of this common vocabulary . The broker then uses these constraints to determine how to process queries . These projects deal with generic designs for database retrieval . Our approach combines the mediation technology with specific domain ontology -LSB- 2 -RSB- to integrate different software components data sources . The main difference between these projects and ours is that our approach is particularly concerned with software components . Thus , we use an ontology , which is specifically constructed for that . This ontology is specified during a Domain Engineering process -LSB- 5 -RSB- tailored for this purpose . Hence , the ontology accuracy is more efficient , and consequently the usefulness of the retrieved components . Another work worth mentioning is the InfoSleuth system -LSB- 9 -RSB- . It is a large project , conducted by MCC , which uses an ontology approach to retrieve information from distributed and heterogeneous databases . InfoSleuth can be seen as a framework that can be tailored for a given purpose . One interesting application is the EDEN project in the environmental domain -LSB- 9 -RSB- . In this case , some tools of InfoSleuth were customized for this project . Our project adopts a similar approach , where our constructs are specific for software component information retrieval . The Agora System -LSB- 6 -RSB- describes a search engine for retrieving reusable code components , such as JavaBeans and CORBA components . Agora uses an introspection mechanism for 20 registering code components , through its interface . As a result , this information may not be available at a certain time because the repository is not running , or the information can not be located . In each of these cases , the interface information can not be successfully retrieved and indexed , and the component is not registered in the AGORA index database . In our proposal , the use of mediators provides the flexibility to access remote component repositories . There is no need for an index phase , and the mediator is able to capture updates that may occur in a remote repository -LRB- i.e. , the repository , using the translator 3 services , sends a message with these updates to the mediator -RRB- . Moreover , the mediator metadata manager has access to all the ontological terms of a given domain , facilitating the identification of the existence of a component , even if its repository is out of service . In this case , the user knows that the component exists and that he can retrieve it latter . Moreover , new information is always associated to domain terms within a given domain ontology , improving its accessibility and reuse . Ye and Fischer -LSB- 18 -RSB- presents an approach that provides an active repository for components . The work emphasizes active delivery of reuse information , helping on the identification of components that developers did not even know that existed . Regarding this last aspect , it is similar to our approach . Our component information retrieval system also provides this functionality too , once it accesses components from other domains based on semantic similarity . The active repository functionality , although not described in this paper , is also part of our work -LSB- 16 -RSB- . One aspect that is different in our proposal is the retrieval of distributed information , which is not mentioned in Ye and Fischer 's work . Another important work to mention is the RIG initiative -LSB- 9 -RSB- , which describes a reuse library interoperability approach . The idea of the asset library interoperability is based on the storage of domain information in several databases . These databases are static and based on a unique global model . The integration requires that information is stored according to this unique model . Therefore , if any reuse database is to be integrated , it has to be translated to the RIG model . Alternatively , the mediation approach creates a new level of abstraction above the database model , allowing the insertion and/or removal of repositories from the mediation structure without the need for updates on the whole structure . Moreover , RIG lacks a more effective search engine that provides searches based on domain concepts and filtering of relevant information , including Internet access , as we do in our work . The effectiveness of a software component information retrieval engine is associated to its capacity to handle the distribution and heterogeneity of software components , to organize component repositories within a domain , and to enable software component evolution . These requirements can be accomplished through a software layer that is seen as a particular case of HDDS . As stated before , mediators are modules that encompass layers of mediation services , connecting bases of heterogeneous and distributed data -LRB- producers -RRB- to information systems -LRB- consumers -RRB- . Hence , in order to be really useful in software component information search this solution has to be tailored to component 3 A translator in this context is the same as a wrapper or adapter . information retrieval , considering the component domain , its semantics , architecture , and interfaces . In a mediation architecture , as new sources of information are aggregated to the mediation structure , the amount of information to be modeled increases , frequently generating inconsistencies , ambiguities , and conflicts in the represented information . One way to deal with this problem is to partition the consumers and producers ' models and the structure of mediation by domain . The description of these models , partitioned by domains , forms the so-called domain ontology -LSB- 14 -RSB- . In the context of component information retrieval , the use of mediators allows the information access to be carried independently of the format and the operational platform where it is stored . Therefore , the structure of a retrieval engine as a whole can be flexible , since existing component data sources can be added to the architecture in an easy way , with no need to convert from the original information format -LRB- format form of data/information source -RRB- to the format used by the reuse environment . Another interesting feature of mediators within a component information retrieval engine is that reusable information is naturally organized by domain -LRB- Figure 1 -RRB- , which facilitates the search for domain concepts , since specific domain data is accessed in a search . Moreover , the use of mediators allows the aggregation of information already stored in legacy databases , without the need to transform the original database format . In order to help on the correct choice of mediators for a given domain , the mediator layer provides a specific ontology for each domain . Therefore , this ontology must be specified by domain specialists , facilitating the search for specific components , since the ontology definition is directly connected to software components within the domain . The use of this layer in the Legislative Domain is particularly interesting , since in Brazil as in other countries -LSB- 15 -RSB- , there are some legislative houses that are more up to date with software technology than others . The former represents a reference source of software components to several Legislative Houses . Without this kind of layer , there exist some barriers for reusing components among these houses , such as the distance , scarce financial resources , and semantic conflicts among components -LRB- a common component functionality can be identified differently in each legislative house -RRB- . Figure 1 presents an example of a mediation layer configuration for this specific application domain . Several mediators are presented as sub-domains , such as State Legislative -LRB- SL -RRB- and Municipal Legislative -LRB- ML -RRB- domains . The SL Mediator is aggregated -LRB- P1 -RRB- to ML , generating a more generic mediator that combines the two domains . The latter can be used in cases where information concerning the two domains is necessary . Each mediator is connected to the related domain data sources that contain reuse component information . The Justice Domain Mediator may be accessed in cases where the user wants components related to the Justice domain . In order to provide an architecture that is able to handle the requirements of component information search and retrieval , we specified and implemented OML -LRB- Odyssey Mediation Layer -RRB- was specified and implemented , based on mediation and ontology technologies . OML is derived from a HDDS mediator , the HIMPAR architecture -LSB- 12 -RSB- , adding to it more precision and semantics , using ontologies tailored to software component information retrieval . 21 Retrieval Interface Legislative State Domain Mediator Justice Domain Mediator Legislative Domain Mediator Legislative Municipal Domain Mediator P1 P2 ORB Component Repository Translator Component Repository Component Repository Translator P1 : aggregation P2 : association Translator Component Repository Translator Figure 1 - An example of a mediation layer for the Legislative domain User Interface Service Manager SM Query Translator Query Packer Query Decomposition Query Manager -LRB- QM -RRB- Ontology Model OntologyManager Metadata Manager -LRB- MM -RRB- Mediator Translator Translator Service Manager Metadata Model ORB Bus Component Repository Component Repository ORB Bus Reuse Tools Figure 2 - Architecture of the Odyssey Mediation Layer The OML engine is part of a reuse environment , named Odyssey , that deals with component based development of applications within a given domain . Specifically , OML is part of a system of agents that helps users in their search for reusable components -LSB- 16 -RSB- . It uses intelligent mechanisms such as learning techniques and user preferences in order to present in advance components that the user does not even know that exist . The agent system infers this information and presents the components to the user . It is important to notice that although OML was built in the context of the Odyssey project , it can be used standalone or integrated to other tools , since OML offers a user interface -LRB- as seen in figures 3 through 8 -RRB- and a CORBA IDL interface for its communication with other tools . Figure 2 presents OML , which comprises four levels : Interface , Mediation Layer , ORB bus , and Translators . The Interface level is implemented by the Service Manager -LRB- SM -RRB- , which stores metadata about available mediators , and is capable of creating ontological bindings between related ontologies in order to query several mediation layers . Also , SM is responsible for the creation and modification of mediators . The Mediation Layer provides the management of each mediator through the Metadata Manager 22 -LRB- MM -RRB- , and provides access to mediators through the Query Manager . At the ORB level , communication between the mediation layer and translators is established through CORBA standard services . Finally , the Translator level provides one translator for each component repository in such a way that it can participate in the Mediation Layer integration model . 3.1 Service Manager The Service Manager -LRB- SM -RRB- stores metadata about mediators , translators and data sources availability , and deals with ontological commitments between related mediators -LRB- domains -RRB- . Schema 1 presents an overview of SM Metadata in ODL notation , and Schema 2 provides the IDL interface to access mediators through the CORBA bus . class Object_Himpar -LRB- extent Himpares -RRB- -LCB- attribute string Name ; -RCB- class Mediator extends Object_Himpar -LRB- extent Mediadores -RRB- -LCB- relationship list < Container > AssociatedDataSources inverse DataSource : : Medis ; attribute string Description ; attribute string KeyWords ; relationship list < Mediador > Super inverse Mediador : : * ; relationship list < Mediador > Spec inverse Mediador : : * ; relationship list < Mediador > Assoc inverse Mediador : : * ; attribute string BaseName ; relationship list < OntologyTerm > TermRel inverse OntologyTerm : : MediadorRel ; attribute String password ; -RCB- class Wrapper extends Object_Himpar -LRB- extent Wrappers -RRB- -LCB- attribute string description ; attribute string type ; relationship list < DataSource > Repositories inverse DataSource : : Trad ; -RCB- class DataSource extends Object_Himpar -LRB- extent DataSources -RRB- -LCB- attribute string owner ; relationship list < Mapping > Structure inverse Mapping : : Cont ; attribute string AbstractionLevel ; relationship Wrapper Trad inverse Wrapper : : Repositories ; relationship list < Mediator > Medis . inverse Mediator : : AssociatedDataSources ; attribute String password ; -RCB- class Mapping -LCB- attribute string DataSourceName ; attribute string map ; relationship DataSource Cont inverse DataSource : : Structure ; -RCB- class OntologyTerm -LRB- extent Terms -RRB- -LCB- attribute string Name ; relationship list < OntologyTerm > Synonym inverse OntologyTerm : : * ; relationship list < OntologyTerm > Hipernym inverse OntologyTerm : : * ; relationship list < OntologyTerm > Hiponym inverse OntologyTerm : : * ; relationship Mediator MediadorRel inverse Mediator : TermRel ; -RCB- class Component -LRB- extent Components -RRB- -LCB- attribute string type ; -RCB- Schema 1 Metadata of Service Manager The ontological commitments between related mediators are all done at SM level . SM provides the necessary metadata for this , using the Mediator , DataSource , Mapping , OntologyTerm and Component classes described in Schema2 . The decision to concentrate all ontological commitments at SM level was mainly based on the SM available information . It knows the availability of all OML components and thus is able to indicate which domain the user could access . In order to use a given mediator within OML , the administrator has to register the mediator , its related data sources , and translators used by these data sources into SM . Figures 3 and 4 present examples of the interfaces for doing this . module Mediator -LCB- interface Access -LCB- struct OntologyTerm -LCB- string Name ; string Description ; -RCB- ; struct object -LCB- string type ; string definition ; -RCB- ; typedef sequence < Ontology > ListOntology ; typedef sequence < object > ListObjects ; / / Functions for the management of bases string open_base -LRB- in string basename -RRB- ; void close_base -LRB- in string basename -RRB- ; / / Functions for the management of ontologies ListOntology retrieve_Ontology -LRB- in string mediator-name -RRB- ; / / Functions for retrieve components ListObjects queryMediator -LRB- in string query -RRB- ; -RCB- ; -RCB- ; Schema 2 SM IDL interface to access mediators Figure 3 shows some information about the Municipal Legislative Mediator within SM . Some basic metadata are : i -RRB- the mediator name , ii -RRB- the executable file that has to be loaded -LRB- if it is not already loaded -RRB- by ORB , in order to respond to some request to this specific mediator , iii -RRB- the keywords related to the mediator 23 -LRB- this information provides a fast and limited knowledge about the contents of the mediator -RRB- , iv -RRB- the password required by the mediator to attend the request -LRB- if necessary -RRB- , among others . Figure 4 presents a data source registration , associating a specific data source , File System2 , to the Municipal Legislative Mediator . We may also register the available types of components in order to know to which phase of the application development the component belongs -LRB- analysis , architectural or implementation see Figure 8 -RRB- . One important characteristic of OML is to use domain ontology to search for domain terms and its ontological relationship , within or among various domains at different levels of abstraction . Thus , SM has to capture the ontological model 4 of each mediator and associate terms among them . For capturing each ontological model , SM uses the ORB bus , through IDL retrieve_Ontology -LRB- -RRB- interface method -LRB- Schema 2 -RRB- , to access the specific mediator , retrieving its ontological terms . Therefore , the ontological model provides the main structure for dealing with domain ontology relationships . Relationships involve semantic links such as Hypernyms , Hyponyms , and Synonyms . A Synonym link associates ontological terms in several domains that represent synonyms for a particular ontological term . Hypernyms and Hyponyms links relate ontological terms from various domains that can be either more general or more specific than the current one . Thus , it is possible to associate ontological terms from multiple domains , providing accessibility for domain information . Figure 5 presents the interface for the association of ontological terms . In a query formulation , SM accesses and retrieves all related mediators , searching for component information that fulfills the query semantics . The ontological information about requested 4 Each ontological term is specified as a domain term and a detailed description of it , and relationships with other ontological terms , at different levels of abstraction , are created -LRB- see section 3.2 -RRB- domains is transferred by the Broker -LRB- ORB -RRB- to the proper domain -LRB- mediator -RRB- , using the method queryMediator -LRB- in string query -RRB- , and correct ontological domain terms . In the example shown , SM will query all mediators that are related to the Municipal Legislative mediator . Thus , SM will transmit the query to the Legislative Domain Mediator and Justice Domain Mediator -LRB- see Figure 2 -RRB- . The retrieved components and their corresponding match levels are shown , if each retrieved component exactly matches the query or if the component Figure 3 A Mediator Registration Example Figure 4 A data source registration example 24 partially attends the request . OML registers this information and presents how well the component attends the request -LRB- total or some percentage in the latter case -RRB- . In section 4 , we present a more concrete example of this kind of query . 3.2 Mediator Manager Each mediator has its own metadata . This metadata represents the ontological model of the domain . The Mediator manager -LRB- MM -RRB- also stores relationships among the ontological terms and components stored in data sources . This metadata provides the capability to retrieve components related to this mediator -LRB- domain -RRB- . In order to provide this feature , MM also stores the ontology metadata related to this domain . For each ontological domain term , it is necessary to register its name , its type -LRB- in this specific case a term that represents a functionality in the domain -RRB- , its importance within the domain and the related domain terms . These terms permit the expansion of the query range within the domain , i.e. , if there is no component information on data sources related to this specific ontological term , OML could query related ontological terms in the same domain . Of course , this `` shift '' must be reported to the user . In order to relate each ontological term with its counterparts in data sources , MM retrieves related information of data sources from SM , using the ORB bus . The retrieved information is used by MM to locate and retrieve software components from data sources . Thus , we can associate each ontological term with its related components , with the help of a specific translator . Consider a user who is developing an application to handle new legislative proposals , among other characteristics , in the legislative domain . He wants to know if he can use pre-existing software components in his application . Thus , he can use the OML user interface to know about the availability of this kind of components , and to retrieve some candidates . In our example -LRB- Figure 6 -RRB- , data source 2 has a binary software component called `` New Subject '' , and data source 1 has a Java package -LRB- set of related classes -RRB- named `` Proposal Creation '' . Both data sources were mapped into the Legislative Municipal Domain Mediator . Therefore , the Justice Domain mediator has an ontology term named Justice Code that is mapped to a component named Code Database . These components are made available to the Legislative Municipal Domain through the ontological term in the mediator called `` Creation of New Proposals '' , and are mapped to the above components in data sources , i.e. , data sources 1 and 2 . During the creation of new proposals within a Municipal Legislative House , there are some cases when it is necessary to consult justice database rules . This justice database can impose some restrictions on a new proposal creation . Figure 5 Multiple Ontology Association 25 When the Municipal Legislative Mediator was registered , the SM administrator associated this mediator with the Justice Mediator . This Justice Mediator provides software components used for the development of applications in the Justice domain . Thus , when our user accesses the SM interface in order to retrieve components related to the creation of new proposals , he can choose to access information from all related mediators , i.e. , generic mediators , specific mediators , associated mediators or all of them . Suppose our user decides to retrieve information from the Legislative Mediator and associated mediators , then he will access components from the Legislative Mediator and Justice Mediator -LRB- see Figure 2 -RRB- . The formulation of the query -LRB- Figure 7 -RRB- , selecting the type of component to be retrieved -LRB- components belong to analysis , architectural , codification or all phases of development -RRB- , and the result of this query is presented in Figure 8 . Note that for each component , a description of the retrieval is presented -LRB- in Data Source 1 Data Source 2 Mediator Manager ORB Justice Rules Proposal Creation New Subject Data Source 3 Rule Database Mediator Manager Creation of New Proposals Service Manager Creation of New Proposals Hyponym Justice Rules Figure 6 Retrieval Schema Example Figure 7 Query Formulation 26 Figure 8 , the description presented is related to the Rule Database Access component -RRB- and the user can select one or more components to retrieve . Through the mediation structure , OML users can search for components in a transparent and uniform way . In the above example , users of OML do not have to know where components are stored . Moreover , users do not have to query all component repositories , using each specific repository query language format -LRB- when a query language exists -RRB- to find where the needed components are stored . They do not even have do know how to access data sources . The complexity for dealing with these heterogeneous repositories is treated by OML . Without this layer , users would have to handle these repositories individually , increasing the complexity of the query and access . By using mediators , users can query specifically the mediation metadata , using one single model . The mappings between mediator metadata and translators redirect and decompose the query to data sources 1 , 2 , and 3 . Also , the identification of components of the same domain that are in different repositories can be detected at the time of their registration in the mediation layer . Afterwards this is all transparent to users . This work addresses the interoperability problem between component information repositories . An integration layer was developed to help searching and identifying suitable reuse components . This layer is based on mediators and ontologies to provide the binding of different components to their domain concepts . To assist the identification of related components and their appropriate domain organization , each mediator encloses one domain ontology and provides the mapping to their respective repository of components . Mediators provide a uniform view of the available components organized in domain taxonomy . Domain ontologies are used to help searching for reusable components information through the representation of domain semantic concepts . Therefore , this mediation layer promotes domain information integration and provides mechanisms to translate component requests across ontologies . The important aspect of our proposal is the use of domain ontologies , for reusable component retrieval , in a concrete situation , allowing users to express component requests at a higher level of abstraction when compared to keyword based access or component interface based access used in other proposals . Without OML , users would have to access directly various repositories , dealing with specific characteristics of each repository . Therefore , the main contribution of this paper is to show the potential of the technology of mediators , together with ontology models , for dealing with components repositories complexities , and organizing the manipulation of different components within a domain ontology . Although , the mediation technology is quite popular within HDDS , its adaptation using domain ontologies for component information retrieval is innovative . OML is an operational interoperability architecture based on the use of mediators , translators , and a CORBA communication protocol , which is responsible for the connection among translators and mediators in a distributed and heterogeneous environment . It was constructed using the C++ language together with the Visibroker ORB for C++ . Currently , OML is being extended in order to publish and search for components on the Internet -LSB- 19 -RSB- , based on XML standard . -LSB- 1 -RSB- Jacobson , I. ; Griss , M. ; Jonsson , P. : `` Software Reuse : Architecture , Process and Organization for Business Success ; '' Addison Wesley Longman , May 1997 . Figure 8 Example of component information retrieval in OML 27 -LSB- 2 -RSB- Wiederhold , Gio ; Jannink , Jan : `` Composing Diverse Ontologies ; '' 8th Working Conference on Database Semantics -LRB- DS-8 -RRB- , Rotorua , New Zealand -LRB- DS-8 -RRB- January 1999 -LRB- Final version to be published by IFIP/Kluwer/Chapman & Hall -RRB- . -LSB- 3 -RSB- Arens Y. , Knoblock C.A. , and Shen W. : Query reformulation for dynamic information integration . Journal of Intelligent Information Systems , 6 -LRB- 2 -RRB- : 99 130 , 1996 . -LSB- 4 -RSB- Molina , Garcia and et.al . : The TSIMMIS approach to mediation : Data models and languages . Journal of Intelligent Information System , 8 -LRB- 2 -RRB- , 1997 . -LSB- 5 -RSB- Braga , R. ; Mattoso , M. ; Werner , C. : `` The Use of Mediators for Component Retrieval in a Reuse Environment , '' In : Proc . Technology of Object-Oriented Languages and Systems Conference -LRB- TOOLS-30 USA ' 99 -RRB- , IEEE CS Press , Santa Barbara , pp.542-546 , August 1999 . -LSB- 6 -RSB- Seacord , R. ; Hissan , S. ; Wallnau , K , : `` Agora : A Search Engine for Software Components , '' Technical Report CMU/SEI -98-TR-011 , August 1998 . -LSB- 7 -RSB- Genesereth M.R. , Keller A. , and Duschka O.M. : Infomaster : An Information Integration System . In SIGMOD RECORD , Proceedings of the 97 ACM SIGMOD International Conference on Management of Data , pp. 539 542 , Tucson-Arizona , 1997 . -LSB- 8 -RSB- Levy , Alon Y. , Rajaraman , Anand , and Ordille , Joann J. : Querying heterogeneous information sources using source descriptions . In Proceedings of the 22nd VLDB Conference , pp. 251 262 , Mumbai -LRB- Bombay -RRB- , India , 1996 . -LSB- 9 -RSB- Fowler , Jerry , Perry , Brad , Nodine , Marian , and Bargmeyer , Bruce : Agent-Based Semantic Interoperability in InfoSleuth , SIGMOD Record 28 -LRB- 1 -RRB- : pp. 60-67 , 1999 . -LSB- 10 -RSB- RIG ; `` Reusable Library Interoperability Group '' at http://www.asset.com/rig/ , 1996 . -LSB- 11 -RSB- Pires , P. ; Mattoso , M. : `` A CORBA based architecture for heterogeneous information source interoperability ; '' Proceedings of Technology of Object-Oriented Languages and Systems - TOOLS ' 25 , IEEE CS Press , pp.33-49 , November 1997 . -LSB- 12 -RSB- Szyperski , C. : Component Software : Beyond Object Oriented Programming , Addison Wesley , 1998 -LSB- 13 -RSB- Ram , S. : `` Guest Editor 's Introduction : Heterogeneous Distributed Database Systems , '' ; IEEE Computer , Vol . 24 No. 12 , December 1991 . -LSB- 14 -RSB- Nieto , E. M. : OBSERVER : An Aproach for Query Processing in Global Information Systems based on Interoperation across Pre-existing Ontologies , Doctoral Thesis , Universidade de Zaragoza , November 1998 . -LSB- 15 -RSB- Weinstein , P. C. : Ontology-based Metadata : Transforming the MARC Legacy , Proceedings of the 1998 ACM 7 th Internacional Conference on Information and Knowledge Management , pp. 52-59 , 1998 . -LSB- 16 -RSB- Braga , R. ; Mattoso , M. ; Werner , C. : `` Using Ontologies for Domain Information Retrieval , '' in DEXA 2000 DomE Workshop , pp.100-104 , September 2000 . -LSB- 17 -RSB- Braga , R. ; Werner , C. ; Mattoso , M. : `` Odyssey : A Reuse Environment based on Domain Models '' ; In : Proceedings of IEEE Symposium on Application-Specific Systems and Software Engineering Technology -LRB- ASSET ' 99 -RRB- , IEEE CS Press , Richardson , Texas , pp.50-57 , March 1999 . -LSB- 18 -RSB- Ye , Y. ; Fischer , G. : `` Promoting Reuse with Active Reuse Repository Systems , '' IEEE ICSR 2000 , Vienna , pp.302-317 , June 2000 -LSB- 19 -RSB- Pinheiro , R. ; Costa , M. ; Braga , R. ; Mattoso , M ; Werner , C. ; `` Software Components Reuse Through Web Search and Retrieval '' , Proceedings of the International Workshop on Information Integration on the Web - Technologies and Applications , Rio de Janeiro , Brazil , 2001 -LRB- to appear -RRB- . 5 Each ontological term is specified as a domain term and a detailed description of it , and relationships with other ontological terms , at different levels of abstraction , are created -LRB- see section 3.2 -RRB- 28

O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O

component repositories
domain engineering

software classification and identification


A

Programming

Languages

Course

for

Freshmen

Programming

languages

are

a

part

of

the

core

of

computer

science

Courses

on

programming

languages

are

typically

offered

to

junior

or

senior

students

and

textbooks

are

based

on

this

assumption

However

our

computer

science

curriculum

offers

the

programming

languages

course

in

the

first

year

This

unusual

situation

led

us

to

design

it

from

an

untypical

approach

In

this

paper

we

first

analyze

and

classify

proposals

for

the

programming

languages

course

into

different

pure

and

hybrid

approaches

Then

we

describe

a

course

for

freshmen

based

on

four

pure

approaches

and

justify

the

main

choices

made

Finally

we

identify

the

software

used

for

laboratories

and

outline

our

experience

after

teaching

it

for

seven

years

K.

-LSB-

Computers

and

education

-RSB-

Computer

and

information

science

education

computer

science

education

Languages

Theory

The

topic

of

programming

languages

is

a

part

of

the

core

of

computer

science

It

played

a

relevant

role

in

all

the

curricula

recommendations

delivered

by

the

ACM

or

the

IEEE-CS

since

the

first

Curriculum

-LSB-

-RSB-

Recent

joint

curricular

recommendations

of

the

ACM

and

the

IEEE-CS

identified

several

areas

which

structure

the

body

of

knowledge

of

the

discipline

The

list

of

areas

has

grown

since

the

first

proposal

made

by

the

Denning

Report

-LSB-

-RSB-

up

to

in

the

latest

version

Computing

Curricula

-LSB-

-RSB-

Programming

languages

has

always

been

one

of

these

areas

Internationally

reputed

curricular

recommendations

are

a

valuable

tool

for

the

design

of

particular

curricula

However

each

country

has

specific

features

that

constrain

the

way

of

organizing

their

studies

In

Spain

the

curriculum

of

a

discipline

offered

by

a

university

is

the

result

of

a

trade-off

On

the

one

hand

the

university

must

at

least

offer

a

number

of

credits

of

the

core

subject

matters

established

by

the

Government

On

the

other

hand

the

university

may

offer

supplementary

credits

of

the

core

as

well

as

mandatory

and

optional

courses

defined

according

to

the

profile

of

the

University

and

the

faculty

Any

proposal

of

a

new

curriculum

follows

a

well-established

process

-LRB-

-RRB-

the

curriculum

is

designed

by

a

Center

after

consulting

the

departments

involved

-LRB-

-RRB-

it

must

be

approved

by

the

University

Council

-LRB-

-RRB-

the

Universities

Council

of

the

Nation

must

deliver

a

-LRB-

positive

-RRB-

report

and

-LRB-

-RRB-

the

curriculum

is

published

in

the

Official

Bulletin

of

the

Nation

This

scheme

has

a

number

of

advantages

e.g.

a

minimum

degree

of

coherence

among

all

the

universities

is

guaranteed

However

it

also

has

a

number

of

disadvantages

e.g.

the

process

to

change

a

curriculum

is

very

rigid

The

Universidad

Rey

Juan

Carlos

is

a

young

university

now

seven

years

old

It

offered

studies

of

computer

science

since

the

very

first

year

The

curriculum

was

designed

by

an

external

committee

so

the

teachers

of

computer

science

thereafter

hired

by

the

university

did

not

have

the

opportunity

to

elaborate

on

it

The

curriculum

had

a

few

weak

points

that

would

recommend

a

light

reform

but

the

priorities

of

the

new

university

postponed

it

The

curriculum

establishes

the

features

of

the

Foundations

of

programming

languages

course

The

course

is

scheduled

to

last

for

fifteen

weeks

with

three

lecture

hours

per

week

and

two

supervised

laboratory

hours

per

week

However

some

flexibility

is

allowed

so

that

some

weeks

may

be

released

from

the

lab

component

This

course

is

both

a

strong

and

a

weak

feature

of

the

curriculum

It

is

a

strong

feature

because

programming

languages

are

marginal

in

the

official

core

Consequently

our

curriculum

is

closer

to

international

recommendations

than

most

Spanish

universities

However

it

is

a

weak

feature

because

the

course

is

offered

in

the

second

semester

of

the

first

year

Notice

that

the

programming

languages

course

is

more

typically

offered

as

an

intermediate

or

advanced

course

in

the

third

or

fourth

year

Our

problem

was

how

to

teach

the

programming

languages

course

to

freshmen

The

paper

presents

our

design

of

the

course

and

our

experience

In

the

second

section

we

first

analyze

and

classify

proposals

for

the

programming

languages

course

into

different

pure

and

hybrid

approaches

In

section

we

describe

a

course

for

freshmen

based

on

four

pure

approaches

and

justify

the

choices

made

with

respect

to

the

factors

that

most

influenced

its

design

Finally

we

identify

the

software

used

for

laboratories

and

outline

our

experience

after

teaching

it

for

seven

years

Permission

to

make

digital

or

hard

copies

of

all

or

part

of

this

work

for

personal

or

classroom

use

is

granted

without

fee

provided

that

copies

are

not

made

or

distributed

for

profit

or

commercial

advantage

and

that

copies

bear

this

notice

and

the

full

citation

on

the

first

page

To

copy

otherwise

or

republish

to

post

on

servers

or

to

redistribute

to

lists

requires

prior

specific

permission

and/or

a

fee

ITiCSE

June

Monte

de

Caparica

Portugal

Copyright

ACM

Since

Curriculum

several

issues

on

programming

languages

have

received

attention

in

the

different

curriculum

recommendations

particular

programming

languages

language

implementation

etc.

It

is

formative

to

study

-LRB-

or

to

browse

at

least

-RRB-

such

recommendations

even

though

the

large

number

of

topics

can

be

discouraging

for

the

teacher

In

this

section

we

try

to

organize

different

contributions

Firstly

we

identify

pure

approaches

to

the

programming

languages

course

Secondly

we

describe

their

implementation

usually

as

hybrid

approaches

Finally

we

briefly

discuss

the

issue

of

which

programming

languages

and

paradigms

to

use

for

the

course

Pure

Approaches

Probably

the

best

study

on

approaches

to

the

programming

languages

course

was

given

by

King

-LSB-

-RSB-

He

made

a

study

of

textbooks

and

found

different

goals

Furthermore

he

identified

approaches

on

which

these

textbooks

were

based

and

discussed

a

number

of

issues

We

have

extended

his

classification

up

to

approaches

Although

most

books

and

courses

follow

a

hybrid

approach

it

is

clarifying

to

distinguish

the

following

pure

ones

Catalogue

approach

It

provides

a

survey

of

several

programming

languages

This

approach

has

several

advantages

the

student

acquires

a

good

education

in

several

languages

it

allows

studying

the

interaction

among

different

constructs

of

a

language

and

the

languages

may

be

studied

in

chronological

order

However

it

also

exhibits

disadvantages

there

is

much

redundancy

in

studying

similar

features

in

different

languages

and

there

is

no

guarantee

that

the

student

acquires

a

solid

education

Descriptive

-LRB-

or

anatomic

-LSB-

-RSB-

-RRB-

approach

Programming

languages

have

many

common

elements

which

can

be

grouped

into

categories

and

studied

independently

Typical

examples

are

data

types

hiding

mechanisms

execution

control

etc.

The

advantages

and

disadvantages

of

this

approach

are

roughly

the

opposite

of

the

previous

one

Paradigm

approach

Although

each

language

has

different

characteristics

and

constructs

it

is

based

on

a

basic

model

of

computation

called

programming

paradigm

The

paradigm

approach

is

an

evolution

of

the

descriptive

approach

described

above

since

it

generalizes

language

constructs

and

groups

them

consistently

Typical

examples

of

paradigms

are

functional

logic

and

imperative

programming

Formal

approach

It

studies

the

foundations

of

programming

languages

mainly

their

syntax

and

semantics

The

main

advantage

of

this

approach

is

that

the

student

acquires

a

solid

conceptual

background

However

it

has

the

risk

of

being

too

formal

and

therefore

keeping

far

from

the

study

of

the

programming

languages

themselves

Implementation

approach

It

comprises

language

processing

topics

This

approach

is

usually

adopted

jointly

with

the

descriptive

one

so

that

the

run-time

mechanisms

that

support

each

language

construct

are

also

described

This

allows

estimating

the

computational

cost

of

each

construct

However

the

student

may

associate

each

concept

with

a

particular

implementation

this

approach

may

also

be

in

contradiction

with

the

idea

that

a

high

level

language

should

be

understandable

independently

from

its

implementation

Implementation

of

Pure

Approaches

The

formal

and

implementation

approaches

are

the

basis

of

two

well

known

and

established

courses

computation

theory

and

language

processors

They

are

not

studied

in

this

paper

as

standalone

courses

but

we

consider

their

integration

into

the

programming

languages

course

Despite

these

pure

approaches

it

is

more

common

to

adopt

a

hybrid

one

formed

by

a

combination

of

several

approaches

For

instance

we

have

explained

that

a

descriptive

course

may

address

the

implementation

of

language

constructs

The

descriptive

and

paradigm

approaches

also

are

commonly

complemented

by

a

small

catalogue

of

selected

languages

It

is

also

common

to

find

a

descriptive

part

based

on

the

imperative

paradigm

followed

by

a

second

part

based

on

the

catalogue

or

the

paradigm

approaches

Finally

the

formal

approach

can

complement

the

descriptive

or

implementation

ones

From

a

historical

point

of

view

the

catalogue

approach

was

the

most

common

in

the

first

years

of

computing

curricula

However

it

has

almost

universally

been

abandoned

with

some

interesting

exceptions

such

as

the

experience

by

Maurer

-LSB-

-RSB-

on

a

subfamily

of

four

C-like

languages

The

trend

has

been

towards

giving

more

importance

to

the

foundations

of

programming

languages

mainly

elements

and

paradigms

After

this

evolution

it

seems

that

the

two

most

common

organizations

are

Descriptive

approach

complemented

with

some

languages

or

paradigms

It

is

the

most

common

organization

according

to

currently

available

textbooks

Descriptive

approach

illustrated

by

means

of

interpreters

of

some

selected

languages

Interpreters

and

paradigms

can

be

combined

in

two

symmetrical

ways

either

implementing

an

interpreter

in

each

paradigm

-LSB-

-RSB-

or

implementing

an

interpreter

for

one

language

of

each

paradigm

the

latter

approach

can

be

adopted

with

an

imperative

language

-LSB-

-RSB-

or

more

probably

with

a

functional

language

-LSB-

-RSB-

There

are

few

proposals

for

a

holistic

approach

One

exception

is

Wick

and

Stevenson

's

proposal

-LSB-

-RSB-

which

combines

the

descriptive

formal

paradigm

and

implementation

approaches

into

a

reductionistic

one

Choice

of

Languages

and

Paradigms

Courses

on

programming

languages

do

not

simply

consist

in

the

study

of

one

or

several

languages

but

their

study

usually

is

a

part

of

the

course

The

selection

of

these

languages

rises

some

questions

that

we

can

not

discuss

here

A

related

issue

is

the

selection

of

programming

paradigms

Not

all

the

paradigms

can

be

equally

useful

for

a

course

on

programming

languages

for

freshmen

Firstly

some

paradigms

are

richer

to

illustrate

language

elements

than

others

Secondly

some

paradigms

can

be

more

adequate

to

freshmen

than

others

There

is

not

a

catalogue

of

paradigms

classified

by

suitable

academic

year

but

it

is

important

to

use

a

more

objective

criterion

than

just

the

personal

opinion

of

faculty

We

have

used

the

Computing

Curricula

-LSB-

-RSB-

as

an

objective

basis

to

identify

feasible

paradigms

They

identify

the

paradigms

that

have

succeeded

in

procedural

object-oriented

functional

algorithmic

notations

and

low-level

languages

The

last

two

choices

are

useful

for

but

not

for

a

programming

languages

course

thus

the

remaining

choices

are

procedural

object-oriented

and

functional

An

additional

choice

not

cited

by

Computing

Curricula

consists

in

the

use

of

tiny

languages

-LSB-

-RSB-

-LSB-

-RSB-

These

languages

can

be

ad

hoc

designed

for

a

specific

domain

or

embedded

into

operating

systems

or

applications

We

discarded

the

catalogue

approach

because

it

would

only

contribute

to

a

memorization

effort

by

freshmen

Consequently

our

course

is

based

on

the

remaining

four

approaches

Formal

approach

Formal

grammars

and

syntax

notations

are

given

in

depth

Language

semantics

is

simply

introduced

Implementation

approach

Only

basic

concepts

are

given

Descriptive

approach

Basic

language

elements

are

reviewed

Paradigm

approach

A

programming

paradigm

is

given

in

depth

-LRB-

functional

programming

-RRB-

but

others

are

just

sketched

Table

contains

the

contents

of

the

course

we

offer

There

are

several

major

factors

to

consider

for

the

design

of

a

programming

languages

course

Firstly

the

course

when

it

is

offered

to

students

determines

to

a

large

extent

the

knowledge

and

maturity

of

students

Secondly

the

existence

of

related

courses

such

as

courses

on

automata

theory

or

programming

methodology

may

recommend

removing

some

overlapping

topics

Thirdly

the

specialization

profile

of

faculty

can

foster

the

choice

of

a

given

topic

instead

of

another

one

Fourthly

a

course

with

so

many

different

topics

must

guarantee

coherence

among

them

Finally

time

constraints

typically

limit

the

number

of

topics

to

consider

In

the

following

subsections

we

justify

the

adequacy

of

the

choices

made

with

respect

to

these

factors

Table

Syllabus

of

our

programming

languages

course

PART

I.

INTRODUCTION

Chapter

General

issues

Computer

and

programming

languages

Elements

properties

and

history

of

programming

languages

Classifications

PART

II

SYNTACTIC

FOUNDATIONS

OF

PROGRAMMING

LANGUAGES

Chapter

Grammars

and

formal

languages

Alphabets

symbols

and

chains

Languages

Grammars

Derivation

of

sentences

Recursive

grammars

Classification

of

grammars

Chomsky

's

hierarchy

Abstract

machines

Chapter

Regular

grammars

Definition

Uses

and

limitations

Regular

expressions

and

regular

languages

Finite-state

automata

Chapter

Context-free

grammars

Definition

Uses

and

limitations

Parsing

trees

The

ambiguity

problem

and

its

removal

PART

III

DESCRIPTION

AND

PROCESSING

OF

PROGRAMMING

LANGUAGES

Chapter

Language

processors

Abstract

-LRB-

or

virtual

-RRB-

machines

Classes

of

processors

Stages

in

language

processing

Concrete

vs.

abstract

syntax

Chapter

Lexical

and

syntactic

notations

Lexical

and

syntactic

elements

Regular

definitions

Syntax

notations

BNF

EBNF

syntax

charts

Chapter

Semantics

Semantics

Classes

of

semantics

Static

semantics

Binding

PART

IV

THE

FUNCTIONAL

PARADIGM

Chapter

Basic

elements

Function

definition

and

application

Programs

and

expressions

Overview

of

functional

languages

Built-in

types

values

and

operations

The

conditional

expression

Chapter

Advanced

elements

Operational

semantics

term

rewriting

Recursive

functions

Local

definitions

Chapter

Functional

data

types

Constructors

Equations

and

patterns

Pattern

matching

PART

V.

ELEMENTS

OF

PROGRAMMING

LANGUAGES

Chapter

Lexical

and

syntactical

elements

Identifiers

Numbers

Characters

Comments

Delimeters

Notations

for

expressions

Program

structure

and

blocks

Chapter

Data

types

Recursive

types

Parametric

types

polymorphism

Polymorphic

functions

Type

systems

Type

checking

and

inference

Type

equivalence

Type

conversion

Overloading

PART

VI

PROGRAMMING

PARADIGMS

Chapter

Other

paradigms

and

languages

Imperative

paradigms

Logic

paradigm

Motivation

of

concurrency

Other

computer

languages

mark-up

languages

Maturity

of

Students

One

major

concern

was

the

fact

that

the

course

is

offered

to

freshmen

A

single

approach

could

not

be

used

because

of

the

freshmen

's

lack

of

knowledge

of

programming

languages

A

variety

of

contents

from

the

different

approaches

must

be

selected

in

order

to

give

them

a

comprehensible

and

rich

view

of

programming

languages

The

lack

of

maturity

and

capability

of

students

to

understand

certain

topics

was

a

bottleneck

for

course

organization

The

different

topics

can

be

given

with

varying

degrees

of

depth

but

always

making

sure

that

freshmen

can

master

them

We

found

that

some

topics

are

especially

difficult

to

understand

even

formulated

in

the

simplest

way

This

mainly

applies

to

Semantics

of

programming

languages

Implementation

of

programming

languages

Some

programming

paradigms

such

as

concurrency

Consequently

these

topics

were

included

in

a

summarized

way

so

that

students

could

achieve

a

global

view

of

them

and

understand

the

main

issues

involved

The

rest

of

the

topics

could

potentially

be

taught

more

deeply

but

without

forgetting

that

they

were

offered

to

freshmen

In

terms

of

Bloom

's

taxonomy

-LSB-

-RSB-

the

three

topics

above

can

be

mastered

at

the

knowledge

level

or

even

comprehension

level

However

for

the

rest

of

topics

we

can

expect

students

to

achieve

the

application

and

analysis

levels

at

least

Overlapping

with

Other

Courses

Some

topics

are

also

offered

in

other

courses

either

in

the

same

or

in

a

subsequent

year

Consequently

these

topics

can

be

removed

or

dealt

with

more

shallowly

The

most

probable

conflicts

are

Imperative

programming

either

procedural

or

object-oriented

Grammars

and

formal

languages

Language

processors

In

our

case

there

is

an

annual

course

on

programming

methodology

based

on

the

imperative

paradigm

but

the

other

two

topics

are

not

included

in

the

curriculum

The

programming

methodology

course

is

offered

in

the

first

academic

year

Consequently

we

removed

the

imperative

paradigm

except

for

its

use

in

some

illustrating

examples

mainly

in

part

V.

However

we

kept

chapters

on

grammars

and

formal

languages

and

on

language

processors

Preferences

and

Specialization

of

Faculty

This

factor

is

important

in

order

to

choose

among

equally

eligible

options

or

to

give

broader

coverage

of

some

topics

In

particular

faculty

can

be

more

familiar

with

some

paradigms

than

with

others

This

was

over-riding

for

our

choice

of

the

programming

paradigm

In

subsection

we

discussed

suitable

paradigms

for

freshmen

and

we

concluded

that

Computing

Curricula

fosters

the

selection

of

the

procedural

object-oriented

and

functional

paradigms

We

discarded

the

procedural

paradigm

as

it

is

concurrently

taught

in

the

programming

methodology

courses

Finally

our

specialization

gave

priority

to

the

functional

paradigm

over

object-orientation

The

reader

can

find

many

experiences

in

the

literature

but

we

recommend

a

monograph

on

functional

programming

in

education

-LSB-

-RSB-

Functional

programming

is

a

paradigm

with

several

advantages

such

as

short

definition

of

languages

simple

and

concise

programs

high

level

of

abstraction

etc.

However

its

main

advantage

for

us

is

richness

of

elements

This

allows

us

to

deal

with

many

aspects

of

programming

languages

-LRB-

e.g.

data

types

recursion

polymorphism

etc.

-RRB-

in

a

natural

and

easy

way

The

use

of

tiny

languages

is

another

attractive

choice

in

a

course

for

freshmen

However

we

also

discarded

them

in

favor

of

the

functional

paradigm

because

they

have

fewer

language

elements

Coherence

and

Unifying

Themes

A

key

issue

in

a

course

based

on

several

approaches

is

to

provide

contents

coherence

A

network

of

relationships

among

the

different

parts

makes

possible

their

coherent

integration

Part

III

-LRB-

description

and

processing

of

languages

-RRB-

is

the

pragmatic

continuation

of

part

II

-LRB-

formal

grammars

-RRB-

Thus

EBNF

and

syntactic

charts

are

introduced

in

part

III

as

more

adequate

notations

for

language

description

than

pure

grammar

definitions

Language

processing

is

given

at

a

conceptual

level

but

the

role

of

regular

and

syntax-free

grammars

in

the

architecture

of

language

processors

is

highlighted

Parts

IV

and

V

are

both

based

on

a

functional

language

which

is

described

with

the

tools

given

in

part

III

mainly

EBNF

and

type

constraints

Parts

IV

and

V

are

also

related

because

they

are

based

on

the

same

language

In

order

to

provide

more

homogeneity

language

elements

studied

in

part

V

are

introduced

in

a

universal

way

but

they

are

mainly

illustrated

with

the

functional

paradigm

Last

but

not

least

recursion

is

adopted

as

a

recurring

theme

during

the

course

In

effect

it

is

found

in

grammars

functions

and

data

types

The

recurrent

presentation

of

this

topic

fosters

deeper

understanding

by

students

The

pure

definition

of

recursion

is

given

early

in

the

course

but

its

three

instantiations

enumerated

above

are

studied

later

For

each

instantiation

the

mechanisms

that

accompany

a

recursive

definition

are

clearly

identified

in

particular

representation

of

information

and

operational

semantics

-LSB-

-RSB-

For

instance

recursive

grammars

represent

sentences

as

strings

of

terminal

symbols

and

its

operating

semantics

is

defined

in

terms

of

derivation

of

sentences

However

recursive

functions

represent

information

as

expressions

and

its

operating

semantics

is

defined

in

terms

of

term

rewriting

Time

Constraints

As

a

final

factor

time

constraints

limit

the

depth

of

study

of

those

topics

that

could

be

studied

longer

A

global

view

of

the

course

schedule

is

given

in

Table

Table

Schedule

of

the

course

Part

Theory

#hours

Lab

#hours

Part

I

Part

II

Part

III

Part

IV

Part

V

Part

VI

In

part

II

-LRB-

formal

grammars

-RRB-

regular

and

context-free

grammars

are

the

only

ones

studied

in

depth

because

of

their

importance

for

language

description

and

processing

Moreover

only

one

paradigm

can

be

studied

in

depth

Even

so

the

lack

of

time

limits

the

presentation

of

functional

programming

-LRB-

parts

IV

and

V

-RRB-

to

the

core

elements

of

the

paradigm

Other

elements

important

for

the

functional

programmer

can

not

be

addressed

-LRB-

e.g.

higher-order

lazy

evaluation

or

currification

-RRB-

However

this

is

not

a

serious

drawback

since

the

aim

of

including

functional

programming

in

the

course

is

teaching

the

essentials

of

a

new

paradigm

as

well

as

illustrating

language

elements

A

course

on

programming

languages

must

have

a

laboratory

component

The

laboratory

schedule

includes

sessions

for

those

parts

of

the

course

where

problem

solving

can

be

faced

mainly

formal

grammars

and

functional

programming

Laboratory

tools

were

selected

carefully

so

that

they

are

adequate

for

freshmen

to

exercise

non-trivial

concepts

simple

user

interaction

and

visualization

facilities

are

of

great

help

here

There

are

a

number

of

tools

that

fulfill

these

requirements

For

formal

grammars

we

require

simulators

that

allow

at

least

manipulating

regular

expressions

finite

automata

context-free

grammars

and

derivation

trees

Our

final

selection

was

JFLAP

-LSB-

-RSB-

For

functional

programming

we

require

a

programming

environment

that

shows

term

rewriting

as

the

operational

semantics

Our

final

selection

was

WinHIPE

-LSB-

-RSB-

We

have

been

teaching

this

course

for

seven

years

Although

the

basic

structure

has

roughly

been

constant

it

was

refined

according

to

our

experience

In

particular

the

emphasis

on

recursion

was

introduced

after

several

years

as

we

noticed

student

problems

with

this

concept

We

consider

that

we

have

succeeded

at

least

in

eliminating

the

magical

connotation

of

recursion

A

major

change

was

the

relative

order

of

chapters

on

formal

grammars

and

the

functional

paradigm

During

the

first

year

they

were

given

in

reverse

order

However

students

had

problems

in

understanding

the

syntax

of

functional

declarations

that

led

us

to

teach

in

the

first

place

formal

grammars

-LRB-

and

therefore

syntax

notations

such

as

EBNF

-RRB-

Thus

a

foundation

to

declare

syntax

was

laid

and

then

used

to

introduce

functional

programming

The

literature

classifies

the

main

difficulties

for

teaching

functional

programming

into

syntactical

conceptual

and

psychological

problems

-LSB-

-RSB-

In

our

approach

the

two

former

kinds

of

problems

are

avoided

but

the

latter

remains

As

freshmen

learn

concurrently

the

functional

and

one

imperative

language

they

get

the

idea

that

functional

is

an

exotic

useless

paradigm

We

have

described

a

course

on

programming

languages

for

freshmen

It

comprises

elements

from

four

different

approaches

We

have

described

the

contents

of

the

course

and

we

have

explained

the

factors

that

led

us

to

its

current

design

The

experience

has

been

very

positive

both

for

teachers

and

for

students

As

the

Denning

report

sought

for

we

consider

that

our

course

illustrates

that

it

is

feasible

to

offer

some

traditionally

intermediate

or

advanced

matters

in

introductory

courses

This

work

is

supported

by

the

research

project

of

the

Spanish

Ministry

of

Education

and

Science

-LSB-

-RSB-

Abelson

H.

and

Sussman

G.J.

Structure

and

Interpretation

of

Computer

Programs

MIT

Press

ed.

-LSB-

-RSB-

Bloom

B.

Furst

E.

Hill

W.

and

Krathwohl

D.R.

Taxonomy

of

Educational

Objectives

Handbook

I

The

Cognitive

Domain

Addison-Wesley

-LSB-

-RSB-

Curriculum

Committee

on

Computer

Science

Curriculum

Recommendations

for

academic

programs

in

computer

science

Comm

ACM

-LRB-

March

-RRB-

-LSB-

-RSB-

Denning

P.

et

al.

Computing

as

a

Discipline

ACM

Press

New

York

-LSB-

-RSB-

Fischer

A.E.

and

Grodzinsky

F.S.

The

Anatomy

of

Programming

Languages

Prentice-Hall

-LSB-

-RSB-

Kamin

S.N.

Programming

Languages

An

Interpreter-Based

Approach

Addison-Wesley

-LSB-

-RSB-

King

K.N.

The

evolution

of

the

programming

languages

course

In

rd

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

Kolesar

M.V.

and

Allan

V.H.

Teaching

computer

science

concepts

and

problem

solving

with

a

spreadsheet

In

th

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

Maurer

W.D.

The

comparative

programming

languages

course

A

new

chain

of

development

In

rd

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

Popyack

J.L.

and

Herrmann

N

Why

everyone

should

know

how

to

program

a

computer

In

IFIP

World

Conference

on

Computers

in

Education

VI

-LRB-

WCCE

-RRB-

Chapman

Hall

-LSB-

-RSB-

Hung

T.

and

Rodger

S.H.

Increasing

visualization

and

interaction

in

the

automata

theory

course

In

st

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

The

Joint

Task

Force

on

Computing

Curricula

IEEE-CS/ACM

Computing

Curricula

Computer

Science

-LSB-

-RSB-

Thomson

S.

and

Wadler

P.

-LRB-

eds

-RRB-

Functional

programming

in

education

Journal

of

Functional

Programming

-LRB-

-RRB-

-LSB-

-RSB-

Tucker

A.B.

and

Noonan

R.E.

Integrating

formal

models

into

the

programming

languages

course

In

rd

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

Vel

zquez-Iturbide

J.

Improving

functional

programming

environments

for

education

In

M.

D.

Brouwer-Hanse

y

T.

Harrington

-LRB-

eds

-RRB-

Man-Machine

Communication

for

Educational

Systems

Design

Springer-Verlag

NATO

ASI

Series

F

-LSB-

-RSB-

Vel

zquez-Iturbide

J.

Recursion

in

gradual

steps

-LRB-

is

recursion

really

that

difficult

-RRB-

In

st

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

-LSB-

-RSB-

Wick

M.R.

and

Stevenson

D.E.

A

reductionistic

approach

to

a

course

on

programming

languages

In

nd

SIGCSE

Technical

Symposium

on

Computer

Science

Education

-LRB-

SIGCSE

-RRB-

ACM

Press

New

York

O B I O O B B I O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O B I B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B O O O O O O O O O O O B I O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B I O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O B O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O B O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B I O O O B I O O B I O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O B O O O O O B O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B I O O O B I O O O O O O O O O O O O O O O O O O O O B I O B I O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O B O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O B I O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O B I O O O O O O O O O O O O O O O O O

freshmen
programming languages
laboratory component
language description
curriculum
computer science
topics
programming paradigms
formal grammars
programming methodology
recursion
functional programming