Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is...

12
Parallel Functional Programming Using D-Clean The theses of the Ph.D. dissertation Zsók Viktória http://zsv.web.elte.hu/ 2012 [email protected] Supervisor: Prof. Dr. Horváth Zoltán Eötvös Loránd University, Faculty of Informatics H-1117 Budapest, Pázmány Péter sétány 1/C. Ph.D. School of Informatics Head of Ph.D. School: Prof. Dr. Benczúr András Ph.D. Programme: Foundations and Methodologies of Informatics Head of Ph.D. Programme: Prof. Dr. Demetrovics János Supported by TÁMOP 4.2.1./B-09/1/KMR-2010-0003.

Transcript of Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is...

Page 1: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

Parallel Functional ProgrammingUsing D-Clean

The theses of the Ph.D. dissertation

Zsók Viktóriahttp://zsv.web.elte.hu/

[email protected]

Supervisor: Prof. Dr. Horváth Zoltán

Eötvös Loránd University, Faculty of Informatics

H-1117 Budapest, Pázmány Péter sétány 1/C.

Ph.D. School of InformaticsHead of Ph.D. School: Prof. Dr. Benczúr András

Ph.D. Programme: Foundations and Methodologies of InformaticsHead of Ph.D. Programme: Prof. Dr. Demetrovics János

Supported by TÁMOP 4.2.1./B-09/1/KMR-2010-0003.

Page 2: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.
Page 3: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

Introduction

Parallel and distributed programming are intensively studied specific areas in the domain offunctional programming. Functional programming languages represent modern tools for design-ing and implementing software which meet the high requirements of the nowadays informationsociety. Functional programs have inherent parallel features, which can be exploited by buildingup different language tools to obtain reliable parallel processing.

The state-of-the-art literature reports permanent search for expressing parallelism in thedomain of functional paradigm. Different attempts for parallelization have been accomplishedusing various methodologies and approaches starting from programming low-level languageprimitive to higher level elements. However, parallelism remains a difficult concern especiallyin the case of lazy functional programming languages.

Parallel programming in the lazy functional programming language Clean had several de-velopment phases. At the very beginning, a transputer version of the language was developed.Later on annotations, dynamics, TCP/IP and Object IO elements were used, while nowadaysweb-based tasks are the main matters for parallelism.

The research question addressed in dissertation is how we can obtain parallel behaviour andcommunication for functional programs, namely for Clean functions. The continuous search forfunctional programming language elements that have higher and higher abstraction level fordefining parallelism established the main settings for the inspections and research. The directionI followed resulted in increasing the expressing power of language elements for parallelism infunctional programs. More specifically, it conducted me to the design of a Clean languageextension for distributed programming and coordination of functional programs.

Aims and goals

The main objectives of the thesis are summarized and stated as:

1. to observe and further refine the existing parallel functional language elements,

2. to introduce parallel evaluation strategies suitable for Clean and to define the parallelcommunication channel objects for interconnecting Clean programs on clusters,

3. to design the D-Clean higher level coordination language as extension of Clean and todefine the D-Box intermediate level language together with the mappings from the D-Clean

language to the D-Box language,

4. to specify the semantics of the D-Clean language in the form of executable Clean functions,

5. to implement parallel algorithmic skeletons using the D-Clean primitives and to inspecttheir semantical soundness.

1

Page 4: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

The structure of the dissertation

The dissertation is organized in seven chapters. The introduction presents the topics of the dis-sertation, while the related work chapter describes the background of the research and enumer-ates the related works from various perspectives. It points out the differences and similaritiesbetween the research results of the dissertation and some key references of the literature.

The chapter about parallel evaluation strategies describes the initial research phase re-garding the strategies that have influences upon the evaluation degree of functions, while thechapter about the Clean-CORBA interface explores communication possibilities between Clean

programs on clusters.The D-Clean coordination language chapter describes in details the newly introduced D-Clean

primitives and the structure of the D-Box language elements. For achieving parallel features,the lazy functional programming language Clean is extended by a relatively small number ofspecific, well defined D-Clean language constructs.

The chapter of executable semantics aims to provide the semantics of D-Clean in form ofClean function definitions. The skeleton library chapter presents skeleton based functional anddistributed programming using the D-Clean and D-Box languages, since the main purpose ofintroducing the two languages was to define parallel computation schemes, i.e. skeletons.

At the end of the dissertation, conclusions are formulated and future research is consid-ered. Although the D-Clean system was designed to coordinate functional programming taskson clusters using high level coordination language parameterized by functional programmingcomputation nodes, the coordination model may be applied at distributed computations im-plemented in other programming languages too.

Each chapter first introduces the topic by the motivation behind the presented work, fol-lowed by the description of the main concerns and important features. Case studies related tothe topic ended by evaluations of their methods are also included. The chapters are focusingon the language elements and their expressing power concerning parallelism in functional pro-gramming. The novel results of the chapters were published as peer-reviewed journal papers.In the following these outcomes and their novelties are summarized in four main thesis (thefirst thesis has two parts).

The summary of the results

Thesis 1.1: Based on the parallel annotations of the pure lazy functional languageClean, we introduced parallel evaluation strategies in Clean. I defined compound par-allel evaluation strategies applied on linear data structures.

Strategies define the dynamic behaviour of functional programs. Implemented as higherorder functions, the most important feature of the strategies is to separate the evaluationbehaviour of a function from its algorithmic part. The defined ‘par ‘ Clean parallel evaluationstrategy influences the evaluation degree of expressions. Parallel evaluation strategies are also

2

Page 5: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

very important in the case of compound types, because a high evaluation degree may be achievedin a shorter evaluation time for composed functions. As a case study for parallel compoundstrategies, the parallel elementwise processing method is presented.

The novelty of the evaluation strategy implementation is given by the Clean language speci-ficity of using graph rewriting technique for the evaluation of the functions. Changing theevaluation degree by strategies, and creating simple and composed parallel evaluation strate-gies are the new parts of this thesis.

The main publication regarding the parallel evaluation strategies is the journal paper [10]:

Horváth Z., Zsók V., Serrarens, P., Plasmeijer, R.: Parallel Elementwise Processable Functionsin Concurrent Clean, Mathematical and Computer Modelling Vol. 38, Issues 7-9, Elsevier,2003, pp. 865-875.

Thesis 1.2: I created type-safe functional communication channels for intercon-necting Clean programs distributed on clusters using the Clean-CORBA interfaceand middleware services.

The second research phase dealt with the integration of communication channels into Clean

functional programs. The interconnections are accomplished via direct calls of middleware ser-vices. The abstract communication layer is designed and implemented based on CORBA serverobjects. A Clean-CORBA interface is used for server-client communications. The communica-tion between the distributed functional components is asynchronous. A skeleton for pipelinecomputation is included as a case study, which describes the main features of the channel-basedcommunication approach. Using CORBA-based technique it became obvious that new higherorder language elements are needed in order to achieve clearer and more transparent code whilehiding implementation details and reducing the possibility of error appearances.

The approach of channel based communication between functional programs on clusters isnovel for parallel functional programming.

The topic is presented in the peer-reviewed paper [6]:

Horváth Z., Varga Z., Zsók V.: Clean-CORBA Interface for Parallel Functional Programmingon Clusters, In: Pekka Kilpeläinen, Niina Päivinen (eds.): Proceedings of the Eighth Sympo-sium on Programming Languages and Software Tools, SPLST’03, Kuopio, Finland, June 17-18,2003, Report A/2003/1, University of Kuopio, pp. 127-136.

Related publications: [30], [9], [2].

Thesis 2: I designed the set of distributed coordination language primitives D-Clean

as an extension of the Clean lazy functional programming language.D-Clean consists of high-level language elements for the coordination of the purely functional

computational nodes in the designed distributed environment for a cluster. D-Clean constructsgenerate D-Box computation boxes connected via buffered tools for communications, that arechannels.

3

Page 6: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

D-Clean also controls the dataflow in a distributed process-network. The dataflows carriedby the channels are typed according to the rules of the input-output protocols of the boxesgenerated for the evaluation of the computations. Using D-Clean the programmer indicates howa distributed computation can be organised into a generated computational graph.

The D-Box language is an intermediate level language based on Petri nets. The boxes arecompiled into Clean programs, and they communicate via channels.

The D-Clean primitives offer the advantage of writing distributed and functional applicationswithout knowing the details of the application environment and middleware services abstractingfrom the technical aspects. The distributed computation uses a multiparadigm-oriented envi-ronment with several different layers. On the highest level the D-Clean coordination languageprimitives are applied in order to define the distribution of the pure functional computationsubtask. This distribution is made according to a predefined computational scheme, which isan algorithmic skeleton, parameterized by functions, types and data. The D-Clean programsare transformed into D-Box programs, which are lower level descriptions including the computa-tional nodes implemented in the lazy functional language Clean. The D-Clean to D-Box mappingrules are also provided.

The introduced D-Clean coordination language is innovative in the abstraction level of itslanguage primitives. The designed primitives are higher abstracted from the low-level constructsthan the earlier introduced evaluation strategies and the communication channels are betterconformed to the functional programming style. The language is a new high-level distributionapproach of the coordination of Clean functional programs on a cluster using the intermediatelanguage D-Box with well established channels for distributed communication and boxes forcomputation nodes.

The main publication is the journal paper [4]:

Horváth Z., Hernyák Z., Zsók V.: Coordination Language for Distributed Clean, Acta Cyber-netica, Vol 17 (2), Institute of Informatics, University of Szeged, Szeged, Hungary, 2005, pp.247-271.

Related publications: [22], [24], [1].

Thesis 3: I specified the operational semantics of the D-Clean language in the formof executable semantics using Clean functions and types in order to verify and provethe properties of the D-Clean language extension.

The D-Clean and D-Box coordination languages introduced are applied for implementing high-level process description and communication coordination of functional programs distributedover a cluster. However, practical experiences with the two-language usage in distributedprogram development showed that it would be helpful to build a tool for prior automaticvisualization of the computation network. Therefore, a new modelling approach is providedand a new view of the D-Clean distributed system is defined using semantical descriptionsimplemented in Clean. The emphasis is mainly on the executable description of the operational

4

Page 7: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

semantics of the D-Clean language primitives. The descriptions of the D-Clean elements areabstracting from the real distributed environment and leaving out the details of the box andchannel generation. The executable semantics tool is a software comprehension application fora better way of utilizing the distributed D-Clean coordination language.

D-Clean programs are also depicted graphically, formulating properties of the executablesemantics of the visualized example. For well defined distributed computations the expectedparallelism, the potential amount of parallelism (analogously to the real distributed system)are drawn by boxes and by channels generated in parallel. The graphical visualization of thedistributed computation using the executable semantics provides useful support when program-ming in the real distributed system. A second model of D-Clean semantics is provided usingC++ templates. The strong type system of C++ templates guarantees the correctness of themodel. Using templates impressive efficiency is achieved by avoiding run-time overhead.

The new language implied new semantics, and the executable semantics approach is alsorelatively novel in the literature.

The main publications are the journal papers [32] and [35]:

Zsók V., Koopman, P., Plasmeijer, R.: Generic Executable Semantics for D-Clean, In: PorkolábZ. et al. (eds.): Proceedings of the Third Workshop on Generative Technologies, WGT 2011,ETAPS 2011, Saarbrücken, Germany, March 27, 2011, Electronic Notes in Theoretical Com-puter Science, ENTCS Vol. 279, Issue 3, Elsevier, December 2011, pp. 85-95.

Zsók V., Porkoláb Z.: Rapid Prototyping for Distributed D-Clean using C++ Templates, In: An-nales Universitatis Scientiarum Budapestinensis de Rolando Eötvös Nominatae, Sectio Com-putatorica, Eötvös Loránd University, Budapest, Hungary, 2012, Vol. 37, pp. 19-46.

Related publications: [36], [33], [34], [21].

Thesis 4: I defined and implemented parallel algorithms, that are skeletons basedon the new language primitives. I verified the equivalences of the skeletons usingthe distributed environment and the semantical execution tool.

The main purpose of introducing the two coordination languages was to define parallel com-putation skeletons. The aim is to illustrate the appropriateness and applicability of the twolanguages for distributed evaluation of the functional programs on clusters. Therefore, dis-tributed functional computational skeletons are provided. A set of known algorithmic skeletonsare tested and implemented as D-Clean schemes.

In a large number of D-Clean examples high speed-up for parallelism was obtained. Theactual amount of parallelism depends on many factors such as: the order of channel creation,the amount of work on one channel, the speed of the data retrieving and data storage in thechannels, the complexity of the computation described in the distributed graph.

Some of the well-known classical skeleton examples were inspected both for semanticalsoundness in D-Clean and for distributed computation coordination, which represents the new-ness of the implemented skeletons.

5

Page 8: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

The main publication is the revised selected lecture notes [25]:

Zsók V., Hernyák Z., and Horváth, Z.: Designing Distributed Computational Skeletons in D-

Clean and D-Box. In: Horváth Z. (ed.): Central European Functional Programming School,CEFP 2005, First Summer School, Budapest, Hungary, July 4-15, 2005, Revised Selected Lec-tures, LNCS Vol. 4164, Springer-Verlag, 2006, pp. 223-256.

Related publications: [35], [22], [24], [23], [5], [26], [27].

Conclusions

In the initial research, the most important task was to get acquainted with new parallel issuesin functional programming. Afterwards, two important methods were applied to obtain parallelcomputation in Clean: changing the evaluation strategies and communicating via Clean-CORBAchannels. As both methods are based on low-level language constructs, further investigationwas needed to obtain language elements with high-level abstraction properties.

The design of the new D-Clean coordination language enabled the development of parallelskeleton algorithms in the built distributed and multilayered system. The introduced D-Clean

language, extension of the Clean lazy pure functional language, uses the D-Box intermediatelanguage for channel based parallel communication of Clean client programs embedded in boxes.The semantics of the D-Clean language was tested in executable way, and measurements wereincluded in numerous papers published.

References

[1] Hernyák Z., Horváth Z., Zsók V.: Design of Language Elements for Dynamic Distributed Compu-tation of Clean Expressions on Clusters, In: Loidl, H-W. (ed.): Proceedings of Fifth Symposiumon Trends in Functional Programming, TFP 2004, München, Germany, November 25-26, 2004,Ludwig-Maximilians Universität, München, Germany, pp. 257–270.

[2] Hernyák Z., Horváth Z., Zsók V.: Clean-CORBA Interface Supporting Pipeline Skeleton, In:Csőke L. et al (eds.): Proceedings of 6th International Conference on Applied Informatics, ICAI2004, Eger, Hungary, January 27-31, 2004, B.V.B. Press, Vol. I., pp. 191–200.

[3] Horváth Z., Csörnyei Z., Lövei L., Zsók V.: Functional Programming Concepts in ComputerScience Education, In: Hudák S., Kollár J. (eds.): Proceedings of the Seventh InternationalScientific Conference on Electronic Computers and Informatics, ECI 2006, September 20-22th2006, Košice-Herlány, 2006, pp. 174–179.

[4] Horváth Z., Hernyák Z., Zsók V.: Coordination Language for Distributed Clean, Acta Cybernet-ica, Vol 17 (2), Institute of Informatics, University of Szeged, Hungary, 2005, pp. 247–271.

[5] Horváth Z., Hernyák Z., Zsók V.: Implementing Distributed Skeletons using D-Clean and D-Box,In: Butterfield, A. (ed.): Proceedings of the 17th IFL 2005, Dublin, Ireland, September 19-21,2005, Trinity College Dublin, pp. 1–16.

6

Page 9: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

[6] Horváth Z., Varga Z., Zsók V.: Clean-CORBA Interface for Parallel Functional Programmingon Clusters, In: Pekka Kilpeläinen, Niina Päivinen (eds.): Proceedings of the Eighth Symposiumon Programming Languages and Software Tools, SPLST’03, Kuopio, Finland, June 17-18, 2003,Report A/2003/1, University of Kuopio, pp. 127–136.

[7] Horváth Z., Zsók V.: CEEPUS Network for Computer Science Education, Keynote talk, In:Bollin, A., Bouchachia, A. (eds.): First Computer Science and Mobility Workshop 2009, Pro-ceedings CSMW’09, Alpen-Adria-Universiät Klagenfurt, Austria, 9-10 April, 2009, pp. 5–9.

[8] Horváth Z., Zsók V.: International Cooperation in Computer Science, Proceedings of Interna-tional Technology, Education and Development Conference, INTED 2007, Valencia, Spain, March7th-9th, 2007, IATED, Valencia, 2007, 8 pages on CD.

[9] Horváth Z., Zsók V., Hernyák Z.: Implementing Pipeline Skeleton in Clean using CORBA Chan-nels, Proceedings of the Workshop on Multiparadigm Programming with Object-Oriented Lan-guages, MPOOL 2004, Workshop #11 at 18th ECOOP 2004, University of Oslo, Oslo, Norway,June 15, 2004, 6 pages.

[10] Horváth Z., Zsók V., Serrarens, P., Plasmeijer, R.: Parallel Elementwise Processable Functionsin Concurrent Clean, Mathematical and Computer Modelling Vol. 38, Issues 7-9, Elsevier, 2003,pp. 865–875.

[11] Králik B., Zsók V., Istenes Z.: Distributed Functional Programming for the Navigation of Robots,In: Pena, R., van Eekelen, M. (eds.): Draft Proceedings of the 12th TFP 2011, Madrid, May 16-18, 2011, Technical Report SIC-07/11, Universidad Complutense de Madrid, Spain, pp. 162–171.

[12] Porkoláb Z., Zsók V.: Teaching multiparadigm programming based on object-oriented experi-ences, Teaching Mathematics and Computer Science, Vol. 5 (1), Institute of Mathematics andInformatics, University of Debrecen, Debrecen, Hungary, 2007, pp. 171–182.

[13] Porkoláb Z., Zsók V.: Essential Knowledge for Multiparadigm Programming, In: Bohanec, M.et al (eds.): Proceedings of the 10th International Multiconference Information Society, IS 2007,Ljubljana, Slovenia, 8-12 October, 2007, Volume A, pp. 279–282.

[14] Porkoláb Z., Zsók V.: Connection between Software Paradigms and Metrics Usage, In: Zajc,B., Trost, A. (eds.): Proceedings of the Sixteenth International Electrotechnical and ComputerScience Conference, ERK 2007, Portorož, Slovenia, 24-26 September, 2007, Slovenska sekcijaIEEE, Volume B, pp. 34–37.

[15] Porkoláb Z., Zsók V.: Teaching Multiparadigm Programming Based on Object-Oriented Pro-gramming, 10th Workshop TLOOC 2006 at ECOOP 2006, Nantes, France, 3rd July, 2006, UmeaUniversity, Sweden, 8 pages. Summary: ECOOP 2006 Workshop Reader, Nantes, France, July3-7, 2006, LNCS 4379, Springer Verlag, 2007, pp. 146–156.

[16] Porkoláb Z., Pataki N., Sipos Á., Zsók V., M. Heričko, A. Živkovič: Application of OO metricsto estimate .NET project software size, In: Kovács E. et al (eds.): Proceedings of 7th ICAI 2007,Eger, Hungary, January 28-31, 2007, B.V.B. Press, Vol. II., pp. 293–299.

[17] Sipos Á., Zsók V.: EClean – An Embedded Functional Language, In: Porkoláb Z. et al. (eds.):Proceedings of the First Workshop on Generative Technologies, WGT 2008, ETAPS 2008, Bu-dapest, Hungary, April 5, 2008, ENTCS Vol. 238, Issue 2, Elsevier, June 2009, pp. 47–58.

[18] Sipos Á., Zsók V.: EClean – An Embedded Functional Language, In: Porkoláb Z. et al (eds.):Workshop on Generative Technologies, WGT 2008, Satellite workshop at ETAPS 2008, Budapest,Hungary, April 5, 2008, pp. 1–12.

7

Page 10: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

[19] Sipos Á, Zsók V., Porkoláb Z.: Meta<Fun> – Towards a Functional-Style Interface for C++Template Metaprograms, In: Frentiu, M. et al. (eds.): Studia Universitatis Babeş-Bolyai, Infor-matica, Vol. LIII, Number 2, Cluj-Napoca, 2008, pp. 55–66.

[20] Sipos Á., Porkoláb Z., Pataki N., Zsók V.: Meta<Fun> – Towards a Functional-Style Interface forC++ Template Metaprograms, In: Chitil, O. (ed.): Proceedings of the 19th IFL 2007, Freiburg,Germany, 27-29 September, 2007, Technical Report No. 12-07 September, 2007, ComputingLaboratory, University of Kent, Canterbury, Kent, pp. 489–502.

[21] Zsók V.: D-Clean Semantics for Generating Distributed Computation Nodes, In: Porkoláb Z.et al. (eds.): Workshop on Generative Technologies, WGT 2010, Satellite workshop at ETAPS2010, Paphos, Cyprus, March 27, 2010, pp. 77–84.

[22] Zsók V., Hernyák Z., Horváth, Z.: Improving the Distributed Elementwise Processing Implemen-tation in D-Clean, In: Horváth Z., Kozma L, Zsók V. (eds.): Proceedings of the 10th Symposiumon Programming Languages and Software Tools SPLST 2007, Dobogókő, Hungary, June 14-16,2007, Eötvös University Press, 2007, pp. 256–264.

[23] Zsók V., Hernyák Z., Horváth Z.: Distributed Computation on Cluster using D-Clean and D-Box, Extended abstract, In: Davis, K., Quintino, T., Striegnitz, J. (eds.): 5th Workshop onPOOSC’06 at 20th ECOOP 2006, Nantes, France, 3rd July, 2006, 3 pages. Summary: ECOOP2006 Workshop Reader, Nantes, France, July 3-7, 2006, Final Reports, LNCS 4379, SpringerVerlag, 2007, pp. 141–145.

[24] Zsók V., Horváth Z., Hernyák Z.: Distributed Elementwise Processing in D-Clean, In: Nilsson,H. (ed.): Seventh Symposium on Trends in Functional Programming, TFP 2006, Nottingham,UK, 19-21 April, 2006, The University of Nottingham, pp. 378–386.

[25] Zsók V., Hernyák Z., and Horváth, Z.: Designing Distributed Computational Skeletons in D-Clean and D-Box. In: Horváth Z. (ed.): Central European Functional Programming School, CEFP2005, First Summer School, Budapest, Hungary, July 4-15, 2005, Revised Selected Lectures,LNCS Vol. 4164, Springer-Verlag, 2006, pp. 223–256.

[26] Zsók V., Hernyák Z., Horváth Z.: Distributed Pattern Design in D-Clean, In: Vene V., MeristeM. (eds.): Proceedings of the Ninth Symposium on Programming Languages and Software Tools,SPLST 2005, Tartu, Estonia, 13-14 August, 2005, Tartu University Press, 2005, pp. 220–234.

[27] Zsók V., Hernyák Z., Horváth Z.: Distributed Pattern Design in D-Clean, Central EuropeanFunctional Programming School, CEFP 2005, ELTE, Budapest, Hungary, July 4-15, 2005,Lecture Notes, 33 pages, http://plc.inf.elte.hu/cefp/cefp2005/download/dclean_dbox_

lecturenotes.pdf.

[28] Zsók V., Horváth Z.: Intensive Programmes in Functional Programming, In: Morazán, M.T.et al. (eds.): The International Workshop on Trends in Functional Programming in Education,TFPIE 2012, St. Andrews, Scotland, June 11, 2012.

[29] Zsók V., Horváth Z.: Experiences and Challenges in International Higher Education, Proceedingsof International Conference of Education, Research and Innovation, ICERI 2008, Madrid, Spain,17th-19th November, 2008, IATED, 2008, 8 pages on cd.

[30] Zsók V., Horváth Z., Varga Z.: Functional Programs on Clusters, In: Striegnitz, J., Davis, K.(eds.): Proceedings of the Workshop POOSC’03 at ECOOP 2003, Darmstadt, Germany, July 22,2003, Technical Report FZJ-ZAM-IB-2003-09, Forschungszentrum Jülich, Germany, July 2003,

8

Page 11: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

pp. 93-100. Summary: ECOOP 2003 Workshop Reader, Darmstadt, Germany, July 21-25, 2003,Final Reports, LNCS 3013, Springer Verlag, 2004, pp. 11–16.

[31] Zsók V., Juhász I. (eds.): Poster Session, In: Frohner Á. (ed.): Object-Oriented Technology,ECOOP 2001 Workshop Reader: Workshops, Panel and Posters, Budapest, Hungary, June 18-22, 2001, Proceedings, LNCS Vol. 2323, Springer-Verlag, 2002, pp. 213–223.

[32] Zsók V., Koopman, P., Plasmeijer, R.: Generic Executable Semantics for D-Clean, In: Porkoláb Z.et al. (eds.): Proceedings of the Third Workshop on Generative Technologies, WGT 2011, ETAPS2011, Saarbrücken, Germany, March 27, 2011, ENTCS Vol. 279, Issue 3, Elsevier, December 2011,pp. 85–95.

[33] Zsók V., Koopman P., Plasmeijer R.: Generic Executable Semantics for D-Clean, In: PorkolábZ. et al (eds.): 3rd Workshop on Generative Technologies, WGT 2011, Satellite workshop atETAPS 2011, Saarbrücken, Germany, March 27, 2011, pp. 1–12.

[34] Zsók V., Koopman, P., Plasmeijer, R.: An Executable Semantics for D-Clean, In: Hage, J.(ed.): Preproceedings of the 22nd Symposium on Implementation and Application of FunctionalLanguages, IFL 2010, Alphen aan den Rijn, September 1-3, 2010, Technical Report UU-CS-2010-020 August, 2010, Utrecht University, The Netherlands, pp. 173–179.

[35] Zsók V., Porkoláb Z.: Rapid Prototyping for Distributed D-Clean using C++ Templates, AnnalesUniversitatis Scientiarum Budapestinensis de Rolando Eötvös Nominatae, Sectio Computatorica,Eötvös Loránd University, Budapest, Hungary, 2012, Vol. 37, pp. 19–46.

[36] Zsók V., Porkoláb Z.: The Distributed D-Clean Model Revisited by Templates, ICNAAM 2011 -SCLIT 2011, Halkidiki, Greece, 19-25 September 2011, In: Theodore E. Simos et al. (eds.): AIPConference Proceedings, American Institute of Physics, September 2011, Vol. 1389, pp. 877–880.

Books (eds.):[37] Zsók V., Horváth Z., Plasmeijer R., (eds.): Central European Functional Programming School,

Fourth Summer School, CEFP 2011, Budapest, Hungary, June 14-24, 2011, Revised SelectedLectures, LNCS Vol. 7241, Springer Verlag, 2012, 533 p.

[38] Page, R., Horváth Z., Zsók V. (eds.): Trends in Functional Programming, TFP 2010, RevisedSelected Papers, LNCS Vol. 6546, Springer Verlag, 2011, 215 p.

[39] Horváth Z., Zsók V., Achten, P., Koopman, P. (eds.): Trends in Functional Programming, Volume10 (ISBN: 978-1-84150-405-6), Intellect Ltd., Bristol, United Kingdom, 2010, 192 p.

[40] Horváth Z., Plasmeijer R., Zsók V. (eds.): Central European Functional Programming School,Third Summer School, CEFP 2009, Komárno, Slovakia, May 24-30, 2009, Revised SelectedLectures, LNCS Vol. 6299, Springer Verlag, 2010, 391 p.

[41] Horváth Z., Plasmeijer R., Soós A., Zsók V. (eds.): Central European Functional ProgrammingSchool, Second Summer School, CEFP 2007, Cluj-Napoca, Romania, June 23-30, 2007, RevisedSelected Lectures, LNCS Vol. 5161, Springer Verlag, 2008, 303 p.

[42] Chitil, O., Horváth Z., Zsók V. (eds.): Implementation and Application of Functional Languages,19th International Symposium, IFL 2007, Freiburg, Germany, September 27-29, 2007, RevisedSelected Papers, LNCS Vol. 5083, Springer Verlag, 2008, 275 p.

[43] Horváth Z., Zsók V., Butterfield A. (eds.): Implementation and Application of Functional Lan-guages, 18th International Symposium, IFL 2006, Budapest, Hungary, September 4-6, 2006,Revised Selected Papers, LNCS Vol. 4449, Springer Verlag, 2007, 272 p.

9

Page 12: Parallel Functional Programming Using D-Clean · the lazy functional programming language Clean is extended by a relatively small number of specific,welldefined D-Clean languageconstructs.

[44] Horváth Z., Zsók V., Achten, P., Koopman, P. (eds.): Tenth Symposium on Trends in FunctionalProgramming, TFP 2009, Komárno, Slovakia, June 2-4, 2009, ELTE Eötvös Kiadó (ISBN 978-963-284-076-5), Budapest, 2009, 327 p.

[45] Horváth Z., Kozma L., Zsók V. (eds.): Proceedings of the 10th Symposium on ProgrammingLanguages and Software Tools, SPLST 2007, Dobogókő, Hungary, June 14-16, 2007, ELTE EötvösKiadó (ISBN: 978-963-463-925-1), Budapest, 2007, 491 p.

[46] Horváth Z., Zsók V. (eds.): Proceedings of the 18th International Symposium on Implementa-tion and Application of Functional Programming Languages, IFL 2006, Budapest, Hungary, 4-6September 2006, ELTE IK TR 2006-S01 (ISBN: 963-463-876-7), Budapest, 2006, 517 p.

[47] Zsók V. (ed.): XXVII. OTDK: Országos Tudományos Diákköri Konferencia Informatika Tu-dományi Szekció, Budapest, 2005. március 21-23., Konferencia-kiadvány, ELTE IK (ISBN: 963-463-742-6), Budapest, 2005, 153 p.

Chapters in books:[48] Zsók V., Tejfel M.: Párhuzamos nyelvi elemek (pp. 500-559); Zsók V., Tejfel M., Horváth Z.:

Párhuzamos kiértékelés és elosztott programok (pp. 625-634), In: Nyékyné Gaizler J. (ed.) et al:Programozási nyelvek (ISBN: 963-9301-47-7), Budapest, Kiskapu Kiadó, 2003.

[49] Csepregi Sz., Zsók V.: Eszközök és nemzetközi programozás, In: Nyékyné Gaizler J. (ed.) etal: Java 2 útikalauz programozóknak 1.3 (ISBN: 963-4634-86-9) Budapest, ELTE TTK HallgatóiAlapítvány, 2001, Vol. I., pp. 134-145.

[50] Zsók V.: A java.awt, java.util, java.text, java.rmi csomagok referenciája, In: Nyékyné GaizlerJ. (ed.) et al: Java 2 referencia 1.3 (ISBN: 963-4634-86-9), Budapest, ELTE TTK HallgatóiAlapítvány, 2001, pp. 5-43, pp. 234-260, pp. 334-368.

[51] Zsók V.: A java.rmi csomag referenciája, In: Nyékyné Gaizler J. (ed.) et al: Java 2 útikalauzprogramozóknak (ISBN: 963-4633-05-6), Budapest, ELTE TTK Hallgatói Alapítvány, 1999, Vol.III., pp. 227-253.

[52] Zsók V.: Típusok és kifejezések (pp. 35-90), Taszkok (pp. 309-332), In: Nyékyné Gaizler J. (ed.)et al: Az Ada95 programozási nyelv, Egyetemi tankönyv, Budapest, ELTE Eötvös Kiadó, 1999.

Publications in Hungarian:[53] Porkoláb Z., Kozsik T., Zsók V.: Új szoftverparadigmák nyelvi támogatása: a jelen oktatása -

a holnap technológiája (Programming Language Support for New Software Paradigms: PresentEducation - Future Technology), In: Pethő A., Herdon M. (szerk.): Informatika a felsőoktatásban2005, Debrecen, 2005. augusztus 24-26., Debreceni Egyetem, Informatikai Kar, 2005, 5 p.

[54] Horváth Z., Csörnyei Z., Lövei L., Zsók V.: Funkcionális programozás témakörei a programtervezőképzésben (Functional Programming in Computer Science Education), In: Pethő A., HerdonM. (szerk.): Informatika a felsőoktatásban 2005, Debrecen, 2005. augusztus 24-26., DebreceniEgyetem, Informatikai Kar, 2005, 7 p.

[55] Zsók V., Horváth Z., Tejfel M.: Párhuzamos funkcionális programozás (Parallel Functional Pro-gramming), In: Arató P., Herdon M. (szerk.): Informatika a felsőoktatásban 2002, Debrecen,2002. augusztus 28-30., Debreceni Egyetem, Informatikai Kar, 2002, pp. 1085–1094.

[56] Hegedűs H., Horváth Z., Zsók V.: Haskell és a Clean nyelv összehasonlító elemzése (Compar-ative Analysis of Haskel and Clean), In: Arató P., Herdon M. (szerk.): Informatika a felsőok-tatásban 2002, Debrecen, 2002. augusztus 28-30., Debreceni Egyetem, Informatikai Kar, 2002,pp. 1075–1084.

10