Grant Proposal -- Summer 2003

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: 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: 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