A limited number of places are still available for the functional programming
section of the upcoming workshop:

 "Integrating Recent Research into Computer Science Undergraduate Curricula:
             Software Engineering, Functional Programming, 
             Neural Networks, and Computational Geometry."  

The workshop will be held on the campus of The Evergreen State College in
Olympia, Washington, from July 7-11, 1997.  The announcment of the workshop 
and registration materials are at 
          http://www.evergreen.edu/user/CISE/ 
Enclosed below are a brief description of the functional programming section
and abstracts of the talks by Chris Okasaki, John Launchbury, and Erik Meijer. 

While the close of registration has officially passed, we are still 
accepting registrations.  The cost to the participant is $150  (overnight 
accommodations, meals, materials, etc) with NSF/CISE supporting the rest of 
the costs.  A stipend of up to $150 is also available.

If you have questions, contact:

Jeanine L. Elliott
Director, Washington Center for Improving the Quality of Undergraduate 
Education
L2211, The Evergreen State College
Olympia, WA 98505
360/866-6000, ext. 6609
360/866-6662 (FAX)
[EMAIL PROTECTED]

----------------------------------------------------------------------------
    Recent Research Results and Undergaduate Curricular Innovations
                         Functional Programming Track

                            July 7-11, 1997

                   http://www.evergreen.edu/user/CISE/

Since a growing number of computer science departments are 
including functional languages such as Scheme, ML, Gofer and 
Hugs in the undergraduate curriculum, it is important that faculty 
who are teaching or would like to teach functional programming be 
familiar with recent developments in this area. In this workshop 
guest lecturers will bring the participants up to date on recent 
research results in the theory and practice of functional 
programming. In addition to attending the invited lectures, the 
participants will also have the opportunity to share their teaching 
experiences and to work together in teams to identify topics that 
could be incorporated into the undergraduate curriculum and to 
develop appropriate course material, such as workshops, labs, 
undergraduate research projects, or bibliographies, that could be 
used to promote the integration of such results.  

Speakers:
Chris Okasaki, Carnegie Mellon University
Title: Teaching Data Structures From a Functional Perspective
Abstract:
Teaching data structures such as red-black trees or binomial queues in
an imperative language can be fairly gruesome because the high-level
ideas are often obscured by masses of intricate pointer manipulations.
In functional languages, on the other hand, these pointer
manipulations take place behind the scenes, leaving both students and
teachers free to concentrate on the high-level ideas.  We will explore
some recently developed functional data structures and consider how
they might be taught in this fashion.  Functional languages are not a
panacea for the instructor, however.  We will also discuss some of the
limitations in this approach to teaching data structures.

John Launchbury, Oregon Graduate Institute
Title: Formalizing Programming Idioms
Abstract: 
Many software components turn out to be instances of fairly general classes
of problems. By studying the whole class it is often possible to develop
formal "idioms" which enable individual instances to be expressed rapidly
and concisely. Functional languages are equipped with sufficient expressive
power to capture such idioms, and to develop reasoning laws about the
combining forms which result. In some cases the choice of combining forms
is strongly guided by what is already known about the application area, but
in other cases the combinators need to be developed from scratch. Here
especially, an awareness of the general theory of monads can provide
significant guidance to the developer. In this full-day tutorial, there
will be laboratory sessions enabling the participants to come to grips with
the whole arena of combinator programming.

Erik Meijer, Utrecht University
Title: Internet Programming in Haskell
Abstract:
Many pages on the web are still static, they have the same appearance every
time they are viewed. It is also possible to write dynamic web pages whose
contents are created by a program, and so can appear different on each visit.
Such programs are called CGI scripts, and are run by the web server that
provides the page. CGI scripts can receive complicatedly encoded input from
the client's web browser, and can return output in a variety of formats 
(plain text, HTML, JPEG etc) which the client then sees.

Any programming language that can read from the standard input, write to
the standard output, and access the environment variables is suited for
writing CGI scripts. Most CGI scripts today are written in languages like C
or PERL. The latter language is popular because it has rich features for
manipulating text (regular expressions). This paper describes a library for
writing CGI scripts in Haskell. Input and output coding of CGI scripts is
handled by a wrapper, a higher-order function that passes the
client's input as an association list of keys and values to its argument
function. Thus the main part of the application, the function inside the
wrapper, need not be at all concerned with coding matters. The decoder
itself is conveniently expressed with parsing combinators. The
application's output can be of a variety of types; Haskell's class system
conveniently allows the wrapper function to be overloaded accordingly. In
particular, HTML can be represented by a simple tree type. A set of
combinators is provided using which complicated HTML pages can be assembled
easily.

Many interactive programs can be modeled as finite state machines. As an
example, we program a calculator as a CGI script.  The client displays an
HTML form with one button for each key on the keypad. Pressing a key
invokes the CGI scripts on the server, which sends back an HTML description
of the new appearance of the calculator. The calculator's state is held in
`hidden fields' of the HTML form. Abstracting from this particular example,
we define combinators to implement finite state machines as CGI scripts.

Our CGI scripts are executed by the Hugs interpreter, which
results in quite small and reasonably efficient programs. The internet
bottleneck is so narrow that the performance of the functional programs is
not an issue.

Biographies: 
John Launchbury, after receiving an award winning PhD from Glasgow
University, continued his research in functional languages first as a
faculty member at Glasgow, and then more recently at Oregon Graduate
Institute. His work has been largely on the semantic underpinnings of
functional languages, and in developing practical consequences from
these.

Erik Meijer is currently a visiting research professor at the Oregon
Graduate Institute, being on leave from Utrecht University in the
Netherlands. He is known for his work on Constructive Algorithmics
(Squiggol), but nowadays he tries to spend more of his time on
practical applications of functional programming.

Chris Okasaki is a researcher at Carnegie Mellon University, known for
his work on functional data structures, especially amortized data
structures based on lazy evaluation.  He is currently developing
libraries of efficient data structures for both Standard ML and
Haskell.

Scholar in Residence:  Chris Haynes, Indianna University.
Christopher T. Haynes is Director of Undergraduate Studies and Associate
Professor in the Computer Science Department of Indiana University at
Bloomington, where he directs the NSF-funded Scheme Educational
Infrastructure project.  Professor Haynes is co-author of the MIT
Press/McGraw Hill text "Essentials of Programming Languages" and chaired
the IEEE Scheme standard working group.  Professor Haynes has authored over
a dozen programming language research papers, with particular interest in
programming language type systems and symbolic computation.  As well as
teaching at Indiana University since 1982, he has taught graduate courses
at MIU in Fairfield, Iowa, IISc in Bangalore, India, and ITESM in
Monterrey, Mexico, and has consulted with industry.  He received a PhD
degree in computer science from the University of Iowa in 1982 and a BA
degree in mathematics from Lehigh University in 1973.



Reply via email to