John Peterson
I am at CCSU on a 1 year appointment. At the moment I am teaching
CS110, CS152, and CS213.
Contact information:
- Email: petersonjoc@ccsu.edu
- Phone: (860) 832 2716
- Office: MS 225 (with the pictures on the door)
- Hours: Monday / Wednesday: 3pm - 5pm, Tuesday / Thursday: 5:00pm - 6:30pm
My publications are found on the Yale
Functional Programming Group home page.
Class Wikis
Research
My field of research is programming language design and
implementation. I was one of the designers of the
Haskell language and I have been
developing "little languages" that deal with specific domains of
interest. Some of these include:
- FVision, a language of visual tracking
- Frob, a functional robotics language
- Yampa, a general framework
for Functional Reactive Programming.
- Haskore, a language of algorithmic music.
- Pan#, a
language of interactive functional images.
I am currently looking for students to work with me in Spring, 2005,
as independent study or perhaps a seminar class. I have a long list
of projects I am interested in and would like to supervise. Many of
these require knowledge of Haskell but you shouldn't worry too much if
you don't know functional programming.
If you are interested in any of the following projects, please come by
my office or drop me an email.
Projects
Algorithmic Music
Haskore is a language of algorithmic music composition embedded in
Haskell. Projects involving Haskore include:
- Haskore lite is an educational version of Haskore that is a bit
easier to use and has new features such as randomized music and better
high level abstractions. We
have been working on a releasable version of this system and it still
needs more features, documentation, better integration with native
sound libraries, and examples.
- We would like to develop a simple Haskore interpreter that allows
us to use a slightly simplified surface syntax, provides more
appropriate error messages, avoids the complexity of a fully
featured programming language like Haskell, and avoids problems with
infinite loops. This is an excellent way to learn about functional
languages and building interpreters. All programming will be done in
Haskell.
- We would like to build a programming environment for Haskore
similar to that of Pan#. This environment would support text editing,
debugging, documentation, and promote understanding of the Haskore
language and how it is executed. This can be programmed in any
language; Haskell (using wxHaskell) or C# are preferred. Java
would be acceptable.
- Using the ideas of Functional
Reactive Programming, we would like to create interactive music. That
is, how can we
specify compositions that interact in real time? This project will
require a rather adventerous student, willing to deal with low level
issues like the hardware interface between Haskore and some external
input device (keyboard, for example) and the high level design of an
interactive musical language.
Functional Graphics
- The Pan# viewer is a large application written in C#. There are
a number of improvements that we would like to implement, including a
better editing environment, a better debugging environment, and some
more GUI alternatives. If you are interested in learning how to write
large C# applications this is a good project for you.
- We would like to extend the Pan# language to include data
structures such as lists and trees. This involves working with the
parser, interpreter, code generator, and runtime support. Most of the
required tasks are well defined. All programming would be in Haskell.
- There are some very interesting compilation issues in Pan#. At
present, the compiler is not able to handle indefinite loops and runs
very slowly in some cases due to agressive inlining. We would like to
improve the system by speeding up the compiler and incorporating
looping in the optimizer. This involves advanced program
transformation and will be a collaboration with Ooge de Moor at Oxford
University. This project is ideal for someone interested in
optimizing compilers.
- We want to develop more examples and libraries for Pan#. This
project is very open ended: any interesting programs that
demonstrate the capabilities of Pan# are welcome. A background in
Mathematics
would be very useful (math majors encouraged!). This includes working
with Haskore to produce animations that are synchronized to a musical
composition.
User Interfaces
I am part of a research project which deals with a purely functional
style of GUI programming. We have integrated FRP (Functional Reactive
Programming) with a Haskell-based GUI package, wxHaskell. While most
of the theoretical issues have been worked out, there is a lot of work
needed to bring a significant portion of the wxHaskell functionality
into the FRP setting. This project will require a deep understanding
of Haskell and FRP and should lead to publishable results. If you are
interested in going on to graduate school and want to get a taste for
real research and learn a lot about programming languages and
semantics this would be an excellent project for you.
Education
I have been using some of these languages in an educational context to
teach basic principles of computer science and mathematics. The
following projects all have a significant educational component and
would be good for students that are more interested in using languages
than implementing them. I have four potential projects in this area:
- Programming concepts illustrated with Haskore. Develop
educational materials and activities to allow high school level
students to learn basic computational concepts using Haskore as a
vehicle. This involves writing, programming in Haskore, and
(potentially), evaluation using real high school students.
- Music education using Haskore. This is similar to the previous
project except that the educational goal is to spark a student
interest in music as well as computing. This will use Haskore as a
performance medium in the development of basic musical skills. You
should have some knowledge of music or music education.
- Mathematics education using Pan#. This would extend previous
work to produce materials that will allow students in Algebra 2 and
beyond to gain insight into basic mathematics. The emphasis is on
visualization, creativity, and discovery-based learning. This could
lead to publishable results. This is a good project for someone
interested in secondary math education.
- Educational Wikis. This project would place existing languages
such as Pan# and Haskore (and maybe HTML / XSLT) into a wiki-based
learning environment. This project combines language implementation
skills with web technology. This will involve modifying an existing
Wiki engine to allow simple programming in the wiki language.