Sherri Shulman, Computer Science Faculty
Statement, purpose, and scope of proposed activity
I plan to start several software development projects to provide an
experimental testbed for use in the exploration of computer science
topics.
The purpose of these projects is to:
-
Support the introduction of advanced topics to students.
-
Provide a vehicle for students to start initial research activity in
an advanced area.
-
Provide a framework for me to explore possible research topics that can
be pursued in our academic environment at TESC.
These projects cover four areas:
Semantics Laboratory
Programming language semantics is a very abstract area of computer
science that attempts to introduce (and motivate the use of)
mathematical domains to model the meaning of programs.
It is primarily explored as an abstract theoretical topic in computer
science.
A semantics simulator would provide an interpreter for a variety of
lambda calculus derivatives that would support language interpretation
in several different meaning domains. This would support the
investigation of different language features interpreted in a given
model and different models and their impacts on interpretation.
Connectionist Laboratory
Connectionism is an area of computer science that has been used to
develop sophisticated programs that simulate intelligence in limited
domains. This area also has a strong theoretical basis and can be
studied from that perspective. However, the practical use of these
connectionism algorithms is hard to explore in limited time.
A connectionist laboratory can be considered in the same light as a
physical laboratory in the natural sciences: it provides a means for a
researcher to easily explore different software architectural settings
and different domains to collect data for comparisons and for future
study.
Formal Languages Package
The study of formal languages is central to the study of computer science.
Computer programming languages are one kind of formal language
and the algorithms used to analyze the presentation of these
languages (from lexical analysis to parsing) are used in compilers that
translate a programming language into a language understood by a machine.
The purpose of this package is to bridge the distance between the
programming ability of the students and the programming and
design skills required to complete the implementations of
these algorithms. It can also form the basis for exploring language
issues associated with modern language features and advanced architectures.
Artificial Intelligence Package
The AI package would be a collection of standard AI algorithm
implementations in a uniform framework, along with sample domains that
would support experimentation with how these algorithms worked, their
strengths and limitations.
Interdisciplinary Nature
The unifying thread behind these software laboratories is the material
taught in Computability and Cognition. The purpose of these laboratories
is to:
-
Provide a hands-on laboratory for the students to study abstract topics
and experiment with software systems that they cannot themselves
implement.
-
Provide an entry for initial research into connectionist architectures
and domains in programming language semantics.
This can be used both by advanced students and interested faculty
members.
Computer science is a naturally interdisciplinary field in two
fundamental ways.
First, while there are many applications that are primarily driven by
computer science needs, most applications involve other domains.
Connectist algorithms and implementations are used in natural language
understanding, game playing, scene discrimination, picture compression,
and many more.
Successful use of such systems is dependent both on an
understanding of the domain under consideration and an understanding of
the theoretical properties of the algorithms.
Traditional AI algorithms have similarly been used in diverse domains, both
artificial and natural: chemistry experts, chess playing, medical
diagnosis systems, etc.
Second, computer science itself is a mixture of several different
approaches. Individuals come to the field from a variety of
perspectives: engineering, software implementation, theoretical.
Bridging these views is often a challenge.
Providing a software laboratory has several advantages. It allows
students from different perspectives to explore the systems. For
instance, it would allow someone with domain expertise but little
programming ability to work with a connectionist system to explore its
capabilities in that domain. Similarly, a novice programmer could
explore how the connectionist algorithms worked in a tangible
experiment that would complement the theoretical.
In the context of C&C, these laboratories would bridge the different
threads, bringing the theoretical and the implementation views closer
together.
My Professional Agenda and Benefits Expected
The lack of a common group of researchers working on similar topics is a
limitation at TESC. We have difficulty finding the time to produce a
sufficient base of software on which we can build future developments.
There is evidence that these kinds of software laboratories can work
both to the student's advantage and the faculty's.
The example closest to home is some of the material developed by Al
Leisenring over the years for use in C&C. For instance, he has an
implementation of a natural deduction system that allows students to
use an interpreter in which to prepare valid logical arguments. This
system takes an abstract formal language and gives the students a
vehicle in which to experiment with their understanding and become
fluent in producing valid logic proofs.
Similarly, the scientific database lab (Judy Cushing) has been used to
support student directed research, faculty directed research, and as a vehicle
to explore related issues (such as graphics and presentation issues).
At a more research directed level, OGI has been successful in
establishing a language recognition lab, used for the support of entry
level student researchers and faculty research, and the domain specific
language lab, which has been used to explore hardware design languages.
My particular area of interest is the exploration of the semantics lab. I
am interested in establishing a means by which both advanced students and
I can experiment with different modern language features. I am also
interested in the application of semantics techniques to domain specific
languages. From a pedagogic perspective, I want to find a way to make
advanced (and abstract) topics more accessible and meaningful to students
and an entry into student directed research in computer science at TESC.
I anticipate that all 4 software labs will be of specific use in
Computability and Cognition. The first two laboratories (semantics and
connectionism) have the most potential to form the basis of future
research (for myself and advanced students), while the second two
(the formal languages and AI packages) are more for the direct support
of C&C. The students will gain a hands-on test bed in which to explore
abstract concepts; they will have a predefined (and tested) framework in
which to add their own algorithms; they will have a common way to share
their work.
However, all four labs have the potential to serve as a basis for
student directed advanced work, both in the context of C&C and independently.
Implementation Plans
All four of the software laboratories are program design and development
only. They require no equipment beyond what we already have available.
While the art of estimating program development time is imprecise,
I believe that I can make substantial progress in all 4 laboratory
implementations in one summer.
In particular, working full-time for two months I should be able to
-
Complete the Formal Languages Package and the Artificial Intelligence
Package.
-
Complete the Connectionist Laboratory.
-
Make a significant start to the semantics simulator. This is the least
defined of the laboratories and will require some exploration and work
in how to represent different models, how the relationship between the
object language and the model will be maintained, how a user should
interact with the laboratory, how an abstract interpretation should be
presented for any model, and so on.